2011-10-28 5 views
1

スタートアップ時にリストアビューに値を表示するデータベースカーソルを設定するアプリケーションを開発しています。アプリケーションの実行中にデータベースのデータが更新され、カーソルが常に更新されています。もっと高価なものは何ですか?定数データベースクエリ、またはオブジェクト配列へのすべてのロード

ちょっとしたことですが、カーソルがデータベースの更新に遅れることがあり、数秒後までリストに古いデータが表示されることがあります。

スタートアップ時にオブジェクトの配列にすべてのデータ(約20〜約20文字とintの約10〜20セット)をロードし、クローズ時にのみデータベースに書き込む方が効率的でしょうか?

オブジェクトの配列を作成するデータベースクエリと比べて、どのような費用がかかりますか?

ありがとうございました!

答えて

0

「高価」という定義によります。あなたが帯域幅を参照している場合、定数クエリはより高価です。リモート・データベースへの各問合せはミリ秒単位で発生し、メモリー内のオブジェクトに対する問合せはナノ秒単位で行われます。

「高価」とは、ネットワークレイテンシを割り込む即時の処理速度を意味する場合、システムが動作時により多くの情報を調べているため、すべてをメモリにロードする方がコストが高くなります。

あなたのケースでは、あなたがアンドロイドを扱っているので、私はあなたの最善の策が2つの組み合わせであると言いたいと思います。任意の時点で作業しなければならないほど多くのデータをロードしたいと思うでしょう。データ検索に役立つ場合は、おそらくデータの隣接リストを作成することを検討することをお勧めします。適切な隣接リストシステムを使用すると、今すぐデータを扱うときにすぐに必要となるデータを照会することができます(これにより、ネットワーク遅延の影響が軽減されます)。

更新部分については、変更をキューに入れて非同期にアップロードする場合を除き、その遅延を実際には避けることはできません。ネットワークがどのように動作するかだけです。ただし、インターフェイスと非同期で作業できる場合は、変更をキューに入れて、ユーザーが次のタスクを続行している間にデータベースレベルで物理的に更新が行われるように指示することができます。

1

大量のデータ(数百万行)を除き、メモリにオブジェクトを作成するコスト(CPU単位)がDBクエリを実行する時間に比べてわずかになります。

関連する問題