この質問は非常に基本的ですが、私はアンドロイドのアプリにはSQLストレージを見ていない始めたと私は私の知る限り理解されるように、CRUD操作を行うためのAPIを公開App Engineのエンドポイントとサーブレットを発見した場合。私のために把握することは困難であることJavaのPOJOクラスと申し訳ありませんのSQLデータストア
事が格納されたオブジェクトのフォーマットであり、それは効率です。私はobjectify/gsonのようなライブラリを使ってオブジェクトがjsonに格納されていることを読んでいます。
は今、私は人のリストである属性友人を持っているクラスPersonがあるとします。 2人の異なる人物が同じ友達を共有する場合、それは2つの異なるjsonオブジェクトに格納され、情報が複製されます。私は友人のIDを保持するストレージとは別のクラスを作成する必要があります人のハッシュマップから/彼女の友人を見つける人を読み込むとき?しかし、これは、友人のない人を探したいだけであっても、WebサービスのすべてのPersonにそのマップを作成するよう要求することを意味します。
もう一つの方法は、サーバ側の「クエリ」を作る要求している人の友人オブジェクトを返すと、他の人の将来の「クエリ」のハッシュマップにそれらを置くことであろう。このようにして毎回データを転送することは少なくなりますが、毎日のリクエスト制限制限を使い果たすようになる可能性のあるWebサービスをもっと多く消費します。
もう一度申し訳ありませんが、初心者の質問です。私は、この問題を解決するためのあらゆる方向性、パターンを歓迎します。つまり、スペースストアオブジェクトの感覚を効率的に検索し、効率的に検索する方法は、Webサービスからのクエリとデータ転送量の意味でnosqlデータベース。
あなたのご意見ありがとうございましたが、重複した情報を格納できるSqlがない場合は、更新後の矛盾をどのように扱うべきですか?私が人Bを更新したとします。友人としてBを持っているすべての人を更新する必要がありますか?それほど効率的ではありません – MithPaul
NoSQLデータモデリングの古典的な複雑さを正確に指摘していると思います。人物のエンティティに人の友人のRef >を格納することによって、外部キーのリレーショナルデータベースの概念を模倣することができます。エンティティに関するObjectifyのドキュメントを参照してください。しかし、この場合は、すべての友人と一緒に人を取得したいときに、その人のすべての友人をフェッチする必要があり、これがパフォーマンスに重要な影響を与える可能性があります。それはあなたの正確なニーズに左右され、いくつか選択する必要があります。 Web上のNoSQL哲学、特にこのようなトレードオフに関する重要な文献があります。 –
Cloud Endpointsには、GCPが提供する「完全管理のMySQLデータベースサービス」であるCloud SQLを使用することもできます。 –