OSSのRedisに代わるデータベース〜Valkey〜
ValkeyとはインメモリデータベースのOSSです。インメモリデータベースとは、メモリ上でデータの操作をする、RDBMSよりも高速に動作するデータベースの一種です。OSSのインメモリデータベースとしては、Redisがよく利用されていました。しかし、Redisのライセンス変更により、商用での利用が難しくなりました。今回は、Redisに代わるOSSのデータベースValkeyについて紹介します。
Redisのライセンス変更
Redisは、もともとOSSのデータベースソフトウェアとして人気があり、よく利用されているソフトウェアの一つです。しかし、2024年3月に次のバージョン(Redis v7.4)のリリース以降、Apache 2.0ライセンスからライセンス形態が変更され、RSALv2(Redis Source Available License)もしくはSSPLv1(Server Side Public License)のデュアルライセンスに移行することを発表しました。このライセンスは、ソフトウェアを商品化できないことや、ソースコードをすべて公開する必要があるなど、クラウドサービスなどで提供する場合は制限が適用されるケースが出てきます。それにより、Redisをクラウドサービスなどの商用で採用することが難しくなりました。
Valkeyとは
Valkeyとは、インメモリデータベースなどと呼ばれる分野のデータベースソフトウェアです。もともとOSSであったRedisのソースコードから開発が始まっています。Valkeyは、多くのOSSプロジェクトを管理・運営しているLinux foundationという組織によって管理されています。プログラムは公式サイトのGithubからダウンロードできます。またAmazonやGoogleなど多くの企業が、Valkeyプロジェクトに協力をしており、AWSでは、AWSのサービスでValkeyを利用していくことを表明しています。Valkeyは、インメモリデータベースとして今後の発展・利用の増加が見込まれるソフトウェアです。
インメモリデータベースの特徴
インメモリデータベースは、RDBMSのようにテーブルでデータを管理するのではなく、基本的にキーと値のペアでデータを管理するkey/value型のデータを保有しています。コンピュータのメモリ上でデータを管理するため、ハードディスクやSSD上にデータを保管するRDBMSよりも高速に動作するという特徴があります。
インメモリデータベースは、高速に動作することが特徴ですが、デメリットとしてコンピュータのメモリ上にデータを保有しているため、コンピュータの電源が落ちてしまうとデータも消失してしまいます。そのため、データの永続的な保管用途ではなく、アプリケーションのキャッシュやセッション情報の保管用に利用されるケースがよくあります。
しかし、Valkeyはインメモリデータベースでありながらも、ディスクへのデータ保存の機構を備えています。この機能があることで、ジョブやメッセージのキューを保存するような用途でも利用されています。
Valkeyの特徴
Valkeyには、以下の特徴があります。
用途に合わせたデータ型が存在
Valkeyには、主に5つのデータ型があり、それぞれ異なる使い方と用途があります。用途に合わせてデータ型を変更して利用することが可能です。
String型 | 説明 | 単一の文字列・数値を保存するための型 |
---|---|---|
用途 |
|
|
List型 | 説明 | 複数の文字列値を順序付きリストとして保存する型 |
用途 |
|
|
Hash型 | 説明 | フィールドと値のペアを持つオブジェクトを保存する型 |
用途 |
|
|
Set型 | 説明 | 一意な文字列値の集合を保存するための型 |
用途 |
|
|
Sorted Set型 | 説明 | スコアと関連付けられた一意な文字列値の集合を保存するための型 |
用途 |
|
データ永続化
Valkeyは、インメモリデータベースですが、データの永続化の仕組みが存在します。永続化の仕組みを利用することで、ハードウェア障害時にディスクからの復元よりも素早くデータを復旧することができます。Valkeyのデータ永続化には、主に2つの方法があります。
RDB(Redis Database) | AOF(Append Only File) | |
---|---|---|
説明 | スナップショットを取得し、ディスクにデータを保存する方式 | すべての書き込み操作をログファイルに追記しデータの永続化を実現する方式 |
特徴 |
|
|
この特徴から、AOFの方が、優れているように見えますが、ディスク書き込みが多いと、処理に時間がかかってしまいパフォーマンスが低下するため、サービスの特性によってRDBとAOFを使い分ける必要があります。またRDBとAOFは併用することもできるため、それぞれの利点を活かすことでデータ損失のリスクを最小限に抑えることが可能です。
クラスタ構成での動作
Valkeyは、Redisと同様にクラスタ構成で動作することができます。クラスタ構成にすることで、運用を効率化することができます。Valkeyのクラスタ構成には次の3種類があります。
Replication
Replication方式のクラスタは、複数のValkeyインスタンスがプライマリ・セカンダリの役割を持ち、プライマリからセカンダリに対してデータが同期される方式です。セカンダリはマスタからのデータ同期のみ受付け、基本的に読み込み専用として動作します。マスタ・セカンダリの自動切り替えの機能はありません。このため、Replication方式はデータの冗長化や読み込み処理の負荷分散として利用することを主な目的としています。
Sentinel
Sentinel方式は、Replication方式にフェイルオーバ機能を付与したものです。この方式はプライマリ・セカンダリのインスタンスの他に、最低3台からなるSentinelという死活監視用インスタンスを必要とします。Sentinel方式では、3台のSentinelインスタンスが投票してプライマリインスタンスを決定するため、過半数が獲得できない2台や偶数構成では上手く動作しません。
つまりこの構成の場合、最低5台のValkeyが必要になります。なお、この構成ではプライマリとしての役割はフェイルオーバされますが、接続を待ち受けるIPアドレスを移動するVRRPのような機能はありません。このため、フェイルオーバ時にスクリプト等で仮想IPアドレスを移動させるなどのケアが必要です。Sentinelの設定は、上記のReplicationの設定に加えて、3 台のSentinelインスタンスを追加することで実装できます。
Cluster
Cluster方式は、プライマリを複数台動作させることができる構成です。データは複数のValkeyにシャードとして分散して保管されます。シャード単位でデータのレプリケーションが行われるため、1つのインスタンスが破損した場合でも、他のインスタンス群でサービスを継続することができます。構成として、プライマリ3台・セカンダリ3台の計6台が最低でも必要になります。
Radisとの親和性
- クラスタリングの親和性
Valkeyを調査した結果、Valkeyのクラスタリングでは、Redisと同様の方式・設定で動作することがわかりました。現在のところ、メリット・デメリット含め全く同じであり、Redisを利用していたユーザは今までと同じように利用が可能です。
- プログラム言語との親和性
PHPやPython3では、redisを利用することが可能ですが、弊社で調査した結果redisのクライアントを使って同じようにValkeyの操作が可能であることがわかりました。
その他、Valkeyにもデータ永続化機能があるため、ValkeyはRedisと同じように利用することが可能です。しかし、今後は別プロジェクトで開発が進むため、今後も全く同じように利用できる保証はありません。今回の調査についての詳しい内容は、Valkey調査報告書に掲載しています。以下のページより無料でダウンロードが可能です。
デージーネットの取り組み
デージーネットでは、Valkeyを利用したデータベースのシステム構築・保守を行っています。Valkeyは、インメモリデータベースですが、それ以外のRDBMSデーターベースの構築も行っており、お客様のご要望や利用環境に合わせてOSSを選択し、最適なデーターベースの提案も行っています。
Valkey使用したシステム構築サービスを提供したお客様には、導入後支援サービスとして、Open Smart Assistanceを提供しています。これは、Valkey単体のサポートではなく、Linuxなどを含むシステム全体に対するサポートです。Open Smart Assistanceでは、Valkeyにバグがあった場合には、回避方法の調査、コミュニティへの連絡による改善促進といったサポートを受けることができます。
「情報の一覧」
Valkey調査報告書
Valkeyとは、オープンソースのインメモリデータベースなどと呼ばれる分野のDBです。ライセンスが更新され、商用での利用が難しくなったRedisに代わるデータベースとして注目されています。本ドキュメントはValkeyのインストールの実行や操作方法などについて、調査した内容をまとめたものです。
【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー
日程: | 11月22日(金)Webセミナー 「BigBlueButton」を使用します。 |
内容: | OSSを導入したいけど、どこから手をつければいいかわからない方必見! |
ご興味のあるかたはぜひご参加ください。 |