ウェブサイト用のAndroidアプリケーションを開発しています。約100000のユーザーが多数います。カスタムユーザー検索のために、これらのユーザーをArraylistにフェッチする必要があります。これだけの量のデータをArraylistに保存することをお勧めします(特にAndroidの場合)。そうでない場合は、Sqliteデータベースを使用することを計画していますか?
3 に答える
どのタイプのリストも使用したくありません。
データベースは、大量のデータを保存および検索するように最適化されています。これらのユーザー名を ArrayList に保存する場合は、効率的に検索する必要があります。
そもそも、これはまずい考えのように思えます。1lakh+ のすべてのユーザー名のローカル コピーが必要な理由は何ですか? これは帯域幅のひどい浪費です! アプリケーションが検索しているユーザー名をデータベースに照会できるとよいでしょう。その後、クライアントにのみ結果を保存できます。
ex: SELECT * FROM `user` WHERE `name` LIKE "david"
クエリの結果のみを保存します。すべてのユーザーではありません。
データクラスを作成し、シリアル化可能にしてファイルストレージを使用します。データベースの使用でデータの取得と配置が別のタスクである場合は、ファイルオブジェクトの保存がデータ処理に適しているためです。
コンテンツを ArrayList に格納するのは得策ではないようです。データまたはアプリケーションによっては、'OutOfMemory' エラーが発生する場合があります。情報を SQLite データベースまたはファイルに永続化してみてください。
一方、10万のユーザーデータを一括ダウンロードして、デバイスで検索するためにローカルに保存する必要はありません. 検索を実行して検索結果のみを返すサービスを作成できます。これが可能であれば、それを ArrayList に格納することは悪くありません。arraylist のサイズが DVM で許容されるサイズを超える場合は、onLowMemory コールバックをオーバーライドして、リストの内容を空にすることができます。このようにして、アプリが強制終了されるのを防ぐことができます