3

私は(アプリケーションの一部として)キーと値のペアを格納するためにnosqlストアを評価しており、mysqlの世界でネイティブのキーと値を提供するperconaに出くわしました。ストレージを1つの場所にとどめることができるので、これは良い解決策のようです(残りの機能はmysqlに存在し、そのまま継続するため)。cassandraなどの他のKey/Valueストアに勝る他の利点はありますか?欠点は何ですか?

4

1 に答える 1

8

HandlerSocketインターフェースを参照しています。これは、SQLクエリレイヤーをバイパスし、主キーによって単一のInnoDBテーブルの行をフェッチして格納できるようにします。SQLのオーバーヘッドを回避することで、アプリケーションがはるかに高いレートのQPSを実行できるようになるという考え方です。

HandlerSocketは有望ですが、これまでのところ(私はPerconaで働いています)、ボトルネックは急いで作成されたクライアントインターフェイスであるということです。つまり、現在の実装状態にあるPHP、RubyなどのクライアントAPIには、HandlerSocketがINSERTおよびSELECT用の単純なSQLステートメントを作成するよりも高速ではないほどのオーバーヘッドがあります。テーブルは実際には主キーごとにクラスター化インデックスとして格納されているため、InnoDBはすでに主キーアクセス用に最適化されています。

HandlerSocketクライアントライブラリ用に最適化されたコードを書くことに関する将来の開発は、これを時間の経過とともに改善するはずです。このプロセスを支援したい場合は、オープンソースプロジェクトに参加して、これらのクライアントライブラリを開発してください。

HandlerSocketのもう1つの欠点は、AFAIKが値のインプレースインクリメントをサポートしていないことです。これは、他のいくつかのキー/値ストアが提供する最適化です。HandlerSocketを使用すると、値をフェッチして読み取り、インクリメントしてから、データベースにポストバックする必要があります。これにより競合状態が発生するため、何らかの方法で行をロックする必要があります。

于 2011-09-19T21:30:03.270 に答える