2013-09-04 2 views
0

Я хочу создать систему для точки пользователя. Основными двумя точками этой системы являются точка и лог.Система пользовательских точек в Кассандре

Я хочу использовать Cassandra для хранения данных. Две причины:

  1. Cassandra обеспечивает функцию счетчика, которую я могу использовать для хранения точки.
  2. Журнал изменения точки может быть слишком большим, я должен думать о масштабе хранилища. Кассандру можно легко масштабировать.

Основная sturcture данные:

// row 
name: user_id, 
values: { 
    point: { 
     name: point, 
     values: 1000 
    }, 
    log: { 
     name: log, 
     values: { 
      log_timestamp: { 
       name: timestamp, 
       values: xxxx 
      }, 
      log_timestamp: { 
       name: timestamp, 
       values: xxxx 
      }, 
      log_timestamp: { 
       name: timestamp, 
       values: xxxx 
      }, 
      …… 
     } 
    } 
} 

Мой вопрос:

Есть ли какие-либо проблемы, если журнал достаточно слишком много?

ответ

1

@lifei

То, что вы хотите как-то таблица:

  1. ключ строки (клавиша раздел) = USERID
  2. 1 точка счетчика сбора журнала
  3. 1 с, как многие log_timestamp как возможно

Это действительно очень просто создать таблицу, подобную этой:

CREATE TABLE logs 
(
    userId: int, 
    log_timestamp long, //timestamp 
    value text, 
    PRIMARY KEY (userId,log_timestamp) 
); 

Это сгруппированная сущность (широкая строка) с максимум двумя миллиардами пар log_timestamp/value.

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

+0

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

+0

На уровне строк у вас есть «Atomicity», что означает, что мутация (вставка/обновление/удаление) в строке либо преуспевает, либо полностью завершается. Теперь, когда дело доходит до ** транзакций **, это немного сложнее. К счастью, Cassandra 2.0 поставляется с транзакциями с использованием CAS (Compare and Swap). Посмотрите ** [здесь] (https://issues.apache.org/jira/browse/CASSANDRA-5443) ** – doanduyhai

+0

Большое спасибо. – lifei

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

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