2016-07-08 14 views
2

Cassandraは内部的にnull値をどのように保存しますか?すべてのストレージスペースを占有していますか?私は "text1"、 "text2"、 "number1"、 "number2"などのような名前を持つように、さまざまな種類のデータを表現するために多くの列(100)を持つテーブルを使用するアプリケーションを作成しています特定のデータ型の値を表す列をマップする外部JSONスキーマがあります。したがって、特定のデータ型では、多くの列にNULL値がある可能性があり、ヌル値によって占有されるストレージ領域(存在する場合)に関する具体的な内容を見つけることができませんでした。Cassandraはnull値をどのように保存しますか?

答えて

2

実際に列名と値nullを指定しない限り、スペースは消費されません。例えば。

row1 col1 col4 
    val1 val4 

row2 col1 col2 col4 
    val1 val2 val4 

row3 col3 col4 
    val3 val4 
+0

Gotcha、thanks!だから、それを完全に放置することが、道のりです。私がそれを指定しても、ヌル値で指定すると、それは "Tombstone"になるので、いくらか小さなスペースを占有しますか? – cloudwalker

+0

墓石についてはあまり確かではありませんが、通常は 'null'は0を指すポインタであり、ポインタはまだ空白をとります。別の注記では、私はあなたのスキーマについてJSONファイルで慎重に考えています。そのようなアプローチは標準ではありません。また、あなたの質問を前もって考えてみてください。クエスチョンは通常カッサンドラでは変更が容易ではありません。 – oleksii

+1

列にNULL値を挿入すると削除マークが作成されるため、すべてのコストをNULL列に挿入しないでください。 C * 2.2はこれを回避するために 'unset'を導入しています。あなたのドライバに応じて、未設定を使用する方法があります。通常、バインドマーカー( '?')がクエリにあり、そこに何もバインドしていない場合、2.2以上ではtombstoneを挿入しません:https:// docs.datastax.com/en/developer/nodejs-driver/2.2/nodejs-driver/reference/nullUnsetValues.html –

関連する問題