2012-07-14 19 views
8

SQLite dbを使用しているモバイルデバイス上のデータベースを更新しています。
誰も私にこれを達成するためのアイデアを提案することはできますか?
サーバーデータベース全体を読み取る必要はありません。単一の更新または複数の更新のためだけにデータベース全体を読み取っている間にデータ使用量が増加するためです。 更新は商品テーブルで行われ、価格フィールドのみがサーバ側で更新されます。サーバーデータベースが更新されたときにsqliteデータベースを更新します。

+0

クライアントとサーバーの間でデータを同期するには、RESTful APIが一般的です。同じ更新プログラムを要求している別のユーザーの更新プログラムをキャッシュできます。とにかく、データベースの読み込みに何が問題なのですか? – biegleux

+0

データベースを読み込むと、1つのフィールドの値を読むことができれば、データの使用量はそれほど少なくなりません。 – Sumit

+0

私は、更新の詳細を維持する別のテーブルを作成することを考えています。彼のデータベースを更新するための詳細..これは良い習慣だと思いますか? – Sumit

答えて

6

サーバーデータベースに更新されたデータがあるかどうかを定期的に確認するサービスをアプリケーションに定義することができます。サーバー側では、jsonオブジェクトを受け取るWebサービスを実装できます。このWebサービスでは、現在の日付、更新を確認するテーブル名、および目的に基づくその他の情報を入力します。 例を使って自分自身をよりよく説明します: 1)アプリ起動時にバックグラウンドサービスも開始されます。このサービスは、指定されたテーブルの新しい更新があるかどうかを確認するためにWebサービスを照会します(たとえば3分ごとなど)。 2)webserviceは、確認したいテーブル名とdatetimeをUNIXのタイムスタンプで受け取ることが好ましいでしょう。たとえば、2012-08-20 22:00:00の後にテーブル「products」の新しいレコードがあるかどうかを確認したいとします。この情報を使ってjsonオブジェクトとhttpリクエストを作成し、サーバーサイドに渡すことができます。 3)2012-08-20 22:00:00の後に追加または変更されているすべてのデータをjson配列に渡して、Webサービスが応答します。もちろん、サーバーデータベースでは、この情報を保存する必要があります(基本的に各レコードには最初の挿入/最後の変更の日時のフィールドがあります)。
4)ローカルのsqliteデータベースを更新できます。

おそらくこれはあまり効率的ではありませんが、機能します。

Andrea

関連する問題