0

我是 cassandra 的新手,我的 cassandra 给出了很多读取超时错误..tweaked timout 但仍然有问题可能是设计问题(对于我的应用程序 cassandra 预计将存储数万亿数据):

问题 1:在我所有的 cassandra 表中,我使用 UUID 作为行键...但是对于少数表只是为了维护,我打破了该规则,就像在用户表中一样,我将电子邮件 ID 作为行键...。这样查看表我就可以理解存储的数据...对于大型案例使用 UUID 正确方法,而用户表的第二种方法是否正确???????????

问题 2:我有一个包含 startNodeId、relationTypeId、endNodeId...rowkey 的关系表,因为它是 UUID,它是 relationId .....我在 startNode、relationType、endNode 上定义了二级索引,因为我可以通过它们中的任何一个进行查找商业案例.........因为对于每个新行,我必须检查是否已经存在关系......避免现有检查的一种方法是:我采用 startNodeId、relationTypeId、endNodeId 排序他们并创建 HASH CODE 并将其用作 ROWKEY ......所以我已经明确检查将在这里避免............这是正确的方法吗???????

请指导我,我坚持这些想法......任何指导都会真正帮助我

4

2 回答 2

0

回答您的第一个问题,除非您对处理具有非 uuid 值的行键感到自在,否则跟踪 UUID 也更容易。

关于你的第二个问题,你为什么不试试复合键。您不必维护哈希码之类的东西,将其留在 Cassandra 上。

于 2013-07-15T06:29:54.840 回答
-1

1) 更好地使用自然键而不是 UUID。电子邮件、时间戳、复合主键等。使用 UUID 是 RDBMS 世界的一种方法,您应该在 Cassandra 中避免使用它

2) 读取-修改-更新是 Cassandra 的错误模式。如果您的业务案例允许,请尝试重写数据。或者只使用时间戳并获取具有最新时间戳的行(不要忘记 TTL)。

于 2013-07-16T15:07:05.057 回答