Модель данных Кассандры - PullRequest
       1

Модель данных Кассандры

2 голосов
/ 11 декабря 2011

Я работаю над POC, чтобы продемонстрировать, как работает Кассандра.Я взял Digg в качестве примера.Я хотел создать модель данных, которая позволит мне:

1) Добавить ссылки 2) Добавить ссылку в список избранного пользователя.3) Прикрепленные предопределенные теги к ссылкам

Я создал два семейства столбцов:

  1. Ссылки

    • URL-адрес является ключом
      • id (сгенерированный uuid)
      • пользователь (который его добавил)
      • favCount (нет пользователей, которым понравилась ссылка)
      • upCount (нет пользователей, которым понравилосьэто)
      • downCount (нет пользователей, которым это не понравилось)
  2. UserFavs

    • ключ
      • id (столько идентификаторов, сколько выбрал пользователь)

Это прекрасно работает для требований № 1 и № 2выше, но когда я прихожу к # 3, становится сложнее.Я могу добавить такие теги, как «java», «languages», «Architecture» в качестве имен столбцов с пустыми значениями в семействе столбцов «Links».Но запрос займет много времени, скажем, если бы я должен был найти все ссылки, которые были помечены как 'java'.

Может кто-нибудь подсказать, как это можно реализовать.

Если мне не ясен вопрос, пожалуйста, дайте мне знать.

Спасибо, Кумар

1 Ответ

3 голосов
/ 11 декабря 2011

Вы можете создать вторичный индекс, т. Е. Семейство столбцов, привязанное к тегу.Каждая строка содержит все ссылки для этого конкретного тега.Обратите внимание, что это может привести к очень широким строкам (то есть с большим количеством столбцов), каждый из которых будет храниться на одном узле кассандры.Возможно, вы захотите схему их разделения, если они станут очень большими.

См. http://www.datastax.com/docs/0.7/data_model/cfs_as_indexes

или http://pkghosh.wordpress.com/2011/03/02/cassandra-secondary-index-patterns/

или google cassandra secondary index

...