Cassandraの2つのCQLデータ型text
とvarchar
の違いを知っている人はいますか? Cassandraのドキュメントでは、両方のタイプを「UTF-8エンコードされた文字列」と説明していますが、それ以上のことはありません。
text
はvarchar
の単なるエイリアスです!
ドキュメント:
[〜#〜] edit [〜#〜]
こちらが C * 1.2 docs へのリンクです。テキストとvarchar情報は同じですが、このドキュメントにはいくつかの追加のデータ型が含まれています。
おそらくあなたはCQLストレージタイプを意味しましたが、そうでない場合は私の答えを無視してください。
CQLには、cassandraの内部から遠ざかろうとする傾向が継続しています。それが良いことか悪いことかは、解釈の余地があります。しかし、関連するのは、CQL開発者の最新バージョンでは、cassandraの内部に詳しくない人にとってより馴染みのある構文を考案しようとしていることです。
このSOの質問に目を通すと、状況の素敵な説明が得られます。 Cassandra Datastax APIの動作中(新しいバイナリプロトコルを使用)
最近のCQLバージョンでは、cassandraとは異質ですが、DBAには非常によく知られているエイリアスがいくつか現れ始めています。たとえば、cassandra= ColumnFamilyのネイティブはTableでエイリアス化されており、テキストは単なるvarcharのエイリアスであり、その逆も同様です。ありません。
したがって、結論として、varcharとtextは同じ意味で使用できます。
Cassandraを始めたとき、これも私を投げました。
TextとvarcharはどちらもUTF8エンコードされた文字列であり、互いに同義語です。つまり、まったく同じものです。
MS SQLのようなリレーショナル世界から来た場合の補足的な補足として、おそらくこれらのタイプ(特にTEXT)をエンティティのプライマリフィールドとして使用することをためらうでしょう。 TEXTは、通常、第3正規形リレーショナルマインドの主キーを叫ばないテキストコンテンツの大きな塊に特に関連付けられています。ただし、すべてのCassandra=タイプは基本的にディスク上の16進バイト配列として格納されているため、それらを主キーとして使用する場合、実際に大きなパフォーマンスはありません。