0

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

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

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

4

1 回答 1

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 值一样多。这称为“动态列族模式”。

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

于 2012-08-19T21:08:42.103 回答