web-dev-qa-db-fra.com

Cassandra: texte vs varchar

Quelqu'un connaît-il la différence entre les deux types de données CQL text et varchar dans Cassandra? La documentation Cassandra décrit les deux types comme "chaîne codée UTF-8" et rien de plus.

56
darcyq

text n'est qu'un alias pour varchar!

La documentation:

[~ # ~] modifier [~ # ~]
Voici le lien vers les documents C * 1.2 . Les informations text vs varchar sont toujours les mêmes, mais ce document contient des types de données supplémentaires.

66
Lyuben Todorov

Vous vouliez probablement dire que les types de stockage CQL, sinon, ne tenez pas compte de ma réponse.

Dans le CQL, il y a une tendance constante à essayer de prendre ses distances avec les éléments internes de la cassandre. Que ce soit une bonne ou une mauvaise chose, est sujet à interprétation. Ce qui est pertinent, cependant, c'est que dans les dernières versions de CQL, les développeurs ont essayé de trouver une syntaxe plus familière aux personnes qui ne sont pas très en profondeur dans les internes de cassandra.

Si vous deviez jeter un œil à cette question SO, vous obtiendrez une belle illustration de la situation: Création d'une famille de colonnes ou d'une table dans Cassandra = tout en travaillant l'API Datastax (qui utilise le nouveau protocole binaire)

Dans les versions CQL récentes, certains alias, étrangers à cassandra, mais très bien connus des DBA ont commencé à apparaître. Par exemple, le natif de cassandra ColumnFamily a été aliasé avec Table, et le texte n'est qu'un alias pour varchar et vice versa. Encore une fois, c'est une question d'opinion si c'est une bonne chose ou ne pas.

Donc, en conclusion, vous pouvez utiliser varchar et text de manière interchangeable.

9
Nikola Yovchev

Cela m'a aussi jeté quand j'ai commencé avec Cassandra.

Le texte et varchar sont des chaînes codées UTF8 et sont synonymes l'un pour l'autre, c'est-à-dire qu'ils sont exactement la même chose.

En complément, si l'on vient d'un monde relationnel comme MS SQL, on hésiterait peut-être aussi à utiliser ces types (en particulier TEXT) comme champ principal pour une entité. Le TEXTE est surtout généralement associé à de grosses taches de contenu texte qui ne crient pas la clé primaire à celles de la 3ème forme relationnelle de l'esprit normal. Mais étant donné que tous les types Cassandra sont essentiellement stockés sous forme de tableaux d'octets hexadécimaux sur le disque, il n'y a pas de réelle performance significative lorsque vous les utilisez comme clé primaire.

3

Les types de données Cassandra CQL text et varchar sont des synons/alias l'un pour l'autre .

  1. Le type de données associé à Varchar est blob (La taille théorique maximale pour un blob est 2 Go )
  2. Le type de données associé au texte est Varchar (ce qui signifie que même vous avez utilisé le texte mais Cassandra traite en interne comme Varchar )
  3. l'association de type d'objet blob ne créera pas de problèmes de performances car Cassandra stocke les données en nombre hexadécimal constant.
  4. Les lectures seront plus rapides grâce à Cassandra interroge les bonnes coordonnées en utilisant la clé primaire (clé de partition, colonne de clustering) selon la façon dont nous concevons notre table. enter image description hereenter image description here
1
Putti