Dragonfly とは？

<font color="Grey">*[What is Dragonfly?](https://aiven.io/blog/what-is-dragonfly)の翻訳です。*</font>

2024年4月11日

# Dragonflyとは何か？

ドラゴンフライのパワーをご覧ください：スケーラビリティ、回復力、リアルタイムメッセージング。この最先端のインメモリデータストアソリューションの利点を今すぐご確認ください！


Dragonflyは、Redis®に代わるパフォーマンスとメモリ効率に優れたドロップイン型のソリューションで、最新のマルチスレッド・シェアードナッシング・アーキテクチャを採用しています。以上です！Dragonflyの野心的なミッションはすでにご理解いただけたと思います。しかし、その重要性を十分に理解するために、この説明を解きほぐし、利点と主な機能を詳しく検証してみよう。


## Dragonflyのメリット


1).Redis と Memcached の互換性


Redisは無数のウェブサーバアプリケーションで使用されている最も人気のあるインメモリデータストアの一つです。シームレスな開発体験を提供するために、DragonflyはRedisとワイヤプロトコルに関して完全な互換性を持つように設計されています。執筆時点で、Dragonflyは最も一般的に使用される240以上のRedisコマンドをサポートしています。既に使い慣れたSDKやツールを使用することで、Dragonflyに乗り換える場合、クライアント接続の認証情報を除き、既存のコードを変更する必要はありません。さらに、DragonflyはMemcachedモードでの動作もサポートしており、MemcachedのワイヤプロトコルやAPIとの完全な互換性も実現しています。


2).究極のパフォーマンスと垂直スケーラビリティ


マルチスレッド、シェアードナッシングアーキテクチャを活用することで、Dragonflyは従来のインメモリデータストアを凌ぐ圧倒的なパフォーマンス向上を実現します。シングルスレッド設計が主流のRedisとは異なり、Dragonflyのアーキテクチャは最新のマルチコアサーバーをフルに活用できるように最適化されており、大幅に高いスループットを実現します。我々の[最近のベンチマーク](https://www.dragonflydb.io/blog/2024-new-year-new-number)によると、Graviton 3Eプロセッサを搭載した単一のアマゾン[c7gn.16xlarge](https://instances.vantage.sh/aws/ec2/c7gn.16xlarge)インスタンス上で実行した場合、Dragonflyは1秒間に643万オペレーションを達成することができました。以下に、P99.9のレイテンシを10ミリ秒以下に制限し、異なるスレッド数でDragonflyを実行した場合の1秒あたりの最大操作（GETコマンドとSETコマンド）を示します。


![1秒あたりの最大操作 vs. ドラゴンフライのスレッド数](https://cdn.sanity.io/images/sczeoy4w/production/954ca2e256317ded93acb830c4d4828de86efac1-1348x709.png?q=80&fit=min&auto=format&dpr=1.5) 1秒あたりの最大操作 vs. ドラゴンフライのスレッド数


3).メモリ効率


既存のRedisデータ構造の多くは、その効率性と堅牢性のために再利用されていますが、Dragonflyは技術革新を継続し、メモリ使用を最適化する先進的な最新のデータ構造を導入することで、より効率的なデータの保存と管理を実現しています。その一例として、DragonflyのB+ツリーベースのSorted-Set実装があり、Sorted-Setデータエントリのメモリを最大40%削減することができます。さらに、Dragonflyにはスナップショット用の全く新しいアルゴリズムがあり、スナップショットプロセス全体を通して安定したメモリ使用を保証します。これらの進化は、最先端のインメモリデータストアの限界に挑戦するDragonflyのコミットメントを表しています。


## ドラゴンフライの主な機能


RedisやMemcachedと同じ開発者体験を提供するDragonflyは、より要求の厳しいワークロードのための優れたデータと運用管理体験で、インメモリデータストアの状況に革命を起こすことを目指しています。


1).データ型と検索機能


DragonflyはString、List、Set、Sorted Set、Hash、Pub/Sub Messaging、Stream、Geospatial Indexなど、基本的なデータ型から複雑なデータ型までRedisのデータ型に対応しています。さらに、Dragonflyは一般的なJSONデータ型をネイティブでサポートしています。また、ファセット検索とベクトル検索の両方を可能にする強力な検索機能を提供します。


2).シングルインスタンスとマルチノードクラスター


前述の通り、Dragonflyはパワフルなマルチコアサーバーをフル活用することができます。垂直スケーラビリティが容易なDragonflyは、最大1TBのインメモリデータを快適に扱うことができます。また、マルチノードクラスターモードもサポートしており、ダイナミックな水平スケーラビリティも現在開発中です。


![Dragonfly Single Instance Can Handle Much Larger Workloads](https://cdn.sanity.io/images/sczeoy4w/production/40147149253fd05a42fddc83cedfa6d2c7075392-1001x715.png?q=80&fit=min&auto=format&dpr=1.5)Dragonfly Single Instance Can Handle Much Larger Workloads


3).効率的で安定したクラウドネイティブスナップショット


Dragonflyのスナップショットはバージョニングと非同期シリアライズに基づいています。従来の[copy-on-write](https://en.wikipedia.org/wiki/Copy-on-write)メモリ管理に基づくアプローチとは異なり、Dragonflyは書き込みの多いインスタンスのスナップショット時にメモリ使用量が急増することはありません。一方、スナップショットはAmazon S3などのクラウドネイティブなストレージシステムやKubernetesの永続ボリュームに直接保存することができる。


4).高可用性


信頼性とシームレスなフェイルオーバーを確保するために、最終的に一貫したプライマリ-レプリカモデルによる高可用性もサポートされています。これは、[REPLICAOF](https://www.dragonflydb.io/docs/command-reference/server-management/replicaof)コマンド、[Redis Sentinel](https://redis.io/docs/management/sentinel/)、またはネイティブの[Dragonfly Kubernetes operator](https://www.dragonflydb.io/docs/managing-dragonfly/operator/installation)を使用することで実現できます。


## 使用例


1).キャッシング


Redisと同様に、Dragonflyはサーバーサイドアプリケーションの効率的で信頼性の高い集中型キャッシュソリューションとして機能し、低速なディスクベースのデータベースに頻繁にアクセスする必要性を減らすことでパフォーマンスを向上させます。


Redisと同様に、Dragonflyはサーバーサイドアプリケーションのための効率的で信頼性の高い集中型キャッシュソリューションとして機能し、低速なディスクベースのデータベースに頻繁にアクセスする必要性を減らすことでパフォーマンスを向上させます。


2).カーディナリティ測定とリアルタイム統計


一般的にインメモリデータストアは複雑な分析クエリを苦手としますが、Dragonflyはユニークカウントの測定や統計情報の収集のために設計された特定のデータ型（Bitmap、HyperLogLog、Setなど）を備えています。これらのデータ型はユニークなページ訪問の追跡やリアルタイムリーダーボードの管理に最適です。


3).検索


前述したように、Dragonflyはファセット検索やベクトル検索に優れており、アプリケーション内で高度な検索機能を作成するのに適しています。


4).リアルタイムメッセージングとバックグラウンドジョブ処理


Dragonflyは、データの即時更新やチャット機能を必要とするアプリケーションに最適な効率的なリアルタイムメッセージングを実現するだけでなく、バックグラウンドでのジョブ処理にも長けています。BullMQやSidekiqなど、この分野のフレームワークを積極的に統合・最適化し、バックグラウンドで実行されるタスクのシームレスな動作と高いパフォーマンスを実現しています。


## Aiven for Dragonflyは今すぐご利用いただけます。


2024年3月20日付で、オープンソースのクラウドデータプラットフォーム企業であるAiven社は、[Aiven for Dragonfly®](https://aiven.io/press/general-availability-of-aiven-for-dragonfly)の一般提供を発表しました。このサービスは、Dragonflyのすべての強力な機能をお客様のクラウドにもたらし、スケーラブルでフルマネージドなソリューションを提供します。今すぐ[Aiven for Dragonfly](https://aiven.io/dragonfly)にご登録いただき、お客様のビジネスニーズに応える確かな機能をフルにご活用ください。


## よくある質問


**DragonflyはRedisと互換性がありますか？


はい、Dragonflyは[仕様書](https://redis.io/docs/reference/protocol-spec/)に記載されている通り、RESP2とRESP3の両方のワイヤプロトコルにおいてRedis®と互換性があります。既存のRedisクライアント、SDK、GUIデスクトップマネージャーはDragonflyに直接接続することができます。2024年4月現在、Dragonflyは[240以上のRedisコマンド](https://www.dragonflydb.io/docs/command-reference/compatibility)をサポートしている。つまり、Dragonflyがあなたが使っているRedisコマンドをサポートしていれば、既存のRedisコードはすぐにDragonflyで動くはずです。


**Dragonflyはオープンソースですか？


Dragonflyは[GitHub](https://github.com/dragonflydb/dragonfly)でホストされているコミュニティ主導のソース公開プロジェクトです。Dragonflyのソースコードは[Dragonfly Business Source License (BSL)[](https://github.com/dragonflydb/dragonfly/blob/main/LICENSE.md)の下で利用可能です。つまり、開発者はホスティングされたインメモリデータストアを提供する以外のどのようなユースケースでも自由にDragonflyを使用することができる。ライセンスにはこうある：(i)インメモリデータストアの製品やサービスでないことを条件に、独自の製品やサービスの一部としてDragonflyを使用することができます。


Aiven for Dragonflyは、ホスト型インメモリデータストアサービスであり、Dragonflyは、協業および相互の合意に基づき、別のライセンスに基づきAivenにライセンスされることを意味します。


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


インメモリ・データベース（またはデータ・ストア）とは、ディスク・ベースのストレージではなく、主にコンピュータのメイン・メモリ（RAM）に直接データを格納するタイプのデータベースです。RAM上のデータへのアクセスは、ディスクからデータを読み込むよりもはるかに高速であるため、このアプローチでは、ディスクベースのデータベースと比較して、より高速なデータ検索と処理が可能になります。インメモリデータベースは通常、バックエンドシステムのキャッシュレイヤーとして使用されるが、他のユースケースにも対応できる。パフォーマンスと低レイテンシーが重要なアプリケーションに適している。インメモリデータベースの中には、バックアップや高速リカバリーのためにオンディスクストレージオプションを提供するものもある。Memcached、Redis、Dragonflyはインメモリデータベースの一例である。


**NoSQLデータベースとは？


NoSQLデータベースは、リレーショナル・データベースで使用される表形式の関係以外の方法でモデル化されたデータの保存と検索のメカニズムを提供するデータベースの一種です。テーブル、行、列を使用してデータを格納する従来のリレーショナル・データベースとは異なり、NoSQLデータベースは構造化データ、半構造化データ、非構造化データを格納することができるため、扱えるデータの種類に関してより柔軟性がある。NoSQLデータベースは、その名前からも示唆されるように、SQLをクエリやデータ操作のインターフェースとして開発者に公開しないことが多い。さらにNoSQLデータベースは、キーバリューストア、ドキュメントデータベース、ワイドカラムデータベース、グラフデータベース、その他の特殊なデータストアに分類することができます。この分類の下では、Dragonflyは主にキーバリューストアとドキュメントストアであり、リアルタイム、統計、検索の機能が追加されていると考えることができます。