ankur-anand/unisondb
A streaming multimodal database for Edge AI, and Edge Computing.
UnisonDB – エッジAI向けのログネイティブリアルタイムデータベース
何であるか – UnisonDBはGoで書かれたオープンソースのマルチモデルデータベースで、書き込み先行ログ(WAL)を主データソースとして扱います。すべての書き込みはB+ツリー・ストアに永続化されると同時に、gRPCまたはオブジェクトストアベースのレプリケーションにより、無数のレプリカに即座にストリーミングされます。この設計は、データを計算に近い場所に保持し、数秒以内に数千ノードに伝播する必要があるエッジファーストワークロードをターゲットとしています。
コアアイデア
- ログネイティブ:WAL(WALFSサブシステムとして実装)はメモリマップされ、セグメント化され、リアルタイムで読み取れます。レプリカはログを直接尾追するため、保存されるデータとレプリケーションストリームが同一になります。
- Raftベースの書き込み:オプションのクォラム書き込みにより、プライマリノードに強い整合性と耐久性を提供します。
- Blobファンアウト:WALセグメントをS3/MinIO/GCS/Azureに一度アップロードすれば、無制限のエッジリーダーがポーリング可能になり、各レプリカへの恒久的なgRPC接続の必要がなくなります。
- マルチモデルAPI:キーバリューやワイドカラム、大容量オブジェクト(LOB)のアクセスパターンが、単一のHTTP/JSONインターフェースでサポートされます。
- ゼロMQ通知:サイドカー処理がサブミリ秒の遅延で変更イベントをプッシュし、リアクティブなアプリケーションに対応します。
AI / エッジコンピューティングにおける意義
- エッジでのAI推論パイプラインは、モデルバージョン、特徴キャッシュ、センサーデータなど状態を必要とすることが多く、これらはクエリ可能であり、かつ即座に他のデバイスにブロードキャストされる必要があります。
- 伝統的なスタックではデータベース+メッセージブローカー(Kafka、Pub/Sub、CDC)を組み合わせるため、運用の複雑さとレイテンシが増加します。UnisonDBはこれら2つの層を1つのエンジンに統合します。
- レプリケーションモデルは10,000ノード以上を数秒でスケーリング可能で、IoTデバイスのフリート、自律ロボット、分散推論サービスに適しています。
主な機能(リポジトリに記載)
| 機能 | 提供するもの |
|---|---|
| 高可用性書き込み | プライマリノードでのRaftクォラム、ISRスタイルのレプリカ |
| ストリーミングレプリケーション | WALをgRPC または オブジェクトストアベースのファンアウトで |
| Blobファンアウト | 不変のWALセグメントをS3/MinIOなどに公開;無制限のリーダー |
| マルチモーダルストレージ | KV、ワイドカラム、大容量オブジェクト |
| リアルタイム通知 | ZeroMQサイドカー、サブミリ秒のレイテンシ |
| 永続的B+ツリーエンジン | BoltDBまたはLMDBバックエンドによるACID準拠ストレージ |
| 名前空間の分離 | 論理名前空間によるマルチテナントサポート |
パフォーマンスのハイライト(READMEより)
- スループット:Apple M2 Pro上で1KBの値に対して60k–80k
SET操作/秒を実現。同時に10,000ノード以上に伝播。 - レイテンシ:サブミリ秒の変更通知;2ホップトポロジーでレプリケーションレイテンシは数百ミリ秒の範囲。
- ベンチマーク:Redis互換ベンチマークでは、
GETおよびSETワークロードにおいてBadgerDB、BoltDB、LMDBと同等の性能を示す。
クイックスタート
git clone https://github.com/ankur-anand/unisondb && cd unisondb
go build -o unisondb ./cmd/unisondb
./unisondb server --config config.toml # プライマリ起動
curl -X PUT http://localhost:4000/api/v1/default/kv/mykey \
-H "Content-Type: application/json" \
-d '{"value":"bXl2YWx1ZQ=="}'
ドキュメントとエコシステム
- セットアップガイド、構成リファレンス、アーキテクチャ概要、HTTP APIドキュメント、バックアップ/リストア、デプロイトポロジーなどはすべて
unisondb.ioでホストされています。 - プラグイン可能なストレージバックエンド:BoltDB(単一ファイル)または LMDB(メモリマップ)をB+ツリー層に使用可能。
- MinIOを用いたレプリケーションの例(
cmd/examples/blobstore-minio)。
ステータス – アルファ段階;アクティブなCI(Goテスト、カバレッジ)、GitHub Wikiにオープンなロードマップあり。
誰が使うべきか
- エッジデバイスにAI推論モデルを展開し、共有かつ一貫した状態が必要なチーム。
- 別々のメッセージブローカーなしに、耐久性のあるストレージとリアルタイムイベントストリームを必要とするアプリケーション。
- 分散センサーネットワーク、ロボットフリート、または状態変更の低レイテンシファンアウトが重要なすべてのシステム。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト