私は Cassandra の初心者で、1 週間前に Cassandra の学習を始めたばかりです。最初は NoSQL だと読んでいましたが、CQL を使い始めたとき、Cassandra は NoSQL なのか SQL DB なのか疑問に思い始めました。
CQLが多かれ少なかれSQLに似ている理由を誰か説明できますか?
CQL は SQL のように宣言型であり、言語のクエリ コンポーネント (条件を選択する) の非常に基本的な構造は同じです。しかし、従来の SQL と同じ方法で使用してはならないほどの違いがあります。
明白な項目: 1. 結合またはサブクエリはありません。2.取引禁止
それほど明白ではありませんが、同様に重要な注意事項:
where dateField > TO_TIMESTAMP('2013-01-01','YYYY-MM-DD')
機能しません。 long int -- 他のほとんどの DB エンジンでは許可されていません。最後に、タイムゾーン (GMT オフセットとして) は、タイムゾーンのない長いミリ秒形式と文字列形式の両方で目に見えないようにキャプチャされます。これは、ローカル時間と GMT オフセットを意図的に混同しないシステムに混乱を招く可能性があります。update table set field = value;
。CQL は主キーを含む where 句を要求します。select * from www where (str1 = 'foo2') and (dat1 = 12312442);
一般に、Cassandra は、非常に高レベルで非常にパフォーマンスの高い少数のクエリを適用して、データのサブセットを引き出してアプリケーション レイヤーで操作できる、大規模で回復力のあるデータのパーマストアとして使用するのが最適です。そのサブセットは 100 万行になる可能性があります。CQL と Cassandra モデルは、ケース、集計などが埋め込まれた 2 ページの長さの SELECT ステートメント用に設計されていません。
keyspace
、、column family
のスキーマを取得するCQLDESCRIBEcluster
CQLは、SQLで知っていたもののようなものをサポートしていませんjoins
group by
triggers
cursors
procedure
transactions
stored procedures
CQL3.0サポートORDER BY
CQLはすべてのDMLおよびDDL機能をサポートします
CQLサポートBATCH
BATCH is not an analogue for SQL ACID transactions.
上記のDOCだけが最良のリファレンスです:)
すべての意図と目的において、CQLはSQL であるため、厳密な意味で CassandraはSQL データベースです。ただし、ほとんどの人は、SQL を通常適用されるリレーショナル データベースと密接に関連付けています。この (誤った) 解釈では、Cassandra はリレーショナルではなく、ACIDプロパティをサポートしていないため、「SQL データベース」と見なすべきではありません。