Разбивка на страницы модели в коллекции списков в cassandra

#cassandra #cassandra-2.0

#кассандра #cassandra-2.0

Вопрос:

Допустим, у меня есть таблица pagelabels, которая отслеживает страницу, помеченную пользователем с помощью метки —

Таблица, которая у меня есть, выглядит следующим образом —

 CREATE TABLE pagelabels (
    pageid text PRIMARY KEY,
    label list<string> // A list of label on this pageid
)
  

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

Ответ №1:

Вы не можете получить желаемые результаты, используя текущую модель данных. С текущей моделью данных, которая у вас есть, если вы выполняете запрос с помощью pageId, все метки будут возвращены сразу, поскольку они находятся в одном списке. Также не предусмотрена сортировка по времени вставки. Лучшей моделью данных могла бы быть

 CREATE TABLE pagelabels (
pageid text,
insertion_time timestamp,
label string,
label_attribute1 string,
PRIMARY KEY (pageid, insertion_time, label));
  

)

С помощью этой модели данных и с использованием подкачки из драйверов (например, смотрите Здесь для драйвера Java Datastax.