最初我开始学习 Cassandra,因为动态列引起了我的注意。随着我开始学习更多,我了解到复合主键比动态列更受欢迎,并且 Cassandra 正在转向基于模式(模式是可选的,不是强制性的,但建议使用)。在 cql3 中,这是强制性的,我读到 cql3 是 cassandra 中新应用程序的最佳方法。
这是我面临一个有趣问题的地方。我正在阅读一张特定的幻灯片(Mysql vs Casssandra)-http://lanyrd.com/2012/austin-mysql-meetup-january/spdrx/ (跳转到第 31 张幻灯片),其中讨论了欺诈检测用例。
“在 FraudDetection 中,为了计算风险,通常需要知道有关帐户曾经使用过的所有电子邮件、目的地、来源、设备、位置、电话号码等。”
解释了我们如何在关系世界中维护电子邮件、目的地、来源等的单个表,以及在 cassandra 世界中使用动态列键和值是多么容易。(31-34 张幻灯片)。
既然动态列的键和值都被劝阻了,我们该如何解决这个问题呢?我们是否应该为每个电子邮件、目的地等维护单独的列族?那么它与关系世界有什么不同呢?仅与可扩展性有关吗?我们还能继续使用无模式方法吗?这是“架构是可选的和推荐的,但不是强制性的”的黄金法则吗?
谢谢