Dragonfly5
PostgreSQL / MySQL に HTTP API でアクセスするための分散型データベースプロキシサーバーです。
複数ノードでクラスターを構成し、負荷に応じてリクエストを振り分けます。
軽量
高トラフィック耐性
安定稼働
軽量性
Go 製の単一バイナリで、常駐メモリは目安として約 20 MB 前後に抑えられます。プロキシ層のオーバーヘッドが小さく、レイテンシへの影響はほぼ無視できるレベルを想定しています。
導入コストや運用コストを踏まえ、設定やチューニングまわりのパラメータは極限まで省いています。
運用性
DB の種類や台数が増えるほど、接続設定や運用の複雑さがアプリ側にのしかかりがちです。プロキシを前段に置くことで、接続まわりの負担を、次のように抑えやすくなります。
- 接続の制御:アプリはプロキシに向けるだけでよく、読み取り専用など接続先の振り分けや切り替えロジックを、アプリごとに持たなくて済むようになります。
- 接続の集約:データウェアハウスやデータ連携(Data Integration)のようにマルチ DB を扱う場合も、入口をプロキシに揃えて運用しやすくなります。
- レイヤーの分離:システム構成では DB 層をプロキシに切り出すことで、開発・メンテナンスしやすい境界を引けます。
主な機能
- マルチノードクラスター:複数サーバー間で負荷分散
- 読み書き分離:読み取り専用クエリと書き込み(DML)を別々の接続プールで処理
- トランザクション対応:Begin / Query / Execute / Commit / Rollback / Close
- ヘルスベースのルーティング:各ノードの負荷・レイテンシ・エラー率を考慮してノードを選択
- ストリーミング応答:大量結果をメモリ効率よく返却(オプション)
オープンソース版と企業版の比較
| 機能 | オープンソース | 企業版 |
|---|---|---|
| Cluster 構成 | ⭕ | ⭕ |
| MySQL | ⭕ | ⭕ |
| PostgreSQL | ⭕ | ⭕ |
| Additional RDBs | ⭕ | |
| Cross-DB SQL translation | ⭕ | |
| HTTPS | ⭕ | |
| Stream Mode | ⭕ | |
| API Function | ⭕ | |
| OAuth / OIDC | ⭕ | |
| Audit Log | ⭕ | |
| Multi-tenancy | ⭕ |
使い方
リポジトリの README に、依存関係の取得、config.yaml の編集、ビルド・実行手順、HTTP API(/healz、/rdb/query など)の詳細がまとまっています。まずはサーバーをクローンしてローカルで起動し、クライアントライブラリから接続してみてください。
クライアント用ライブラリ(GitHub)
- cycau / dragonfly5_client_go
- cycau / dragonfly5_client_py
- cycau / dragonfly5_client_ts
- cycau / dragonfly5_client_java
上記リポジトリはすべて Apache License 2.0 です(各リポジトリの LICENSE をご確認ください)。