我对Cassandra很新,一周前就开始学习Cassandra了。 我第一次看到它是NoSQL,但是当我开始使用CQL时, 我开始怀疑Cassandra是NoSQL还是SQL DB?
有人可以解释为什么CQL或多或少像SQL?
答案 0 :(得分:35)
CQL是像SQL一样的声明式,并且语言的查询组件的基本结构(选择条件中的条件)是相同的。但是有足够的差异,不应该以与传统SQL相同的方式使用它。
明显的项目:1。没有连接或子查询。 2.没有交易
不太明显但同样重要的是要注意:
where dateField > TO_TIMESTAMP('2013-01-01','YYYY-MM-DD')
此外,CQL不允许将日期的字符串插入精确到毫秒(仅限秒) - 但它允许输入millis作为一个long int,因为大多数其他数据库引擎都不允许。最后,对于没有时区的长毫秒和字符串格式,无形地捕获时区(作为GMT偏移)。这可能会导致那些故意不会混淆当地时间+ GMT偏移的系统产生混淆。update table set field = value;
CQL需要带有主键的where子句。select * from www where (str1 = 'foo2') and (dat1 = 12312442);
一般情况下,最好使用Cassandra作为一个大的,有弹性的数据永久存储库,可以应用少量非常高级别,非常高性能的查询来拖出要在应用程序中使用的数据子集层。该子集可能是100万行,是的。 CQL和Cassandra模型不是为具有嵌入式案例,聚合等的2页长SELECT语句而设计的。
答案 1 :(得分:5)
CQL DESCRIBE获取keyspace
,column family
,cluster
CQL不支持我在SQL中知道的一些内容,例如joins
group by
triggers
cursors
procedure
transactions
{{1} }
CQL3.0支持ORDER BY
CQL支持所有DML和DDL功能
CQL支持stored procedures
BATCH
上面提到的DOC是最好的参考:)
答案 2 :(得分:4)
对于所有意图和目的,CQL 是 SQL,因此从严格意义上说,Cassandra 是 SQL数据库。但是,大多数人都将SQL与通常应用的relational databases密切相关联。根据这种(错误的)解释,Cassandra不应被视为“SQL数据库”,因为它不是关系型的,并且不支持ACID属性。