0

同じユーザーの複数の Android デバイスで実行されているアプリケーションがあります。これらのデバイスはいずれも、すべてのデバイス間で同期する必要があるローカル データベースを維持する必要があります。2 つのデバイスが同時にエントリを追加または削除する可能性が非常に高いため、不整合が発生する可能性が非常に高くなります。

必要なもののリストは次のとおりです。

  • データはデータベースのようなスキームで保存されます (エントリごとに 1 行)
  • 現在の変更によって変更が失われることはありません
  • 変更されていないデータと比較して、変更は非常に小さい (増分更新が必要)
  • デバイスがGoogleドライブに接続されていない間にデータが変更される可能性があります
  • 帯域幅の問題(全体を同期することはできません。ただし、チャンクは可能です)
  • エントリは追加、変更、および削除できます (エントリのコンテンツを削除することによっても実行できます)。
  • エントリはかなり小さい (~2kb)

Googleドライブはデータベースではないことを知っているので、現在、他のサーバーなしでこのシナリオを可能にするソリューションを探して考えています. これにはおそらく解決策がないことは承知していますが、この考えをあきらめる前に確認したいと思います。

これまでのところ、このアプローチで便利になる可能性のあるものはIf-Match: "E_TAG"ヘッダー フィールドだけですが、ファイル構造のエントリを表すと仮定すると、複数のファイルをアトミックに更新する必要があり、これは不可能に思えます。

Googleドライブ経由でこれを達成する方法はありますか? また、ファイルをロックしていないファイルシステムで機能する同期の概念も検索しましたが、何も見つかりませんでした。

4

1 に答える 1

3

Google ドライブではすべて可能ですが、利用可能なドライブ プリミティブを使用して独自の同期ロジックをすべて構築する必要があります。また、更新の競合の解決にも対処する必要があります。これを行うには、etags と変更フィードも使用します。しかし、注意してください、それは自明ではありません。

ドライブを使用する必要がない場合は、Firebase を検討することをお勧めします。

于 2013-09-05T06:48:11.797 に答える