概要
インメモリデータベースをご存知でしょうか?
インメモリデータベースとは、データをインメモリ(主記憶装置、RAM)上の領域に格納するように設計されたデータベースのことで、従来のハードディスクなどのストレージ上に構築されるデータベースに比べてデータの読み書きを数桁高速に行うことができるものになります。
こちらのインメモリデータベースの有名どころとしては Redis や Memcached がよく挙げられますが、これらは約 10 年以上前に設計されたものになりますので、やや古さが目立ってきています。
現代の様々なソフトウェアの処理速度向上化に追従できるように、設計などが古い Redis などに替わるインメモリデータベースとして、新たなインメモリデータベースが OSS として開発されていましたので、今回はこちらについて紹介しようと思います。
今回ご紹介する OSS は、Redis や Memcached の代わりになりうる非常に高速なインメモリデータベース「Dragonfly」になります。
それでは早速詳細について見ていきたいと思います。
特徴
Dragonfly は宇宙で最速のインメモリストアとして大々的に紹介されており、以下のような点が主に特徴として挙げられています。
- 単純
- 費用対高価大
- 全てのハードウェアリソースを利用して、わずかなコストで作業を最適化で来ます。
- 屈強
- メモリ効率高
- Dragonfly の内部データ構造は 20%~40% 少ないメモリリソースを消費するように最適化されています。
そのほか、Redis と比較したグラフが掲載されており、Dragonfly が Redis より性能が明らかに高いことが窺えますね!
また、Dragonfly は Redis の約 25 倍のスループットが示されており、1 インスタンスで 3.8 M QPS を処理することができるそうです。
利用手順
Dragonfly の 動作環境は Linux で、5.11 バージョン以降のものが推奨されています(古いカーネルでも実行は可能とのことです)。
Docker
Docker を利用してインストールには以下のコマンドを実行します。
docker run --network=host --ulimit memlock=-1 docker.dragonflydb.io/dragonflydb/dragonfly redis-cli PING # redis-cli can be installed with "apt install -y redis-tools"
注意として、一部の Linux ディストリビューションではコンテナーのデフォルトの memlock 制限が 64m に設定されており、Dragonfly ではさらに多くの制限が必要になるため、--ulimit memlock=-1
がオプションで必要になります。
Releases
バイナリから動かす場合は、以下の Releases ページから必要なバイナリをダウンロードする必要があります。
ソースコード
Ubuntu 20.04 以降でビルドするには、依存関係をインストールする必要があります。
git clone --recursive https://github.com/dragonflydb/dragonfly && cd dragonfly # to install dependencies sudo apt install ninja-build libunwind-dev libboost-fiber-dev libssl-dev \ autoconf-archive libtool cmake g++ # Configure the build ./helio/blaze.sh -release # Build cd build-opt && ninja dragonfly # Run ./dragonfly --alsologtostderr
内容詳細
今回は Linux 環境でした実行することができない(筆者が Windows 端末しか所持していない)ため、README.md に紹介されている内容についての紹介になります。
Dragonfly はメモリ効率がアイドル状態の Redis よりも 30% も効率が高いことが示されています。
そのほかにも、Redis や Memcached よりも Dragonfly の方が効率性が高くメモリ効率も高いことが示唆されていましたので、宇宙最速のインメモリストアというのも頷けそうです!
ただし、まだ Dragonfly は開発途中のソフトウェアということで、実装されていないコードやコマンド・データが存在するということなので、本番環境で使用するのは今時点では難しいかもしれません。
まとめ
今回は、Redis や Memcached の代わりになりうる非常に高速なインメモリデータベース「Dragonfly」をご紹介しました。
Dragonfly は現時点では開発途中ということですが、実行速度が Redis や Memcached よりもかなり高いことは確かです。
これから猛威を振るうであろうこちらの新しいインメモリデータベース「Dragonfly」を一度試して見てはいかがでしょうか?