0

私が使用するテクノロジーは、GAE Datastore と Objectifyです。私のデータベースはイベントや場所に関連しています (Google カレンダーや Facebook イベントなどに似たデータベースを既に設計している専門家が助けてくれるかもしれません)。

IMO、イベントをすばやく読み込んで見つけられるようにデータベースを設計する必要があります。したがって、私が説明することが他の人が使用するパターンであるかどうかはわかりません...そして、それが良い考えであるかどうか教えていただければ...

秘訣は、データストア内のキーがアルファベット順に並べられると仮定することです(それを行うことが可能であると読んだと思います...)。

作成された新しいイベントごとにキー(文字列)を作成したいのですが、次のように構成されます:

[年_月_日] [時_分] [国_都市_ゾーン_ローカル] [イベント名]

データストアに格納されているキーの例:

[201304012200_fr_paris_quartierLatin_latinNightclub_superFiesta1] [201304022200_fr_paris_quartierLatin_latinNightclub_superFiesta2] [201304032200_fr_paris_quartierLatin_latinNightclub_superFiesta3] [201304042200_paris_latin_latinNightclub_fr

上記の例では、同じローカル (latinNightClub) で 4 つのイベントが連続して 4 日間発生しています。

ここで、50 か国で数百万のイベントがあり、 DAY_1 (2013/04/02) と DAY_2 (2013/04/04) の間に発生したイベントをすばやく読み込む必要があるとします。私の考えでは、20130402.....、20130403...、および 20130404.... で始まるキーのすべての結果を取得する必要があります。現在、すべてのキーがアルファベット順に並べられている場合、このソリューションはより速く可能。

質問 1 : データベースをこのように設計することは良い考えですか? そして、言及された技術でそれを行うことは可能ですか?

質問 2 : キーには、イベントが発生する国と地域に関する情報も含めました...なぜなら、ユーザーが「latinNightClub」で発生しているイベントだけが必要な場合は、すばやくフェッチすることもできるからです。結果(キーがアルファベット順に並べられているため...)それも良い考えですか?

私に関する限り、最初のステップを実行するのは難しいです。あなたの助けが本当に素晴らしいかもしれません! 私が完全に間違っている場合は、お気軽にリンクを教えてください。

よろしく、

4

1 に答える 1

2

これはひどい考えです。

必然的にイベントのプロパティを変更する必要があり、実際のスキーマではキー値を変更することはほぼ不可能です。Google の「自然キーと合成キー」 - この議論は従来の RDBMS で何百万回も再ハッシュされており、同じ教訓がここにも当てはまります。

検索しようとしているフィールドにマルチプロパティ インデックスを作成するだけです。問題が解決しました。

于 2013-04-03T15:55:59.627 に答える