我正在评估用于存储键/值对的 nosql 存储(对于应用程序的一部分),并遇到了在 mysql 世界中提供 native 键/值的 percona。这似乎是一个很好的解决方案,因为它允许存储保留在一个地方(因为其余功能存在于 mysql 中,并且会继续保持原样)。与其他键/值存储(例如 cassandra)相比,还有其他优势吗?有什么缺点?

最佳答案

您指的是 HandlerSocket 接口(interface),它绕过 SQL 查询层并允许您通过主键在单个 InnoDB 表中获取和存储行。这个想法是避免 SQL 的开销允许应用程序运行更高的 QPS 率。

HandlerSocket 显示出希望,但到目前为止我们发现(我为 Percona 工作)是瓶颈是草率编写的客户端接口(interface)。也就是说,PHP、Ruby 等的客户端 API 在其当前实现状态下具有如此大的开销,以至于 HandlerSocket 并不比为 INSERT 和 SELECT 编写简单的 SQL 语句快。 InnoDB 已经针对主键访问进行了优化,因为表实际上是按主键存储为聚集索引的。

为 HandlerSocket 客户端库编写优化代码的 future 开发应该会随着时间的推移而改进。如果你想帮助这个过程,参与开源项目来开发这些客户端库。

HandlerSocket 的另一个缺点是 AFAIK,它不支持值的就地递增,这是其他一些键/值存储提供的优化。使用 HandlerSocket,您必须获取值,读取它,增加它,然后将它发送回数据库。这引入了竞争条件,因此您必须以某种方式锁定该行。

关于mysql - percona nosql 与其他 nosql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7477179/

10-16 13:53