2014-12-20 3 views
2

Я хочу интегрировать Twitter/Instagram как Hashtag-System в webapp. Но у меня есть некоторые проблемы с технической концепцией, потому что система должна быть очень масштабируемой. Поэтому я буду использовать cassandra как базу данных.Apache Cassandra хорошо подходит для «хэштегов»

Как выглядит эффективную структуру базы данных для хранения Hashtags в базе данных Cassandra

+1

Вопрос, основанный на мнениях, поможет вам получить ответы на основе мнения. Это не сайт для этого партнера :) – Codeek

+0

Хорошо, тогда я изменю вопрос – cklar

ответ

2

Я хотел бы создать схему, как следующий:

CREATE TABLE tweet (
    user_id varint, 
    tweet_id timeuuid, 
    tweet_text text, 
    hashtags set<text>, 
    PRIMARY KEY (user_id, tweet_id) 
) WITH CLUSTERING ORDER BY (tweet_id DESC); 

CREATE INDEX idx_tweet_hashtags ON twitter.tweet(hashtags); 

Тогда вы можете оформить запросы следующим образом:

-- Latest tweets by hashtag 
SELECT * FROM tweet WHERE hashtags CONTAINS '#2' AND tweet_id > maxTimeuuid('2014-12-20 00:00+0000'); 

-- Latest tweets by user 
SELECT * FROM tweet WHERE user_id = 1 AND tweet_id > maxTimeuuid('2014-12-20 00:00+0000') ORDER BY tweet_id DESC; 

-- Latest tweets 
SELECT * FROM tweet WHERE tweet_id > maxTimeuuid('2014-12-20 00:00+0000') ALLOW FILTERING; 

Обратите внимание, что последний запрос выполняет «фильтрацию», поэтому он может быть «медленнее», чем другие.

Смежные вопросы