2015-07-30 1 views
0

У меня есть эта таблицаЯ использую cassandra эффективно?

CREATE TABLE user_info (
    userId uuid PRIMARY KEY, 
    userName varchar, 
    fullName varchar, 
    sex varchar, 
    bizzCateg varchar, 
    userType varchar, 
    about text, 
    joined bigint, 
    contact text, 
    job set<text>, 
    blocked boolean, 
    emails set<text>, 
    websites set<text>, 
    professionTag set<text>, 
    location frozen<location> 
); 

create table publishMsg 
(
    rowKey uuid, 
    msgId timeuuid, 
    postedById uuid, 
    title text, 
    time bigint, 
    details text, 
    tags set<text>, 
    location frozen<location>, 
    blocked boolean, 
    anonymous boolean, 
    hasPhotos boolean, 
    esIndx boolean, 
    PRIMARY KEY(rowKey, msgId)  
) with clustering order by (msgId desc); 

create table publishMsg_by_user 
(
    rowKey uuid, 
    msgId timeuuid, 
    title text, 
    time bigint, 
    details text, 
    tags set<text>, 
    location frozen<location>, 
    blocked boolean, 
    anonymous boolean, 
    hasPhotos boolean, 
    PRIMARY KEY(rowKey, msgId)  
) with clustering order by (msgId desc); 

CREATE TABLE followers 
(
    rowKey UUID, 
    followedBy uuid, 
    time bigint, 
    PRIMARY KEY(rowKey, orderKey) 
); 
  1. делаю 3 INSERT заявления в ПАРТИИ поместить данные в publishMsgpublishMsg_by_userfollowers таблицы.

  2. Чтобы показать одно сообщение, я должен запросить три ВЫБЕРИТЕ запрос на другой таблице:

publishMsg - чтобы получить опубликовать детали сообщения, где дается rowkey & msgId.

userInfo - получить fullName на основе postedById

followers - знать, то ли postedById следует за ту или иную тему или не

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

+0

Что такое «rowKey» в последователях? Является ли он последователем конкретного сообщения или последователем конкретного пользователя? –

+0

Ах, это должно быть пользователя. Когда вы говорите «Чтобы показать одно сообщение», зачем вам нужно знать последователей пользователя? –

+0

В 'followers'' rowKey' есть некоторая тема, за которой следует пользователь, чей идентификатор 'followBy'. Поэтому из этой таблицы я хочу знать, соответствует ли данный пользователь заданной теме или нет. – manish

ответ

0

Извините, что спросить об этом в ответе, но у меня нет комментариев для комментариев.

Игнорирование таблиц на данный момент, какую информацию необходимо запрашивать у вашего приложения? В идеале в Cassandra вам нужно будет выполнить только один запрос в одной таблице, чтобы получить данные, которые вам нужно вернуть клиенту. Вам не нужно будет выполнять 3 запроса, чтобы получить то, что вы хотите.

Кроме того, в таблице ваших подписчиков отсутствует поле orderkey.

+0

Одна информация, которая мне нужна, - это «показать сообщение публикации и следует ли я этому сообщению или нет», так как вы будете двигаться дальше? – manish

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