给定一个分布式系统,该系统持久存储主键为“url”的记录。鉴于多个服务器正在收集数据,所以' url'是一种方便/方便,准确的保证独特性的方法。我们的系统目前每分钟查询文档10,000次。
我们想添加另一个独特的密钥,作为' uuid'这样我们就可以将资源称为:
http://example.com/fju98hfhsiu
而不是,例如:
http://example.com/?u=http%3A%2F%2Fthis.is.a.long.url.com%2Fthis_is%2Fa%2Fpagewitha%2Flong-url.html
似乎创建了UUID is not ideal in cassandra的二级索引。有没有办法避免在cassandra中创建UUID的二级索引?
答案 0 :(得分:1)
让我们从事实开始,最佳实践和Cassandra的主要模式是为查询创建表,而不是查询表,如果需要在表上创建索引,则它是“自动”反模式。基于此,最简单的解决方案就是使用2个表和2个键。
在你的情况下,“uuid”,不是UUID,它是域和哈希的一些串联,我相信的其余URL。如果你的应用程序可以在请求时生成这个键,你可以只是将其用作分区键,将完整URL用作群集键。
此外,如果没有热域(例如http://example.com),您可以使用域作为分区键,并使用散列和长URL作为群集键,创建物化视图以支持不同的查询。
最后,只需添加二级索引并查看特定情况下的性能影响。如果它适合你,并且你不想处理2个表,物化视图等,只需使用它。