Вторичный индекс в Кассандре приведет к двум чтениям БД - PullRequest
0 голосов
/ 04 марта 2012

Предположим модель данных, в которой у пользователя есть посты в блоге. Каждый пост имеет уникальный заголовок и множество атрибутов.

У меня есть семейство столбцов "posts", в котором каждая строка выглядит следующим образом:

posts = {
    "yersterday" : { 
                     date : 03-04-2012
                     userID : abfe222234
                     tags : "beatles,paul"
                   }
        }

Я хочу проиндексировать сообщения по пользователю, поэтому у меня есть другое семейство обычных столбцов :

user_posts = {
      abfe222234 : {
                     yesterday : null
                     ....
                   }
             }

Эта модель появилась после многих исследований вторичной индексации в Кассандре, в которых я пришел к этим слайдам: http://www.slideshare.net/edanuff/indexing-in-cassandra и понял, что семейство Super Column все меньше и меньше используется.

Мой вопрос:

Если вам нужны все подробности о сообщениях пользователя, это означает, что мне нужно прочитать БД дважды: один раз для получения всех идентификаторов сообщений и один раз для получения всех подробностей сообщения для этих идентификаторов.

Чего мне не хватает?

Спасибо, Issahar.

редактирование:

Другой вариант - сделать «user_posts» Super CF и включить в него все данные, которые находятся внутри «записей».

плюсы: вам нужно будет получить все данные только один раз.

минусы: 1. Вы дублируете все свои данные. 2. Вы не можете искать один раз атрибут сообщения.

Что ты скажешь?

1 Ответ

1 голос
/ 04 марта 2012

Выглядит довольно просто для меня - вам действительно нужно выполнить два чтения базы данных, чтобы получить данные в этом случае. Для чего бы это ни стоило, большинству реляционных баз данных также необходимо выполнить два логических чтения, если только данные, которые интересуют пользователя, полностью не включены в индекс. Единственное отличие состоит в том, что в реляционной БД существует только одна сеть в обоих направлениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...