我正在尝试熟悉Apache Cassandra,用于特定的PoC工作。在浏览了网上的各种文章后,尝试了各种图书馆/客户,我脑子里浮现出一个特别的问题。
我们想到卡桑德拉的最初原因是因为我们想要一个真正的'分布式数据存储。从我对“发行”的理解来看,它最终可以归结为某种“关键价值”'如果我能以超级简洁的方式表达自己,那就是某种一致的哈希'
因此,像卡桑德拉这样的超值商店非常适合。但是,当我尝试深入研究文章以理解Cassandra中的数据建模时,几乎所有文章都使用CQL来解释/举例说明。此外,官方公告似乎是CQL应该是" de jure"学习卡桑德拉的方法。为什么这样的推动符合SQL?
我不需要关系模型,这就是我来到Cassandra的原因。我很欣赏它的基本概念,比如分区键/集群列等,我想了解它是如何在CQL的底层实现的。
问Cassandra的专家,我实际上是不适合作为Cassandra的用户吗?我是否应该忘记密钥值,并尝试在我的用例中使用CQL(如果可能)?
答案 0 :(得分:2)
CQL不仅仅是一个" ,即使最初是为了鼓励人们从SQL世界迁移而创建的。 CQL之前的世界一团糟,数十个以不同方式编写的客户都使用Thrift协议 - 但与SQL世界不同,Cassandra每天都在改进,每个版本都带来了新功能 - 而且这些改进中的每一个都需要一个新的"客户端版本",能够处理生成的新类型的结果(例如考虑计数器或集合)或新语法以使用新功能。
我很高兴我有可能投入生产,超过3年,与Thrift客户(Pelops) - 这帮助我理解了很多cassandra世界,数据结构等等 - 但现在我永远不会回到这样的客户端(即使它真的很棒!)。
一开始Cassandra完全不同,特别是
"的方案较少的强>"这意味着CF的每一行都可以包含不同数量的列,并且没有必须声明这些列的位置。这使许多项目陷入灾难,可以在"运行时"添加新列。导致你不知道在桌子上能找到什么的情况。
"的超列强>"已弃用的数据结构替换为宽行
既然数据模型是稳定的,CQL语法带来了更多的可读性,现在您可以迁移到任何您不太熟悉应用程序与数据库通信的可能性的项目,这要归功于独特的语法 - 更多 - 每个新的Cassandra版本都紧跟着新版本的客户端。
CQL不是"子集"像许多人一样写SQL:在某种程度上它是一个"超集"因为它能够处理扩展基本语言的不同数据结构。
我的回答是:以键值方式思考,但只使用CQL
HTH, 卡罗