10

最初我开始学习 Cassandra,因为动态列引起了我的注意。随着我开始学习更多,我了解到复合主键比动态列更受欢迎,并且 Cassandra 正在转向基于模式(模式是可选的,不是强制性的,但建议使用)。在 cql3 中,这是强制性的,我读到 cql3 是 cassandra 中新应用程序的最佳方法。

这是我面临一个有趣问题的地方。我正在阅读一张特定的幻灯片(Mysql vs Casssandra)-http://lanyrd.com/2012/austin-mysql-meetup-january/spdrx/ 跳转到第 31 张幻灯片),其中讨论了欺诈检测用例。

“在 FraudDetection 中,为了计算风险,通常需要知道有关帐户曾经使用过的所有电子邮件、目的地、来源、设备、位置、电话号码等。”

解释了我们如何在关系世界中维护电子邮件、目的地、来源等的单个表,以及在 cassandra 世界中使用动态列键和值是多么容易。(31-34 张幻灯片)。

既然动态列的键和值都被劝阻了,我们该如何解决这个问题呢?我们是否应该为每个电子邮件、目的地等维护单独的列族?那么它与关系世界有什么不同呢?仅与可扩展性有关吗?我们还能继续使用无模式方法吗?这是“架构是可选的和推荐的,但不是强制性的”的黄金法则吗?

谢谢

4

3 回答 3

8

很抱歉在这里造成混乱。事实证明,我没有正确理解基本概念。这是答案

动态列是 Cassandra 的核心。它们仍然受到支持并且仍然是核心 :) 只是在节俭中您直接执行,而在 CQL 中您以不同的方式执行(通过模式方式)。但是你仍然这样做:) - 阅读这个 - http://www.datastax.com/dev/blog/thrift-to-cql3

关于 Cassandra 如何优于 Mysql - 阅读此http://lanyrd.com/2012/austin-mysql-meetup-january/spdrx/(16-24张幻灯片)

谢谢 :)

于 2013-03-16T19:58:03.827 回答
2

如果您使用 Thrift API 而不是 CQL,您仍然可以使用无模式方法。作为一名长期使用 Cassandra 的用户,我还发现推动预先定义模式的做法值得商榷。但幸运的是,底层存储机制是相同的,并且我所知道的所有客户端都支持使用基于 Thrift 的调用。

于 2013-03-14T15:39:42.127 回答
2

取而代之的是动态列,有支持集合的东西,如集合、列表、地图。动态性还不够吗

于 2013-03-21T05:58:52.127 回答