OpenCypher互換のクエリとRaftベースの整合性を備えた、分散型で水平スケール可能なオープンソースのグラフデータベース。
erikgrinaker/toydb
分散SQLシステムの仕組みを学ぶためにRustで実装された教育用データベース。Raft合意、MVCCトランザクション、SQLインターフェースを備えています。
- スター
- 7,304
- フォーク
- 625
- 未解決の Issue
- 0
- 最終コミット
- 先月
これは何?
toyDBは、分散SQLシステムの仕組みを示すためにRustで一から構築された分散SQLデータベースです。Raft合意を使ってクラスター全体に状態を複製し、線形化可能なステートマシンレプリケーションを実現します。また、MVCCベースのスナップショット分離によるACIDトランザクションを提供します。
ストレージ層は差し替え可能で、BitCaskバックエンドとインメモリバックエンドを利用できます。キーバリューストアの上にはイテレーター方式のクエリエンジンがあり、ヒューリスティック最適化や過去の時点のデータを読み取る機能を備えています。さらに、JOIN、集約、トランザクションに対応したSQLインターフェースを提供します。コマンドラインクライアントのtoysqlでノードに接続でき、EXPLAINでクエリプランを確認できます。
このプロジェクトは、性能、スケーラビリティ、可用性よりもシンプルさと正確性を重視しているため、コードを読むことを想定しています。テストの多くはGoldenscriptベースのシナリオテストで、リポジトリにはアーキテクチャガイドとワークロードベンチマークツールも含まれています。
主な機能
- 01クラスター内で線形化可能なレプリケーションを実現するRaft合意
- 02MVCCスナップショット分離を備えたACIDトランザクション
- 03BitCaskとインメモリエンジンに対応した差し替え可能なストレージ
- 04JOIN、集約、トランザクションに対応したSQL
- 05ヒューリスティック最適化後のクエリプランを表示するEXPLAIN
ユースケース
- 分散SQLデータベースの内部構造を学ぶ
- 読みやすいRustのコードベースを通じてRaft合意とMVCCトランザクションを学ぶ
- ローカルマシンで小規模なマルチノードSQLクラスターを試す
クイックスタート
- 1
Rustコンパイラをインストールします(Rustのインストールページを参照)
- 2
ローカルで5ノードのクラスターを起動します
./cluster/run.sh - 3
コマンドラインクライアントをビルドして実行し、ノード1に接続します
cargo run --release --bin toysql
使う前に知っておきたいこと
- パフォーマンス、スケーラビリティ、可用性を明示的に最適化していません。
- fsyncと書き込みのバッチ処理がないため、書き込み性能は非常に低いです。
- 本番利用ではなく、教育目的のプロジェクトとして開発されています。
収録されている特集
トピック
よくある質問
- toydb とは?
- 分散SQLシステムの仕組みを学ぶためにRustで実装された教育用データベース。Raft合意、MVCCトランザクション、SQLインターフェースを備えています。 toyDBは、分散SQLシステムの仕組みを示すためにRustで一から構築された分散SQLデータベースです。Raft合意を使ってクラスター全体に状態を複製し、線形化可能なステートマシンレプリケーションを実現します。また、MVCCベースのスナップショット分離によるACIDトランザクションを提供します。
- toydb は無料で使えますか?ライセンスは?
- toydb は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- toydb は今もメンテナンスされていますか?
- 半年以内に更新あり。toydb の最終コミットは 2026年10月2日 です。
- toydb は何に使えますか?
- 分散SQLデータベースの内部構造を学ぶ 読みやすいRustのコードベースを通じてRaft合意とMVCCトランザクションを学ぶ ローカルマシンで小規模なマルチノードSQLクラスターを試す
- toydb のインストール方法は?
- Rustコンパイラをインストールします(Rustのインストールページを参照) ローカルで5ノードのクラスターを起動します: ./cluster/run.sh コマンドラインクライアントをビルドして実行し、ノード1に接続します: cargo run --release --bin toysql
- toydb はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/erikgrinaker/toydb
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
RaftコンセンサスとgRPC APIを基盤とする、分散システムの重要データ向けの分散型・高信頼キー・バリューストア。
強整合性のKey-Valueストアを基盤とし、PostgreSQL wire protocol互換のクラウドネイティブな分散SQLデータベースです。
Raft合意によりノード間で複製される、SQLiteベースの軽量で耐障害性に優れた分散リレーショナルデータベース。
ネイティブなGraphQLクエリインターフェースとACIDトランザクションを備えた、水平スケーリング可能な分散グラフデータベース。
IoT、コネクテッドカー、産業用IoT向けの、高性能なオープンソース時系列データベース。SQLでデータを検索できます。