2

我是 Cassandra 的新手,对超级专栏不熟悉。

考虑这种情况:假设我们有一个客户实体的一些字段,例如

  • 姓名
  • 联系方式
  • 地址

我们可以将所有这些值存储在一个普通列中。我想安排当一个人从一个位置移动到另一个位置(代表字段可以存储经度和纬度)时,值将相对于客户位置连续存储。我认为我们可以使用超级列来做到这一点,但我很困惑如何设计架构来实现这一点。

请帮助我创建此架构并了解超级列背后的概念。

4

1 回答 1

0

超级柱真的不再推荐了……仍在使用,但越来越多的人改用复合柱。例如 playOrm 使用这个概念进行索引。如果我正在索引一个整数,并且索引行可能看起来像这样

rowkey =  10.pk56 10.pk39 11.pk50

在这种情况下,列名类型是复合整数和字符串。这些行最多可以有大约 1000 万列,尽管我自己只运行了高达 100 万的过期时间。例如,playOrm 的查询使用这些类型的索引来执行对 1,000,000 行花费 60 毫秒的查询。

使用 playOrm,您可以在 noSQL 中构建可扩展的关系模型……您只需要弄清楚如何正确地对数据进行分区,因为您可以在每个表中拥有任意数量的分区,但分区实际上不应超过 10万行。

回到这个例子,如果你有一个包含 numShares、price、username、age 列的表,你可以索引 numShares,上面的行就是那个索引,所以你可以通过键获取索引,或者更好的是,获取所有列numShares > 20 且 numShares < 50 的名称

一旦你有了这些列,你就可以得到作为主键的列名的后半部分。主键不是值的原因是因为在上面的示例中,有两行 pk56 和 pk39 具有相同的 10,并且您不能有两个名为 10 的列,但您可以有 10.pk56 和 10.pk39。

后来,迪恩

于 2012-09-18T14:14:55.580 回答