Как создать mutation_map для batch_mutate в Perl и Cassandra 1.0 - PullRequest
1 голос
/ 15 марта 2012

Пример сайта Cassandra Thrift по-прежнему относится к команде "batch_insert", которая, очевидно, устарела. В Cassandra 1.0 предполагается, что используется batch_mutate, для которого требуется передать $ mutation_map. У кого-нибудь есть рабочий пример того, как построить карту? Согласно документации API это должно выглядеть так:

batch_mutate(map<binary, map<string, list<Mutation>>> mutation_map, ConsistencyLevel consistency_level)

Однако мне кажется, что я не могу понять, как правильно построить карту, и я не могу найти ничего, описывающего, как это сделать в Perl, без каких-либо модулей-оболочек, например. Net :: Cassandra.

Любая помощь, например, ссылка высоко ценится.

1 Ответ

0 голосов
/ 15 марта 2012

Как вы можете сказать, карта имеет несколько слоев:

  • Внешний слой с ключами строки в качестве ключей для карты
  • Средний слой с именами семейств столбцов в качестве ключей для карты
  • Внутренний слой, представляющий собой список объектов Mutation

По сути, ключ строки => семейство столбцов => список мутаций.

Каждый из объектов Мутации во внутреннем слое должен установить одно из двух своих свойств:

  • Для вставок: column_or_supercolumn (объект ColumnOrSuperColumn)
  • Для удалений: удаление (объект удаления)

Если вы вставляете несколько столбцов в одну строку / cf, вам нужно иметь объект Mutation для каждого из них.

Cassandra :: Simple , кажется, использует batch_mutate в нескольких местах . Я бы порекомендовал попробовать использовать его и улучшить, а не создавать новый клиент. Сопровождающий довольно активно работает с проектом.

...