Определение таблицы составных первичных ключей в рельсах для Кассандры

Учитывая следующую псевдо-cql структуру таблицы:

CREATE TABLE searches (
  category text, 
  timestamp timestamp, 
  no_of_searches int, 
  avg_searches double, 
  PRIMARY KEY((category, timestamp), no_of_searches)
);

и следующая модель Rails Cequel:

class Search
  include Cequel::Record

  # Table columns
  key :category,        :text
  key :timestamp,       :timestamp 
  key :no_of_searches,  :int
  column :avg_searches, :double
end

когда я пытаюсь синхронизировать модель с помощью:

rake cequel:migrate

выдается следующая ошибка граблей:

rake aborted!
Cequel::InvalidSchemaMigration: Existing partition keys category,timestamp differ from specified partition keys timestamp

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

Моя цель - получить предопределенную таблицу базы данных с ключами раздела, работающую с моделью rails. Любая помощь будет благодарна!

1 ответ

Решение

key Метод поддерживает хэш опций в качестве третьего параметра. Хэш параметров добавляет дополнительную поддержку определенному ключу, например order а также partitioning,

На основании данного определения таблицы это будет означать, что столбцы вашей таблицы будут выглядеть примерно так:

# Table columns
key :category,        :text,      { partition: true }
key :timestamp,       :timestamp, { partition: true }
key :no_of_searches,  :int
column :avg_searches, :double

К сожалению, это не документировано в Cequel README, однако документировано в коде, который можно найти здесь.

Другие вопросы по тегам