Я пытаюсь узнать, как реализовать ленту в кассандре (например, в твиттере). Я хочу использовать широкие строки для хранения всех сообщений, сделанных пользователем. Я думаю о добавлении информации о пользователе или статистической информации в той же строке (количество сообщений, дата последнего сообщения, имя пользователя и т. д.).
Мой вопрос: имя, возраст и т. Д. «Имя поля» хранятся в столбце? Или эти широкие строки хранят только указанные имя столбца и значения? Я зря трачу место на диске? Я как-то компрометирую производительность?
Спасибо!
-- СОЗДАНИЕ ТАБЛИЦЫ
CREATE TABLE user_feed (
owner_id int,
name text,
age int,
posted_at timestamp,
post_text text,
PRIMARY KEY (owner_id, posted_at)
);
-- ВСТАВКА ПОЛЬЗОВАТЕЛЯ
insert into user_feed (owner_id, name, age, posted_at) values (1, 'marc', 36, 0);
-- ВСТАВКА ПОЛЬЗОВАТЕЛЬСКИХ ПОСТОВ
insert into user_feed (owner_id, posted_at, post_text) values (1, dateof(now()), 'first post!');
insert into user_feed (owner_id, posted_at, post_text) values (1, dateof(now()), 'hello there');
insert into user_feed (owner_id, posted_at, post_text) values (1, dateof(now()), 'i am kind of happy');
-- ПОЛУЧЕНИЕ ФИДА
select * from user_feed where owner_id=1 and posted_at>0;
-- РЕЗУЛЬТАТ
owner_id | posted_at | age | name | post_text
----------+--------------------------+------+------+--------------------
1 | 2014-07-04 12:01:23+0000 | null | null | first post!
1 | 2014-07-04 12:01:23+0000 | null | null | hello there
1 | 2014-07-04 12:01:23+0000 | null | null | i am kind of happy
-- ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ПОЛЬЗОВАТЕЛЕ - ОТПРАВЛЯЕТСЯ ТОЛЬКО ИНФОРМАЦИЯ О ПОЛЬЗОВАТЕЛЕ_AT=0
select * from user_feed where owner_id=1 and posted_at=0;
-- РЕЗУЛЬТАТ
owner_id | posted_at | age | name | post_text
----------+--------------------------+------+------+--------------------
1 | 1970-01-01 00:00:00+0000 | 36 | marc | null