Linux、macOS、Windows対応のクロスプラットフォームSQLエディター兼データベース管理ツール
maxpert/marmot
任意のノードで書き込みを受け付け、MySQL wire protocolで通信する、リーダーレスな分散SQLiteレプリケーションサーバー。
代替できる製品:CockroachDB
Amazon Aurora
- スター
- 2,823
- フォーク
- 81
- 未解決の Issue
- 39
- 最終コミット
- 20 日前
これは何?
MarmotはGoで書かれた分散SQLiteサーバーです。クラスター内のどのノードでも書き込みを受け付けられるため、フェイルオーバーが必要な単一のプライマリはありません。ノード間ではgossip protocolを使って変更を交換し、各書き込みは設定可能な整合性レベル(ONE、QUORUM、ALL)で2フェーズコミットにより調整されます。同じ行で競合が発生した場合は、hybrid logical clockのタイムスタンプに基づくlast-write-winsで解決します。
クライアントはMySQL protocolで接続するため、既存のドライバーやORM、DBeaverやMySQL WorkbenchなどのGUIツールを変更せずに利用できます。対応アプリケーションとしてWordPressが挙げられており、3ノード構成のサンプルクラスターも含まれています。レプリケーションはSQL文の再実行ではなく、行単位の変更データキャプチャで行います。また、DDL文はクラスター全体のロックを使ってレプリケーションされ、冪等になるよう書き換えられます。変更はDebezium互換のJSON形式でKafkaやNATSに配信することもできます。
各ノードのSQLiteファイルと同じ場所に保存されるIVF/PQインデックスを使った、組み込みのベクトル検索レイヤーも備えています。また、エッジ環境向けの読み取り専用レプリカモードも利用できます。
主な機能
- 01リーダー選出やフェイルオーバーの手順なしに、任意のノードで書き込みを受け付けます。
- 02MySQL wire protocolで通信するため、標準的なMySQLクライアントやドライバーを利用できます。
- 032フェーズコミットと調整可能な整合性レベルにより、行単位の変更をレプリケーションします。
- 04クラスター全体のロックと、自動的な冪等性を保つ書き換えにより、DDLをレプリケーションします。
- 05Debezium互換の形式で、変更イベントをKafkaやNATSに配信します。
- 06フィルター付き類似検索クエリに使えるSQL関数を備えた、組み込みのベクトル検索を提供します。
ユースケース
- レプリケーションされたデータベースを使って、マルチリージョンのWordPressサイトを運用する。
- 設定データや商品カタログデータの読み取り専用レプリカを、エッジ環境の各リージョンに維持する。
- 埋め込みベクトルと通常のSQLフィルターを組み合わせた、小規模なRAGストアを構築する。
- データベースの変更をKafkaやNATSにストリーミングし、後続のデータパイプラインに取り込む。
クイックスタート
- 1
シングルノードクラスターを起動する
./marmot-v2 - 2
MySQL クライアントで接続する
mysql -h localhost -P 3306 -u root
使う前に知っておきたいこと
- 強い直列化可能性ではなく、結果整合性を提供します。
- 各ノードがすべてのデータの完全なコピーを保持するため、非常に大規模(100GB超)なデータセットではなく、小規模なデータセットに適しています。
- 複数のノードから同じデータベースに対して同時に DDL を実行することはできません。また、ALTER TABLE は安全に再実行しにくい操作です。
- アップロードなどのメディアファイルはレプリケーションされないため、別途共有ストレージが必要です。
トピック
よくある質問
- marmot とは?
- 任意のノードで書き込みを受け付け、MySQL wire protocolで通信する、リーダーレスな分散SQLiteレプリケーションサーバー。 MarmotはGoで書かれた分散SQLiteサーバーです。クラスター内のどのノードでも書き込みを受け付けられるため、フェイルオーバーが必要な単一のプライマリはありません。ノード間ではgossip protocolを使って変更を交換し、各書き込みは設定可能な整合性レベル(ONE、QUORUM、ALL)で2フェーズコミットにより調整されます。同じ行で競合が発生した場合は、hybrid logical clockのタイムスタンプに基づくlast-write-winsで解決します。
- marmot は無料で使えますか?ライセンスは?
- marmot は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- marmot は今もメンテナンスされていますか?
- 活発にメンテナンス中。marmot の最終コミットは 2026年9月30日 です。
- marmot は何に使えますか?
- レプリケーションされたデータベースを使って、マルチリージョンのWordPressサイトを運用する。 設定データや商品カタログデータの読み取り専用レプリカを、エッジ環境の各リージョンに維持する。 埋め込みベクトルと通常のSQLフィルターを組み合わせた、小規模なRAGストアを構築する。 データベースの変更をKafkaやNATSにストリーミングし、後続のデータパイプラインに取り込む。
- marmot のインストール方法は?
- シングルノードクラスターを起動する: ./marmot-v2 MySQL クライアントで接続する: mysql -h localhost -P 3306 -u root
- marmot はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/maxpert/marmot
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
バージョン管理されたSQLファイルやGo関数でデータベースのスキーマ変更を管理するCLI兼Goライブラリ。
Postgres、MySQL、MariaDB、SQL Server、ClickHouse、SQLiteに対応した、デスクトップ・Web向けのAI搭載データベースクライアント兼MCPサーバー。
JDBCおよびODBCドライバー経由で100種類以上のデータベースに接続できる、無料のマルチプラットフォーム対応デスクトップSQLクライアント兼データベースツール。
Gitのようにテーブルをフォーク、クローン、ブランチ、マージ、プッシュ、プルでき、MySQLと同様に接続できるSQLデータベース。
チームや環境をまたいでSQLデータベースのマイグレーションを管理する、軽量でフレームワークに依存しないCLIツール。