2014-10-20 12 views
10

Abbiamo un'applicazione che utilizza Cassandra per il suo database. Come dobbiamo distribuire le modifiche dello schema in un ambiente di produzione dal vivo.Come distribuire le modifiche a uno schema Cassandra CQL

In fase di sviluppo stiamo semplicemente facendo saltare il database e ricreandolo con uno script 'database.cql' mantenuto nel controllo della versione. Questo chiaramente non è una soluzione in produzione.

Nel mondo relazionale dovrei utilizzare una sequenza di script di aggiornamento e applicarli in ordine oppure utilizzare un tool per confrontare in modo interattivo i database di staging e produzione e apportare le modifiche dello schema appropriate.

Come posso risolvere lo stesso problema nel Cassandra?

risposta

2

Poiché non c'era uno strumento esistente, ho finito per scriverne uno.

Si chiama cql-migrate e fornisce aggiornamenti incrementali a uno schema Cassandra distribuito.

[update] Dopo aver scritto questo, ho trovato un altro paio di opzioni: una per for rails e another for go

+2

Lo strumento [migrazione] (https://github.com/mattes/migrate) a cui si fa riferimento funziona anche come una CLI nativa, quindi non è necessario utilizzare go. – 0x6e6562

2

Ecco quello che ho iniziato e sono state usando per un po '.

https://github.com/heartysoft/aedes

Supporta molteplici ambienti e delle versioni. Dato che siamo basati su Windows, è principalmente PowerShell, ma non c'è motivo per cui uno script di bash non possa essere scritto per fare l'equivalente. Lo script PowerShell stesso è estremamente semplice. Richiede Powershell v3 +. L'utilizzo è piuttosto semplice:

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

cercherà i file di schema nella cartella .. \ schema. I file di schema dovrebbero avere un prefisso n_. I file specifici dell'ambiente hanno un postfix .env.cql. Quindi, se i file sono:

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 

e farlo girare per prod, poi quelli con .prod.cql e nessun "env" .cql saranno applicati in ordine. Puoi anche specificare una versione di $ start che può essere utilizzata per specificare da dove iniziare ad applicare (ad esempio se start è specificato come 3, quindi qualsiasi cosa con 1_ e 2_ verrà saltata).

È piuttosto semplice, ma sembra funzionare piuttosto bene. Abbiamo appena scaricato Cassandra (non installato) sul "computer dell'applicatore" (che potrebbe essere la vostra macchina, cioè non parte di un cluster) e avere cqlsh sul PATH per un'applicazione più semplice. Aveva (e ha) piani per altre funzionalità, ma funzionava bene come al momento.

+0

Ashic, questo si è rivelato estremamente utile. Grazie. – sacha

Problemi correlati