我正在开发一种服务,该服务大量使用Cassandra进行群集插入和超过60个列族的查询。
到目前为止,我能够通过重新排序我的密钥或添加具有不同索引集的重复(非规范化)表来解决我的许多问题,以便实现非常快速的插入和查询,但是现在,我已经遇到过Cassandra无法开箱即用的两种情况:
这两个问题都有"解决方案"但它们涉及在我的Cassandra集群上使用不同的引擎,这些引擎不易设置,我没有使用它们的专业知识。另外,对于我的用例,他们看起来有点矫枉过正。
出于这个原因,我决定对于需要文本搜索或某些排序和分页的少数场景,我会使用MySQL,这意味着我会同时将数据插入MySQL和Cassandra中的几个表。对于不需要搜索或专门分页的普通查询,我会使用Cassandra但是当我需要这样做时,我会回顾MySQL。
原则上这很容易做到但问题是,我在Cassandra中的复合键都是UUID格式(生成的UUID或时间UUID)。然而,MySQL并不能很好地将UUID作为我读过的主要OR索引密钥。 (例如,请参阅http://kccoder.com/mysql/uuid-vs-int-insert-performance/)。
我的问题是,你会如何推荐处理这个问题?我怎样才能让Cassandra和MySQL"分享"一把钥匙,同时保持足够的性能?
我应该在MySQL上使用自动增量索引,然后将该密钥存储回Cassandra,以便下次我需要从MySQL获取行时,先查询Cassandra的UUID,然后获取自动增量键在MySQL中使用?你有另一个更好的推荐吗?反正有没有避免这次往返?
如果问题不够明确,请告诉我,我会尽力解释。
非常感谢,
答案 0 :(得分:0)
UUID实际上是一个128位整数,您可以在MySQL中使用2个64位int来表示它。