【问题标题】:How to get groups of rows in MySQL and Cassandra如何在 MySQL 和 Cassandra 中获取行组
【发布时间】:2012-08-15 07:42:06
【问题描述】:

所以我有一个表,目前在 mysql 中,但很快就会转移到 nosql 系统中。所以我把表的规范化了,现在有重复的数据,但是每一行有一个id发生变化,而其余数据是不变的。所有行都通过 ID A 连接。ID B 每行发生变化,而 ID A 中所有行的用户 ID 相同。

现在我需要使用用户 ID 抓取 2 组行。但是,对于每组 A,ID B 的数量都是可变的,因此它可以有变量的行数,所有这些都由每个 ID A 分组在一起。到目前为止,我一次只显示一个组,所以我一直在根据 ID 进行选择A,现在我需要尝试通过用户ID抓取2套......

我似乎无法找到一种方法来做到这一点......虽然我不知道关于 sql 的一切。我现在如何在 mysql 上执行此操作?然后在我稍微移动到系统时在 nosql 上?很乐意回答任何进一步的问题。

【问题讨论】:

  • 请按照您的需要添加数据示例。你的解释很难理解。

标签: mysql sql database nosql cassandra


【解决方案1】:

我认为您是说行有一个由两列组成的复合键,id 的 A 和 B。假设我明白了,这就是您在 Cassandra 中的操作方式(并且有两个 接近)。

您可以使用 CQL 并声明您的表具有两个主键 A 和 B,按此顺序,以及原始 MySql 表中的任何其他列。

您还可以创建一个列族,其行键为 id A,并且该 id A 的每个唯一 id B 都有一个列。列的名称将是 id B 的值和该列的值将是剩余 MySQL 行值的值(或序列化值)。请注意,id B 不必是字符串值。对于 id A 的任何给定值,这将导致 Cassandra 列族行的列数与该 id A 值的唯一 id B 值一样多。这称为“动态列族模式”。

如果您采用第一种方法,您基本上最终会在幕后采用第二种方法(过度简化警报)。

【讨论】:

  • 我想我明白了,当我接近更改为 CQL 时我会搞砸这个想法 :) 谢谢!
猜你喜欢
  • 2018-09-08
  • 1970-01-01
  • 2014-12-24
  • 1970-01-01
  • 2016-05-28
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多