2016-07-04 6 views
3

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

Он содержит

user_id,post_id,post_data,comments_details,likes_details, comments_count and likes_counts.

Я взял user_id and Post_Id в Partitioning key

Я использую Пользовательский тип данных для хранения данных в формате JSON, который содержит list of map types для comments_details поле

{ 
    "comments_details": [ 
    { 
     "created_time": "2016-06-29T09:05:06+0000", 
     "from": { 
     "name": "user_1", 
     "id": "14465295694" 
     }, 
     "message": "Hello How are you", 
     "can_remove": false, 
     "like_count": 1, 
     "user_likes": true, 
     "id": "174022481_674622404" 
    }, 
    { 
     "created_time": "2016-06-29T09:05:14+0000", 
     "from": { 
     "name": "user2", 
     "id": "144652387" 
     }, 
     "message": "hjhjh", 
     "can_remove": false, 
     "like_count": 0, 
     "user_likes": false, 
     "id": "17402248_6752892070" 
    } 
    ] 
} 

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

Пожалуйста, помогите ..

ответ

2

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

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

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