web-dev-qa-db-ja.com

Cassandra:テキストとvarchar

Cassandraの2つのCQLデータ型textvarcharの違いを知っている人はいますか? Cassandraのドキュメントでは、両方のタイプを「UTF-8エンコードされた文字列」と説明していますが、それ以上のことはありません。

56
darcyq

textvarcharの単なるエイリアスです!

ドキュメント:

[〜#〜] edit [〜#〜]
こちらが C * 1.2 docs へのリンクです。テキストとvarchar情報は同じですが、このドキュメントにはいくつかの追加のデータ型が含まれています。

66
Lyuben Todorov

おそらくあなたはCQLストレージタイプを意味しましたが、そうでない場合は私の答えを無視してください。

CQLには、cassandraの内部から遠ざかろうとする傾向が継続しています。それが良いことか悪いことかは、解釈の余地があります。しかし、関連するのは、CQL開発者の最新バージョンでは、cassandraの内部に詳しくない人にとってより馴染みのある構文を考案しようとしていることです。

このSOの質問に目を通すと、状況の素敵な説明が得られます。 Cassandra Datastax APIの動作中(新しいバイナリプロトコルを使用)

最近のCQLバージョンでは、cassandraとは異質ですが、DBAには非常によく知られているエイリアスがいくつか現れ始めています。たとえば、cassandra= ColumnFamilyのネイティブはTableでエイリアス化されており、テキストは単なるvarcharのエイリアスであり、その逆も同様です。ありません。

したがって、結論として、varcharとtextは同じ意味で使用できます。

9
Nikola Yovchev

Cassandraを始めたとき、これも私を投げました。

TextとvarcharはどちらもUTF8エンコードされた文字列であり、互いに同義語です。つまり、まったく同じものです。

MS SQLのようなリレーショナル世界から来た場合の補足的な補足として、おそらくこれらのタイプ(特にTEXT)をエンティティのプライマリフィールドとして使用することをためらうでしょう。 TEXTは、通常、第3正規形リレーショナルマインドの主キーを叫ばないテキストコンテンツの大きな塊に特に関連付けられています。ただし、すべてのCassandra=タイプは基本的にディスク上の16進バイト配列として格納されているため、それらを主キーとして使用する場合、実際に大きなパフォーマンスはありません。

3

Cassandra CQLのデータ型textvarcharは相互の同義語/別名です。

  1. Varcharに関連付けられたデータ型はblob(blobの最大理論サイズは2 GB
  2. textに関連付けられているデータ型はVarcharです(textを使用している場合でも、Cassandraは内部的にVarcharとして扱います)
  3. Cassandraは16進定数でデータを保存するため、blobタイプの関連付けはパフォーマンスの問題を引き起こしません。
  4. Cassandra= 右座標主キー(パーティションキー、クラスタリング列)を使用してクエリを実行]により、読み込みが高速になります。テーブル enter image description hereenter image description here
1
Putti