オープンソース

OSSのRedisに代わるデータベース〜Valkey〜

ValkeyとはインメモリデータベースのOSSです。インメモリデータベースとは、メモリ上でデータの操作をする、RDBMSよりも高速に動作するデータベースの一種です。OSSのインメモリデータベースとしては、Redisがよく利用されていました。しかし、Redisのライセンス変更により、商用での利用が難しくなりました。今回は、Redisに代わるOSSのデータベースValkeyについて紹介します。

目次

Valkeyとは

Valkeyとは、インメモリデータベースのデータベースソフトウェアです。もともとOSSだったRedisのソースコードから開発が始まりました。Valkeyは、多くのOSSプロジェクトを管理・運営しているLinux foundationという組織によって管理されており、プログラムは公式サイトのGithubからダウンロードできます。またAmazonやGoogleなど多くの企業がValkeyプロジェクトに協力しており、AWSのサービスでは今後Valkeyを利用していくことを表明しています。このようにValkeyは、インメモリデータベースとして今後の発展・利用の増加が見込まれるソフトウェアといえます。

また、Valkeyはインメモリデータベースでありながらも、ディスクへのデータ保存の機構を備えています。この機能があることで、ジョブやメッセージのキューを保存するような用途でも利用されています。

インメモリデータベースとは

インメモリデータベースは、コンピュータのメモリ上でデータを管理するデータベースです。ハードディスクやSSD上にデータを保管するRDBMSよりも高速に動作するという特徴があります。RDBMSのようにテーブルでデータを管理するのではなく、基本的にキーと値のペアでデータを管理する、いわゆる「key/value型」のデータを保有しています。

インメモリデータベース

インメモリデータベースは、高速に動作することが特徴ですが、デメリットとしてコンピュータのメモリ上にデータを保有しているため、コンピュータの電源が落ちてしまうとデータも消失してしまいます。そのため、データの永続的な保管用途ではなく、アプリケーションのキャッシュやセッション情報の保管用に利用されるケースがよくあります。

RedisとValkey

Redisは、データベースソフトウェアとしてよく利用されている人気のソフトウェアの一つでした。しかし、2024年3月にリリースされたRedis v7.4以降、Apache 2.0ライセンスから、RSALv2(Redis Source Available License)もしくはSSPLv1(Server Side Public License)のデュアルライセンスへライセンス形態を移行することを発表しました。

このライセンスでは、ソフトウェアを商品化できないことや、ソースコードをすべて公開する必要があるなど、クラウドサービスなどで提供する場合は制限が適用されるケースが出てきます。つまり、Redisは厳密にはOSSではなくなり、現在はクラウドサービス等で商用利用することが難しくなっています。こうしたRedisの流れを受けて、ライセンス変更前のRedisのソースコードをもとにして新たに開発されたのがValkeyです。

後述でも解説しますが、ValkeyはRedisとの親和性が高く、Redisとほぼ同じように利用することができます。ただし、両者は別のプロジェクトで開発が進められているため、今後も同じように使い続けることができるかどうかは分かりません。

Valkeyの特徴

Valkeyには、以下の特徴があります。

用途に合わせたデータ型が存在

Valkeyには、主に5つのデータ型があり、それぞれ異なる使い方と用途があります。用途に合わせてデータ型を変更して利用することが可能です。

String型 説明 単一の文字列・数値を保存するための型
用途
  • ユーザー情報、商品情報などの単一の値をキャッシュとして保存
  • ページビュー数、いいね数などのカウンターの実装
  • アプリケーションの設定値や環境変数の保存
List型 説明 複数の文字列値を順序付きリストとして保存する型
用途
  • 非同期タスクを管理
  • ソーシャルメディアのタイムラインやアクティビティフィードの管理
  • 最近閲覧した商品や履歴の保存
Hash型 説明 フィールドと値のペアを持つオブジェクトを保存する型
用途
  • ユーザー情報、商品情報などの構造化されたデータをキャッシュ
  • リアルタイムの統計情報や分析結果の保存
  • アプリケーションの設定情報や環境変数をグループ化して保存
Set型 説明 一意な文字列値の集合を保存するための型
用途
  • IPアドレス、メールアドレスなどの重複を排除
  • 記事のタグ、ユーザーの興味関心などのタグ情報の管理
  • ユニークビジター数、オンラインユーザー数などの集計
Sorted Set型 説明 スコアと関連付けられた一意な文字列値の集合を保存するための型
用途
  • ゲームのハイスコア、商品の人気ランキングなどの管理
  • 優先度に基づいたタスクやメッセージの管理
  • 地理的な位置情報に基づいたクエリや分析

クラスタ構成での動作

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台が最低でも必要になります。

データ永続化

Valkeyは、インメモリデータベースですが、データの永続化の仕組みが存在します。永続化の仕組みを利用することで、ハードウェア障害時にディスクからの復元よりも素早くデータを復旧することができます。Valkeyのデータ永続化には、主に2つの方法があります。

RDB(Redis Database) AOF(Append Only File)
説明 スナップショットを取得し、ディスクにデータを保存する方式 すべての書き込み操作をログファイルに追記しデータの永続化を実現する方式
特徴
  • バックアップやリカバリに適している
  • RDBよりもリアルタイムに、データの保存を行うことができる
  • 堅牢性が高い
  • 耐久性が高い

この特徴から、AOFの方が、優れているように見えますが、ディスク書き込みが多いと、処理に時間がかかってしまいパフォーマンスが低下するため、サービスの特性によってRDBとAOFを使い分ける必要があります。またRDBとAOFは併用することもできるため、それぞれの利点を活かすことでデータ損失のリスクを最小限に抑えることが可能です。

Redisとの親和性

  • クラスタリングの親和性

    Valkeyを調査した結果、Valkeyのクラスタリングでは、Redisと同様の方式・設定で動作することがわかりました。現在のところ、メリット・デメリット含め全く同じであり、Redisを利用していたユーザは今までと同じように利用が可能です。

  • プログラム言語との親和性

    PHPやPython3では、Redisを利用することが可能ですが、弊社で調査した結果Redisのクライアントを使って同じようにValkeyの操作が可能であることがわかりました。

その他、Valkeyにもデータ永続化機能があるため、ValkeyはRedisと同じように利用することが可能です。しかし、今後は別プロジェクトで開発が進むため、今後も全く同じように利用できる保証はありません。

デージーネットの取り組み

デージーネットでは、Valkeyを利用したデータベースのシステム構築・保守を行っており、データベースを二重化・冗長化したシステムにも対応しております。またデージーネットでは、Valkeyのようなインメモリデータベースだけでなく、RDBMSなどさまざまなOSSのデータベースソフトウェアを扱っております。システムの構築サービスでは、お客様のご要望や利用環境に合わせてOSSを選択し、最適なデーターベースの提案を行っております。

Valkey使用したシステム構築サービスを提供したお客様には、導入後支援サービスとして、Open Smart Assistanceを提供しています。これは、Valkey単体のサポートではなく、Linuxなどを含むシステム全体に対するサポートです。Open Smart Assistanceでは、Valkeyにバグがあった場合には、回避方法の調査、コミュニティへの連絡による改善促進といったサポートを受けることができます。

「情報の一覧」

Valkey調査報告書

Valkey無料資料

Valkeyとは、オープンソースのインメモリデータベースなどと呼ばれる分野のDBです。ライセンスが更新され、商用での利用が難しくなったRedisに代わるデータベースとして注目されています。本ドキュメントはValkeyのインストールの実行や操作方法などについて、調査した内容をまとめたものです。

社内サーバインフラの構築

社内サーバインフラの構築

デージーネットが提供するオープンソースソフトウェア(OSS)を利用した社内サーバインフラ構築についてご紹介します。社内サーバインフラに対するご要望は様々です。ご要望に沿った社内サーバインフラの構築を実現します。

デモのお申込み

もっと使い方が知りたい方へ
操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。デモをご希望の方は、下記よりお申込みいただけます。

デモをご希望の方

デモの申し込みイメージ

t

OSSのRedisに代わるデータベース〜Valkey〜の先頭へ