Redis互換で25倍高速とする「Dragonfly」が登場。2022年の最新技術でインメモリデータストアを実装

2022年7月12日

Redisやmemcachedに代表されるインメモリデータストアは、高速なデータアクセスを要求される場面で使われています。

このインメモリデータストアを2022年の最新技術を用いて設計、実装することで、Redis/memcached互換を実現しつつRedisの25倍高速とする「Dragonfly」が登場しています(開発元のアナウンスGitHub)。

fig

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)を実現するとのこと。

fig

また、メモリ効率もRedisと比較してアイドル時で30%、最大時で3倍優れており、スナップショットも高速に終了するとしています。

Dragonflyは現時点で130のRedisコマンドとすべてのmemcachedコマンドの互換性を有しており、Redis 2.8のほとんどのAPIをサポート。

次はRedisからDragonflyへのレプリケーションとDragonfly同士のレプリケーションの実現による高可用性の実現を目指し、さらに多くのRedis APIのサポートを実装していくとしています。

追記 2022/13:30 当初タイトルに「オープンソース」と入れておりましたが、ライセンスのBSL 1.1はOSIで承認されたオープンソースライセンスではなかったためタイトルを変更しました。お詫びして訂正いたします)

あわせて読みたい

NoSQL データベース インメモリデータベース




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本