曲やアルバムを音楽ジャンルでフィルタリングしたい場合、Cassandra を使用すると、実際には非常に簡単に行うことができます。ジャンルだけでなく、あらゆる種類のタグで実際にこれを行うことができるため、ジャンルの代わりに「タグ」という用語を使用します。
キーがタグである列ファミリーをレイアウトし、行にはそのタグを持つ項目ごとに 1 つのセルがあります。セル名には項目名または ID を使用でき、セル値は空にすることも、必要なその他のメタデータを保持することもできます。
phpcassa (Cassandra の元の Thrift RPC API に基づいています) を使用して、タグの下にアイテムを保存する場合は、次のように簡単です。
$cf->insert($tag, array($item->name, $item->metadata));
特定のタグを持つすべてのアイテムを取得するには、次のようにします。
$cf->get($tag);
優れた PHP CQL 3 ドライバーはまだ完成していませんが、CQL 3 を使用すると、次のようなことができます。
CREATE TABLE TAGS (
tag utf8,
itemid uuid,
PRIMARY KEY (tag, itemid)
);
次のようにタグ付けされたアイテムを追加します。
INSERT INTO TAGS (tag, itemid) values ("rock", "Led Zeppelin");
そして、次のようにして、タグ付きのすべてのアイテムを取得できます。
SELECT * FROM TAGS WHERE tag="rock";
1 つのタグの下に 100 万個のアイテムを簡単に保存できます。たとえば、最初の 2000 個を取得するのは非常に高速で、数ミリ秒しかかかりません。