3

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

4

1 回答 1

8

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

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

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

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

于 2011-09-19T21:30:03.270 回答