#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.