我正在评估用于存储键/值对的nosql存储(作为应用程序的一部分),我遇到了percona,它在mysql世界中提供本机键/值。这似乎是一个很好的解决方案,因为它允许存储保留在单一位置(因为mysql中存在其余功能,并将继续保持原样)。与其他键/值存储(如cassandra )相比,是否还有其他优势?它的缺点是什么?
发布于 2011-09-20 05:30:03
您指的是HandlerSocket接口,它绕过了SQL query层,允许您通过主键在单个InnoDB表中获取和存储行。这个想法是,避免SQL的开销允许应用程序运行更高的QPS速率。
HandlerSocket很有前途,但到目前为止我们发现(我在Percona工作)的瓶颈是匆忙编写的客户端接口。也就是说,在PHP、Ruby等客户端API的当前实现状态下,HandlerSocket的开销并不比为INSERT和SELECT编写简单的SQL语句快。InnoDB已经针对主键访问进行了优化,因为表实际上是按主键存储为聚集索引的。
随着时间的推移,为HandlerSocket客户端库编写优化代码的未来开发应该会改进这一点。如果你想帮助这个过程,可以参与到开源项目中来开发这些客户端库。
HandlerSocket的另一个缺点是AFAIK,它不支持值的就地递增,这是一些其他键/值存储提供的优化。使用HandlerSocket,您必须获取值,读取它,递增它,然后将其发送回数据库。这引入了竞争条件,因此您必须以某种方式锁定行。
https://stackoverflow.com/questions/7477179
复制相似问题