Lindorm SQL prend en charge 14 types de données pour les définitions de table. Cette rubrique répertorie chaque type avec sa taille de stockage, son mappage Java et sa compatibilité avec les moteurs et les index Lindorm.
Moteurs concernés
Les types de données décrits ici s'appliquent à LindormTable, LindormTSDB et au moteur de stockage columnaire.
Types de données pris en charge
Booléen
| Type de données | Type Java | Taille | Description |
|---|---|---|---|
| BOOLEAN | java.lang.Boolean | 1 octet | Stocke true ou false. |
Types entiers
Tous les types entiers stockent des valeurs numériques exactes. La plage de valeurs dépend de la longueur de la valeur et du fait que les valeurs soient signées ou non.
| Type de données | Type Java | Taille |
|---|---|---|
| TINYINT | java.lang.Byte | 1 octet |
| SMALLINT | java.lang.Short | 2 octets |
| INTEGER | java.lang.Integer | 4 octets |
| BIGINT | java.lang.Long | 8 octets |
Types à virgule flottante
FLOAT et DOUBLE stockent des valeurs numériques approximatives. Pour les données financières, telles que les montants de paiement, utilisez DECIMAL.
| Type de données | Type Java | Taille | Description |
|---|---|---|---|
| FLOAT | java.lang.Float | 4 octets | Stocke des valeurs numériques approximatives. La plage de valeurs et la précision dépendent de la longueur de la valeur, des paramètres precision et scale, ainsi que du caractère signé ou non des valeurs. |
| DOUBLE | java.lang.Double | 8 octets | Stocke des valeurs numériques approximatives. La plage de valeurs et la précision dépendent de la longueur de la valeur, des paramètres precision et scale, ainsi que du caractère signé ou non des valeurs. Toutes les valeurs DOUBLE dans les instructions SQL doivent être exprimées en notation scientifique. |
Type numérique exact
| Type de données | Type Java | Taille | Description |
|---|---|---|---|
| DECIMAL(precision, scale) | java.lang.BigDecimal | Variable | Stocke des valeurs décimales exactes. Le nombre d'octets augmente avec la précision. Utilisez DECIMAL pour les données haute précision, telles que les montants de paiement. Utilisez FLOAT ou DOUBLE pour les données où les valeurs approximatives sont acceptables, comme les données de surveillance. |
Paramètres :
precision: Nombre total de chiffres. Valeurs valides : 1–38.scale: Nombre de décimales. Valeurs valides : de 0 à la valeur deprecision.
Types chaîne
| Type de données | Type Java | Description |
|---|---|---|
| VARCHAR | java.lang.String | Chaîne de longueur variable. Les caractères chinois sont pris en charge. |
| CHAR(N) | java.lang.String | Chaîne de longueur fixe de N caractères. Les caractères chinois sont pris en charge. |
Types binaires
| Type de données | Type Java | Description |
|---|---|---|
| BINARY(N) | byte[] | Valeur binaire de longueur fixe de N octets. Si l'entrée est plus courte que N octets, le système ajoute des zéros de remplissage à la fin. Si l'entrée dépasse N octets, le système tronque les octets supplémentaires. |
| VARBINARY | byte[] | Valeur binaire de longueur variable. Si elle est utilisée comme colonne de clé primaire, elle doit être la dernière colonne de clé primaire. |
Types date et heure
| Type de données | Type Java | Plage | Description |
|---|---|---|---|
| DATE | java.sql.Types#DATE | — | Stocke uniquement des valeurs de date ; l'heure est ignorée. Les valeurs DATE sont sujettes à des erreurs lors de la conversion de fuseau horaire, car la date stockée est interprétée par rapport au fuseau horaire de la connexion. Évitez ce type lorsque la précision du fuseau horaire est importante. Consultez les Informations contextuelles. |
| TIME | java.sql.Types#TIME | — | Stocke des valeurs horaires. Consultez les Informations contextuelles. |
| TIMESTAMP | java.sql.Types#TIMESTAMP | Jusqu'à 9999-12-31 23:59:59 dans Lindorm (jusqu'à 2038-01-19 03:14:07 dans MySQL) |
Stocke des valeurs d'horodatage. Consultez les Informations contextuelles. |
La valeur TIMESTAMP maximale diffère entre MySQL et Lindorm. MySQL est limité à 2038-01-19 03:14:07, tandis que Lindorm prend en charge les valeurs jusqu'à 9999-12-31 23:59:59.
Compatibilité des moteurs
Le tableau suivant indique les types de données pris en charge par chaque moteur.
〇 = pris en charge ; N = non pris en charge.
| Type de données | LindormTable | LindormTSDB | Moteur de stockage columnaire |
|---|---|---|---|
| BOOLEAN | 〇 | 〇 | 〇 |
| TINYINT | 〇 | N | 〇 |
| SMALLINT | 〇 | N | 〇 |
| INTEGER | 〇 | N | 〇 |
| BIGINT | 〇 | 〇 | 〇 |
| FLOAT | 〇 | N | 〇 |
| DOUBLE | 〇 | 〇 | 〇 |
| DECIMAL(precision, scale) | 〇 | N | 〇 |
| VARCHAR | 〇 | 〇 | 〇 |
| CHAR(N) | 〇 | 〇 | 〇 |
| BINARY(N) | 〇 | N | 〇 |
| VARBINARY | 〇 | N | 〇 |
| DATE | 〇 | N | 〇 |
| TIME | 〇 | N | N |
| TIMESTAMP | 〇 | 〇 | 〇 |
Compatibilité des index
Pour accélérer les requêtes sur les données brutes dans LindormTable, créez des index secondaires pour les recherches ponctuelles, des index de recherche pour les requêtes en texte intégral et multidimensionnelles, ou des index columnaires pour les charges de travail analytiques. Le tableau suivant indique les types de données pris en charge par chaque type d'index.
〇 = pris en charge ; N = non pris en charge.
| Type de données | Index secondaire | Index de recherche | Index columnaire |
|---|---|---|---|
| BOOLEAN | 〇 | 〇 | 〇 |
| TINYINT | 〇 | 〇 | 〇 |
| SMALLINT | 〇 | 〇 | 〇 |
| INTEGER | 〇 | 〇 | 〇 |
| BIGINT | 〇 | 〇 | 〇 |
| FLOAT | 〇 | 〇 | 〇 |
| DOUBLE | 〇 | 〇 | 〇 |
| DECIMAL(precision, scale) | 〇 | N | 〇 |
| VARCHAR | 〇 | 〇 | 〇 |
| CHAR(N) | 〇 | 〇 | 〇 |
| BINARY(N) | 〇 | 〇 | 〇 |
| VARBINARY | 〇 | 〇 | 〇 |
| DATE | 〇 | N | 〇 |
| TIME | 〇 | N | N |
| TIMESTAMP | 〇 | 〇 (nécessite LindormTable 2.6.5 ou version ultérieure) | 〇 |