2016-04-15 3 views
0

Я пытаюсь изучить модели Cassandra, посмотрев на Twissandra project.Apache Cassandra - Follow/Unfollow relationship на примере Twissandra

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

Кроме того, с базовыми знаниями о моделировании Cassandra, которые у меня есть в настоящее время, мне кажется, что практически невозможно удалить твиты с временной шкалы. Вот модель от Twissandra:

CREATE TABLE timeline (
    username text, 
    time timeuuid, 
    tweet_id uuid, 
    PRIMARY KEY (username, time) 
) WITH CLUSTERING ORDER BY (time DESC) 

Поскольку tweet_id не является ни одним из ключевых разделов, ни столбец кластеризации невозможно запросить она и удалить запись.

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

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

ответ

0

Поскольку tweet_id не имеет ключа раздела или столбца кластеризации, его невозможно запросить и удалить запись.

CREATE TABLE timeline (
    username text, 
    tweet_id timeuuid, 
    tweet_content text 
    PRIMARY KEY (username, tweet_id) 
) WITH CLUSTERING ORDER BY (tweet_id DESC) 

выше модель данных должна сделать трюк

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

Вы должны денормализовать и создать еще одну таблицу

CREATE TABLE followed_users_tweets(
    username text, 
    followed_user text, 
    tweet_id timeuuid, 
    tweet_content text 
    PRIMARY KEY ((username,followed_user) tweet_id) 
) WITH CLUSTERING ORDER BY (tweet_id DESC); 

Когда вы неследовать "John Doe" и Ваше имя пользователя "Helen ГУП":

DELETE FROM followed_users_tweets WHERE username='Helen SUE' AND followed_user='John DOE'

+0

Спасибо за Ответить. Изменение tweet_id на timeuuid сделало бы трюк, но я должен был бы выбрать все твиты-недопустимые пользовательские tweet_ids, а затем выпустить удаление на основе этих tweet_ids. Если у пользователя слишком много твитов, это может быть проблемой. Каков будет прецедент для таблицы follow_users_tweets, которую вы предложили? Мне нужно как-то удалить твиты со шкалы времени, так что опять же, мне нужно будет выбрать все твиты от пользователя, которые я хочу отменить, а затем выпустить удаление в таблице временной шкалы с этими идентификаторами. Я не уверен, что это сработает. – Milan

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

  • Нет связанных вопросов^_^