2014-10-20 20 views
10

Mamy aplikację, która używa Cassandry do swojej bazy danych. Jak wdrożyć zmiany schematu w środowisku produkcyjnym na żywo.Jak rozmieścić zmiany w schemacie Cassandra CQL

W trakcie opracowywania odkładamy bazę danych i odtwarzamy ją za pomocą skryptu "database.cql" przechowywanego w kontroli wersji. To wyraźnie nie jest rozwiązaniem w produkcji.

W świecie relacyjnym użyłbym sekwencji skryptów aktualizacyjnych i zastosowałem je w kolejności lub skorzystałem z tool, aby interaktywnie porównać bazy danych inscenizacji i produkcji i dokonać odpowiednich zmian w schemacie.

Jak rozwiązać ten sam problem w Cassandrze?

Odpowiedz

2

Ponieważ nie było istniejącego narzędzia, skończyło się na napisaniu jednego.

Nazywa się cql-migrate i zapewnia przyrostowe aktualizacje wdrożonego schematu Cassandra.

[aktualizacja] Ponieważ pisanie to, znalazłem kilka więcej opcji: jeden dla for rails i another for go

+2

Narzędzie [migrate tool] (https://github.com/mattes/migrate), do którego się odwołujesz, działa również jako natywny interfejs CLI, więc nie musisz używać go. – 0x6e6562

2

Oto jeden zacząłem i zostały przy użyciu na chwilę.

https://github.com/heartysoft/aedes

Obsługuje wiele środowisk i wersjonowanie. Ponieważ jesteśmy opartymi na Windowsie, jest to głównie powershell, ale nie ma powodu, dla którego skrypt bash nie mógłby być napisany, by zrobić odpowiednik. Sam skrypt powershell jest niezwykle prosty. Wymaga Powershell v3 +. Użycie jest całkiem proste:

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

będzie szukać plików schematów w folderze .. \ schematu. Pliki schematu powinny mieć przedrostek n_. Pliki specyficzne dla środowiska mają przyrostek .env.cql. Tak więc, jeśli pliki są:

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 

i uruchomić go do prod, to te z .prod.cql a nie „env” będzie .cql być stosowane w porządku. Można również podać wersję $ start, która może być użyta do określenia, od czego ma zacząć się składanie (np. Jeśli start jest określony jako 3, to wszystko z 1_ i 2_ zostanie pominięte).

Jest to dość proste, ale wydaje się działać całkiem dobrze. Po prostu ściągamy Cassandę (nie jest zainstalowana) na "maszynie aplikatora" (która może być twoją maszyną, tj. Nie jest częścią klastra) i ma cqlsh na PATH dla łatwiejszej aplikacji. Zrobiłem (i mam) plany na więcej funkcji, ale działa miło jak na razie.

+0

Ashic, to po prostu okazało się niezwykle przydatne. Dzięki. – sacha