我的应用程序对 DAO 层使用 AbstractFactory,因此一旦实现了 HBase DAO 系列,创建 Cassandra DAO 系列并从多个角度查看差异对我来说非常棒。
无论如何,尝试这样做,我看到 Cassandra 不支持像 HBase 这样的单元版本控制(我的应用程序强烈使用它)所以我想知道是否有一些表格设计技巧(或其他东西)来“模拟”这个Cassandra 中的行为
问问题
1586 次
1 回答
3
一种常见的策略是使用具有两个组成部分的复合列名:普通列名和版本。您用于版本组件的内容取决于您的访问模式。如果您可能同时有来自多个客户端的更新,那么使用 TimeUUID 是您最安全的选择。如果一次只能更新一个客户端,您可以使用较小的值,例如时间戳或版本号。
假设您为简单起见使用版本号,以下是存储带有版本化字段的文档的样子:
| ('body', 5) | ('body', 4) | ... | ('title', 1) | ('title', 0) |
|-------------|-------------|-----|--------------|--------------|
| 'Neque ...' | 'Dolor ...' | ... | 'Lorem Ipsum'| 'My Document'|
如果您需要特定版本的字段、字段的所有版本或所有字段的所有版本,则此格式主要有用。
如果您还想支持一次有效地获取所有字段的最新版本,我建议您非规范化并添加第二个列族,其中每个字段的最新版本仅以其正常形式存储。您可以为每次更改盲目地覆盖这些字段。继续我们的例子,这个列族看起来像:
| 'body' | 'title' |
|-------------|---------------|
| 'Neque ...' | 'Lorem Ipsum' |
于 2012-09-15T19:04:46.330 回答