Pramod Sadalage e l'influente articolo di Martin Fowler del 2003 su Evolutionary Database Design hanno avuto un grande impatto sul modo in cui mi sono avvicinato alla gestione delle modifiche dello schema in un database. Ho continuato a utilizzare DbDeploy e DbDeploy.net negli ecosistemi Java e .NET e ora utilizzo ActiveRecord migrations. Se trovi interessante il liquibase, ti consiglio di dare un'occhiata a questi strumenti.
Il Neo4j.rb documentation discute questo tipo di migrazione contro Neo4j.
Personalmente non ho usato uno strumento per gestire le migrazioni in Neo4j, ma ho scritto degli script di migrazione che hanno fatto cose come rinominare le proprietà, cambiare le etichette dei bordi o creare indici. Come un caso ad esempio l'uso, ecco un frammento da uno script Gremlin Groovy Ho usato per rimappare alcune chiavi esterne memorizzate in un grafico Neo4j e aggiornare un indice:
try {
projects.each { node ->
old_id = node.ref_id
new_id = old_to_new_ids[old_id]
index.remove('project', old_id, node)
node.ref_id = new_id
index.put('project', new_id, node)
}
} catch (Throwable e) {
println(e)
} finally {
g.shutdown()
}
Come di Neo4j versione 1.8, c'è un PropertyContainer che può essere utilizzato per i metadati del grafico. Sarebbe semplice usare questo contenitore per aggiornare una proprietà 'schema_version'. Il codice dovrebbe essere simile:
EmbeddedGraphDatabase db = new EmbeddedGraphDatabase(dbFilename);
Transaction tx = db.beginTx();
PropertyContainer properties = db.getNodeManager().getGraphProperties();
properties.setProperty("schema_version", 3);
tx.success();
tx.finish();
fonte
2013-03-11 21:30:31
Credito extra per DBDeploy! – critium