分散して動作するアプリケーションを開発しています。分散サーバー間で共有する必要があるSQLiteデータベースがあります。私がserverAにいて、sqlite行を変更した場合、この変更は他のサーバーにも即座に反映される必要がありますが、サーバーがオフラインでオンラインになった場合は、他のすべてのサーバーと同じ情報を更新する必要があります。
小さなSQLiteデータベースでHAサービスを開発しようとしています。
MongoDBやReThinkDBのようなものを考えています。レプリケーションが正常に機能し、サーバーのデータをオンラインで独立して持っているためです。
サーバー間でデータを共有するためのライブラリまたは他のSQL方法論はありますか?
前もって感謝します。
Raftコンセンサスプロトコルを使用してSQLiteデータベースを複製しました。あなたはここでシステムを見つけることができます:
LiteReplica を使用できます。
単一のマスター(書き込み可能なノード)と1つ以上のレプリカ(読み取り専用ノード)を使用するSQLite3データベースのマスタースレーブレプリケーションをサポートしています。
デバイスがオフラインになってからオンラインになった場合、セカンダリ/スレーブデータベースはプライマリ/マスターデータベースで増分的に更新されます。
または LiteSync :
マルチマスターレプリケーションを実装しているため、デバイスがオフラインの場合でも、任意のノードのデータベースに書き込むことができます。
どちらの場合も、次のように変更されたURIを使用してデータベースを開きます。
「file:/path/to/app.db?replica = master&bind = tcp://0.0.0.0:4444」
開示:私は両方のソリューションの作成者です
アプリケーションに SymmetricDS を埋め込むことで、SQLiteデータベースを同期できます。たまに接続するクライアントをサポートするため、サーバーがオンラインになったときに変更をキャプチャして同期します。複数の異なるデータベースプラットフォームをサポートし、ライブラリまたはスタンドアロンサービスとして使用できます。
CopyCat を使用することもできます。これは、SQLiteおよびその他のいくつかのデータベースタイプをサポートします。