2014-10-20 5 views
10

У нас есть приложение, которое использует Cassandra для своей базы данных. Как мы должны внедрять изменения схемы в живой производственной среде.Как развернуть изменения в CQL-схеме Cassandra

В разработке мы просто продуваем базу данных и воссоздаем ее с помощью сценария 'database.cql', который хранится в управлении версиями. Это явно не решение в производстве.

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

Как решить ту же проблему в Кассандре?

ответ

2

Поскольку не существует существующего инструмента, я в конечном итоге написал его.

Он называется cql-migrate и предоставляет инкрементные обновления для развернутой схемы Cassandra.

[обновление] С момента написания этого, я нашел еще несколько вариантов: один для for rails и another for go

+2

Инструмент [migrate] (https://github.com/mattes/migrate), на который вы ссылаетесь, также работает как собственный CLI, поэтому вам не нужно использовать go. – 0x6e6562

2

Вот один я начал и использовали на некоторое время.

https://github.com/heartysoft/aedes

Он поддерживает несколько сред, и управления версиями. Поскольку мы основаны на Windows, это в основном powershell, но нет причин, чтобы сценарий bash не мог быть написан, чтобы сделать эквивалент. Скрипт powershell очень прост. Это требует Powershell v3 +. Использование довольно просто:

aedes.ps1 192.168.40.4 [-u username -p password -env dev] 

будет искать файлы схемы в папке .. \ schema. Ожидается, что файлы схемы будут иметь префикс n_. Файлы, специфичные для среды, имеют постфикс .env.cql. Таким образом, если файлы:

1_people.dev.cql 
1_people.prod.cql 
2_people_some_indexes.cql 
3_jobs.dev.cql 
3_jobs.prod.cql 
4_jobs_something_changed.cql 

И запустить его для прода, то те, с .prod.cql и без «окр» .cql будет применяться в порядке. Вы также можете указать $ start версию, которая может использоваться для указания, с чего начать приложение (например, если start задано как 3, то все, что будет с 1_ и 2_, будет пропущено).

Это довольно простой, но, похоже, работает неплохо. Мы просто загружаем Cassandra (не установлена) на «машину-аппликатор» (которая может быть вашей машиной, т. Е. Не является частью кластера) и имеет cqlsh для PATH для более простого приложения. У (и есть) есть планы для большего количества функций, но они работают хорошо, как сейчас.

+0

Ashic, это оказалось очень полезным. Благодарю. – sacha

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