2011-09-19 63 views
3

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

回答

8

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

HandlerSocket显示了承诺,但到目前为止,我们发现(我为Percona工作)的瓶颈是匆忙编写的客户端界面。也就是说,PHP,Ruby等客户端API在其当前的实现状态中具有这样的开销,即HandlerSocket不会比为INSERT和SELECT编写简单的SQL语句更快。 InnoDB已经为主键访问进行了优化,因为这些表实际上是通过主键存储为聚簇索引的。

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

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