1

はじめに: まず、私の Android アプリを紹介します。レストランの特定の食べ物のレビューをユーザーに与えることができるその食べ物レビューアプリ。

アプリの流れ : 1. ユーザーがアプリを起動します。2. 近くのレストランのリストがポップアップ表示されます。3. ユーザーがレストランを選択します。4. 選択したレストランのメニュー一覧が表示されます。5. ユーザーは、レビュー/評価を表示したい食品を選択します。

これまでの進捗状況: Google Place API を使用して近くのレストランのリストを取得しました。しかし、API はレストランの食品 (メニュー) の検索可能なリストを提供しません。

問題: メニューは、レストランと一緒に、料理のレビューと共にデ​​ータベースに保存する必要があります。レストラン用のテーブルとレストランのメニュー用のテーブルを 1 つ作成すると、検索と検索の時間が非常に長くなります。

必要: 検索時間をマイクロ秒単位で短縮するには、データベースをどのように設計すればよいか教えてください。最小限の時間でレコードを取得するために、サードパーティのアプリを使用する必要がありますか?

できるだけ早く返信してください。

4

2 に答える 2

1

まず第一に、アプリから直接データベースに接続することはありません。アプリはクラックされる可能性があり、ユーザーはデータベースを自由に操作できます。アプリがやり取りする RESTful サービスを構築します。その RESTful サービスは、キャッシング レイヤーとデータベース永続化レイヤーの組み合わせによってバックエンドできます。

DB永続層の設計に関する限り。個人的には、レストランごとにオブジェクトを取得するだけで、そのレストランのメニュー データにアクセスできるように、NoSQL アプローチを選択するでしょう。これにより、必要に応じてレストランごとに異なるデータ構造を持つことができます。

ただし、リレーショナル DB を使用できるように各レストランのメニュー構造を正規化できると思われる場合は、遠慮なくそのアプローチを採用してください。適切に設計された DB スキーマは、複数のテーブルにわたってクエリを実行している場合でも、ニーズに対して非常にパフォーマンスが高くなるはずです。特に、DB の前にデータ キャッシュ (memcached など) を使用している場合。

現実には、最高の全体的な応答時間を得るという点で、メモリ内キャッシュが最大の資産になります。

于 2012-07-24T16:00:06.080 に答える
0

Android アプリは MySQL を使用しません。オーバーヘッドは圧倒的です。SQL を使用する場合は、SQLite を使用します。

組み込み API で利用できるデータ ストレージ オプションの詳細については、 http://developer.android.com/guide/topics/data/data-storage.htmlを参照してください。

于 2012-07-24T15:58:34.680 に答える