Redis互換で25倍高速とする「Dragonfly」が登場。2022年の最新技術でインメモリデータストアを実装
Redisやmemcachedに代表されるインメモリデータストアは、高速なデータアクセスを要求される場面で使われています。
このインメモリデータストアを2022年の最新技術を用いて設計、実装することで、Redis/memcached互換を実現しつつRedisの25倍高速とする「Dragonfly」が登場しています(開発元のアナウンス、GitHub)。
Redisやmemcachedが登場した十数年前と比べて、現在ではCPUのマルチコア化やI/Oの高速化、メモリの大容量化など、ハードウェア技術が大きく進化しています。
これらを最大限活用する設計と実装を取り入れることでRedisやmemcachedよりも大幅な高速化と高効率化を目指したのがDragonflyです。
採用した主な技術の1つ目が、マルチコアを活用するために採用されたマルチスレッドにおけるシェアードナッシングアーキテクチャです。これによりそれぞれのコアの能力を最大限に引き出しているとのこと。下記はGitHubのREADME.mdからの引用です。
we used shared-nothing architecture, which allows us to partition the keyspace of the memory store between threads, so that each thread would manage its own slice of dictionary data. We call these slices - shards.
われわれはシェアードナッシングアーキテクチャを採用しています。これにより、メモリストアのキー空間ごとにスレッドを分割し、各スレッドが辞書データのスライスを管理することができます。このスライスをシャード(shard)と呼んでいます。
さらに「Dash」と呼ばれるハッシュテーブルを採用したことで、TTLレコードに対する効率的な期限管理や、LRUやLFUなどよりも高いキャッシュヒット率をメモリのオーバーヘッドなしに実現し、優れたスナップショットアルゴリズムも実現したとのこと。
また、Dragonflyでは操作のアトミック性(操作全体が成功か失敗かどちらかで終わること)が保証されています。
下記が開発チームによるAmazon EC2のインスタンスを用いたベンチマーク結果の一部抜粋です。飛び抜けて高い6本のマーカーがどれもDragoflyによるもの。最大でRedisの25倍高速であり、Dragonflyは1インスタンスで数百万QPS(Query Per Second)を実現するとのこと。
また、メモリ効率もRedisと比較してアイドル時で30%、最大時で3倍優れており、スナップショットも高速に終了するとしています。
Dragonflyは現時点で130のRedisコマンドとすべてのmemcachedコマンドの互換性を有しており、Redis 2.8のほとんどのAPIをサポート。
次はRedisからDragonflyへのレプリケーションとDragonfly同士のレプリケーションの実現による高可用性の実現を目指し、さらに多くのRedis APIのサポートを実装していくとしています。
追記 2022/13:30 当初タイトルに「オープンソース」と入れておりましたが、ライセンスのBSL 1.1はOSIで承認されたオープンソースライセンスではなかったためタイトルを変更しました。お詫びして訂正いたします)
あわせて読みたい
RubyGemsの運営元が「Ruby Shield」を発表。RubyとRailsへのサプライチェーン攻撃への対策としてShopifyが4年で100万ドル(約1億3000万円)を提供
≪前の記事
Cloudflare WorkersがWebAssemblyでWASIをサポート。WebAssemblyはクロスプラットフォーム対応が当前の世界に