14

分散して動作するアプリケーションを開発していますが、分散サーバー間で共有する必要があるSQLiteデータベースがあります。 私がserverAにいて、sqlite行を変更した場合、この変更は即座に他のサーバーになければなりませんが、サーバーがオフラインでオンラインになった場合は、他のすべてのサーバーと同じ情報を更新する必要があります。複数のサーバー間でsqliteデータベースをレプリケートする方法

私は小さなSQLiteデータベースでHAサービスを開発しようとしています。

私はMongoDBやReThinkDBのようなものを考えています。レプリケーションが正常に動作するため、私は自分が持っていたデータを独立したサーバに持っています。

サーバー間でデータを共有するためのライブラリやその他のSQL方法がありますか?

ありがとうございます。

+0

競合状態や紛争の他のタイプについての注意事項? – Ekevoo

答えて

7

私は、SQLiteデータベースを複製するためにRaftコンセンサスプロトコルを使用しました。あなたはここにシステムを見つけることができます。

https://github.com/otoolep/rqlite

+0

はrqliteで利用できるJSON1拡張ですか? –

2

アプリケーションにSymmetricDSを埋め込むことで、SQLiteデータベースを同期させることができます。時々接続されたクライアントをサポートしているため、サーバーがオンラインになったときに変更をキャプチャして同期します。いくつかの異なるデータベース・プラットフォームをサポートし、ライブラリーまたはスタンドアロン・サービスとして使用できます。

+0

ファイルホストされたさまざまなSQLiteデータベースを同期する方法はありますか? – neuviemeporte

1

CopyCatを使用することもできます。これは、SQLiteと他のいくつかのデータベースタイプをサポートしています。

+0

非常に限られた条件の下でのみSQLiteをサポートしているようです(例えば、Delphi ?!を使用しています) – Michael

5

をあなたがlitereplica使用することができます。

をそれは、単一のマスター(書き込み可能なノード)と1つまたは多数のレプリカを使用しSQLite3のデータベースのマスタースレーブのレプリケーションをサポートしています(読み取りノードのみ)。

デバイスがオフラインになってオンラインになった場合、セカンダリ/スレーブdbsは、プライマリ/マスターのdbsが増分的に更新されます。

またはlitesync

我々は、デバイスがオフラインであっても、任意のノードでDBに書き込むことができるので、それがマルチマスターレプリケーションを実装しています。両方で

我々はこのように、変更されたURIを使用してデータベースを開きます

 
    “file:/path/to/app.db?replica=master&bind=tcp://0.0.0.0:4444”
+0

これは多くの場合に有効ですか?意味私は単一のスレーブに多くのソース(同じレイアウト/テーブル)を持っていますか? – Tacitus86

+1

いいえ、単一のマスターで動作します。 1つのデータベース上の多くのソースからのデータをマージすることはありませんが、各ソースごとに別々のレプリカを保持することができます。 –

関連する問題