Определение таблицы составных первичных ключей в рельсах для Кассандры
Учитывая следующую псевдо-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, однако документировано в коде, который можно найти здесь.