2016-04-09 5 views
2

なぜ、Cassandraがスキップされた列にNULL値を挿入しているのか理解してもらえますか?列をスキップするのではないですか?データを挿入しているときに列全体をスキップすると、値を挿入してはいけません(nullでない場合もあります)。私はちょっと混乱しています。なぜなら、次のチュートリアルでは、データが列キー(列ファミリの図)に格納されているため、列がnullの場合はtrueです。Cassandraはスキップされた列にnull値を挿入しています

また、私がカッサンドラ列の家族について学んだ全体の概念は間違っていますか?

http://www.tutorialspoint.com/cassandra/cassandra_data_model.htm

は、ここで私は、列をスキップしています、ここでCQLスクリプト

create keyspace test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}; 
create table users (firstname text,lastname text,age int, gender ascii, primary key(firstname)) 
insert into users(firstname,age,gender,lastname) values("Michael",30,"male","smith"); 

ですが、私は選択クエリを実行すると、その列にnullを示しています。なぜカッサンドラがその列にヌルを埋めているのですか? http://academy.datastax.com

insert into users(firstname,age,gender) values('Jane',23,'female'); 

select * from users; 

答えて

1
  1. は、なぜあなたはカサンドラのドキュメントと学習の最も包括的なソースに行きませんか?そしてそれは無料です。 ( - ... 2012 SuperColumnは、2011年以降推奨されていません)。ここ

  2. 、私は列を飛ばしていますが、私は選択クエリを実行すると、それが示したコンテンツとtutorialspoint.comは非常に古いと年代以降更新されませんその列はnullです。なぜカッサンドラがその列にヌルを埋めているのですか? CQLで

、ヌル==値は、列カサンドラはヌル(=が返されますため、あなたが任意の値を挿入していなかったのでまたは値は

を削除された存在ではありません=この場合は存在しません)

+1

C *は書き込み前読み出しを行わないため、C *は常に欠損値が削除されたとみなす必要がありますので、書かれたことがない?言い換えれば、CQLを使用しているときに、存在していない状態が仮想的な状態ではありませんか? – Ralf

+0

状態*存在しない*と*削除*は、**読み出し時間**(CQL SELECT)で確実にわかります。 INSERTの場合、列を指定しないと、Cassandraは何も行いません(墓碑はありません)。あなたの挿入物** null ** Cassandraが列 – doanduyhai

+0

のための墓石を作成するならば、そうです。私は準備されたステートメントとNULLの問題に巻き込まれました。 – Ralf

関連する問題