3

MySQLを使用すると、次のようにテーブル「写真」を検索して一致するタイトルを探すことができます。

SELECT *
FROM photos
WHERE title LIKE '[string]%';

フィールド「タイトル」にインデックスが付けられている場合、これはかなり効率的に実行されます。タイトルフィールドにFULLTEXTインデックスを設定して、サブストリングマッチングを実行することもできます。

AmazonのDynamoDBのような写真のNoSQLテーブルに対して同様の検索を次の形式で実行するための優れた戦略は何ですか?

{key}-> photo_id、{value}-> {photo_id = 2332532532235、title='これはタイトルです'}

1つの方法は、各エントリの値の内容を検索して、一致するものを返すことだと思います。しかし、これは、特にデータセットが非常に大きくなる場合は、かなり非効率に思えます。

前もって感謝します。

4

1 に答える 1

1

Mongoシェルの例を紹介します。

MongoDBサイトの基本的なチュートリアルから:

j = { name : "mongo" };
t = { x : 3 };
db.things.save(j);
db.things.save(t);

これで、thingsというコレクションが作成され、2つのドキュメントが保存されました。

今、あなたが同等のことをしたいとします

SELECT * FROM things WHERE name like 'mon%'

SQLでは、これにより「mongo」レコードが返されます。

Mongo Shellでは、次のことができます。

db.things.find({name:{$regex:'mon'}}).forEach(printjson);

これにより、「mongo」ドキュメントが返されます。

お役に立てれば。

Atish

于 2012-01-20T23:10:03.577 に答える