我正在尝试熟悉 Apache Cassandra,以完成特定的 PoC 工作。在浏览了网上的各种文章,尝试了各种可用的库/客户端之后,我的脑海中突然出现了一个特定的问题。
我们想到 Cassandra 的最初原因是因为我们想要一个“真正的”分布式数据存储。根据我对“分布”的理解,如果我能够以超级简洁的方式表达自己的话,它最终归结为某种“键值”和某种“一致哈希”!
因此像 Cassandra 这样的键值存储是完美的选择。然而,当我尝试深入了解 Cassandra 中的数据建模的文章时,几乎所有文章都使用 CQL 进行解释/举例。此外,官方声明似乎是 CQL 应该是学习 Cassandra 的“法律上”方式。为什么要如此推动与 SQL 保持一致?
我不需要关系模型,这就是我选择 Cassandra 的原因。我很欣赏它的基本概念,例如分区键/集群列等,并且我想了解它是如何在 CQL 的底层实现的。
询问 Cassandra 专家,我是否真的不适合 Cassandra 用户?我真的应该忘记键值并尝试在我的用例中使用 CQL(如果可能的话)吗?
CQL不仅仅是一颗“糖”,尽管最初创建是为了鼓励人们从 SQL 世界迁移。 CQL 之前的世界是一团糟,数十个客户端以不同的方式编写,全部使用 Thrift 协议——但与 SQL 世界不同的是,Cassandra 每天都在改进,在每个版本中带来新功能——而且往往每一项改进都需要一个新的“客户端版本”,能够处理生成的新类型结果(例如考虑计数器或集合)或使用新功能的新语法。
我很高兴我有机会与 Thrift 客户端(Pelops)一起投入生产超过 3 年——这帮助我了解了很多 cassandra 世界、数据结构等——但现在我永远不会回到这样的客户(尽管它真的很棒!)。
一开始 Cassandra 完全不同,尤其是/曾经
既然数据模型是稳定的,CQL 语法带来了更多的可读性,您现在可以迁移到任何您不太熟悉的项目,并且由于独特的语法,您可以了解应用程序如何与数据库通信 - 更多 - 每个新的Cassandra 发布后立即发布了新版本的客户端。
CQL 并不是 SQL 的“子集”,正如许多人所写的那样:在某种程度上,它是一个“超集”,因为它能够处理扩展基本语言的不同数据结构。
我的回答是:以键值方式思考但仅使用 CQL
哈特哈,
卡洛
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)