1

この質問に加えて:

Web フォト ギャラリーの適切な NoSQL データ スキーマ

MySQL では、アルバムのコンテンツを取得すると次のようになります。

SELECT photos.*, albums.album_title
FROM photos, albums_to_photos, albums
wHERE albums_to_photos.photo_id = photos.photo_id AND
      albums_to_photos.album_id = albums.album_id AND
      album_title = 'Family Vacation'

これは、アルバム「Family Vacation」からすべての写真のリストを取得します。

私が考えていた 1 つの方法は、「albums」というテーブルを作成し、すべての写真の写真 ID を値フィールドに格納することです。例えば:

{_id:'Family Vacation',
 values:'25, 512, 6172, 16923, 168253, 79185892'}

次に、これらの値のそれぞれに対して複数選択を実行して、写真 ID を実際の写真アイテムにルックアップします。これは良いアプローチですか?

4

2 に答える 2

0

Stur、私が間違っている場合は修正してください。ただし、列でフィルター処理すると、テーブル全体のスキャンが正しく実行されますか? もしそうなら、Ensnare が提示したソリューションは、より大きなデータでうまく機能すると信じています。

Ensnare、タグに dynamodb を使用すると仮定すると、写真 ID に整数のセットを使用できますが、1 行あたり 64kb の制限で作業する必要があります。

アルバム名を主キー、フォト ID を範囲キーとして使用して、セカンダリ インデックスを作成することもできます。

于 2012-02-07T13:39:58.610 に答える
0
{
   "_id": ObjectId("4f30153eecd1ab7c49ded566"),
   "album": "Family Vacation",
   "photo": "25"
},
{
   "_id": ObjectId("4f30153eecd1ab7c49ded565"),
   "album": "Family Vacation",
   "photo": "512"
}

各写真を個別に保存します。ある時点でタイトルなどの写真情報を追加したい場合は、管理が容易になります。ID を使用してアルバムを参照することも検討してください。次に、次のようなことができます。

->find(array( "アルバム" => "家族旅行" ))

于 2012-02-06T18:29:03.753 に答える