mysql - Cassandra 和 MySql 集成 : How to deal with UUID keys?

标签 mysql cassandra

我正在开发一项服务,该服务大量使用 Cassandra 进行集群插入和具有 60 多个列族的查询。

到目前为止,我能够通过重新排序键或添加具有不同索引集的重复(非规范化)表来解决很多问题,以实现非常快速的插入和查询,但现在,我遇到过 Cassandra 无法立即处理的两种情况:

  1. 跨文本列的文本搜索
  2. 按计数器列实时排序(请参阅 What data structure should I use to mimic "order by counter" in Cassandra?)

这两个问题都有“解决方案”,但它们涉及在我的 Cassandra 集群之上使用不同的引擎,这些引擎不容易设置,而且我没有使用它们的专业知识。此外,对于我的用例来说,它们看起来有点矫枉过正。

出于这个原因,我决定,对于需要文本搜索或某些排序和分页的少数场景,我将使用 MySQL,这意味着我会将数据同时插入到 MySQL 和 Cassandra 中的几个表中。对于不需要搜索或专门分页的普通查询,我会使用 Cassandra,但当我需要执行这些操作时,我会引用 MySQL。

原则上做到这一点很容易,但问题是,我在 Cassandra 中的复合键都是 UUID 格式(无论是生成的 UUID 还是时间 UUID)。然而,从我读到的内容来看,MySQL 将 UUID 作为主键或索引键并不是一个好兆头。 (例如,请参阅 http://kccoder.com/mysql/uuid-vs-int-insert-performance/ )。

我的问题是,您建议如何处理这个问题?如何使 Cassandra 和 MySQL “共享” key ,同时保持足够好的性能?

我是否应该在 MySQL 上使用自动增量索引,然后将该 key 存储回 Cassandra,以便下次需要从 MySQL 获取行时,我首先在 Cassandra 中查询该 UUID,然后获取自动增量 key 可以在MySQL中使用吗?您还有其他更好的推荐吗?有没有办法避免这种往返?

如果问题不够清楚,请告诉我,我会尽力进一步解释。

非常感谢,

最佳答案

UUID实际上是一个128位整数,在MySQL中可以使用2个64位int来表示。

关于mysql - Cassandra 和 MySql 集成 : How to deal with UUID keys?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603007/

相关文章:

database - Cassandra DB 向多个表中插入数据

hadoop - Apache Cassandra VS Spark VS Hive VS Storm

java - cassandra 重新安装在 ubuntu 上不起作用

apache-kafka - Spark Streaming scala 性能极慢

mysql - 使用外键删除时从另一个表中删除

php - 如何在 laravel 中获取 mysql 表的最后一行值?

mysql - MySql 中每个组的加入项目数

mysql - 我可以将中继日志作为 sql 文件播放吗?

mysql - MySQL 中的数据透视表 - 转换为具有 varchar 格式值的数据透视表

database - 使用快照备份 Cassandra 集群并上传到 s3/vm?