2013-03-09 17 views
5

Niedawno byłem wystawiony na świat graficznych baz danych. To dość interesująca zmiana paradygmatu dla starego psa, takiego jak ja.Zarządzanie zmianami dla graficznych baz danych?

Całkiem niedawno pracowałem z liquibase i było to całkiem niezłe narzędzie do zarządzania bazami danych.

Tak więc, dwa światy zderzają się i zastanawiałem się, czy istnieją jakieś narzędzia, które umożliwiają zarządzanie zmianami w bazach danych wykresów. Szczególnie interesują mnie neo4j i orientdb.

Odpowiedz

2

Pramod Sadalage i wpływowy artykuł Martina Fowlera z 2003 roku na Evolutionary Database Design wywarły duży wpływ na sposób zarządzania zmianami w schemacie w bazie danych. Zacząłem używać DbDeploy i DbDeploy.net w Javie i .NET ekosystemach, a teraz używam ActiveRecord migrations. Jeśli znajdziesz ciekawy roztwór, polecam przyjrzeć się tym narzędziom.

Omówienie tego rodzaju migracji z Neo4j.

Osobiście nie używałem narzędzia do zarządzania migracjami w Neo4j, ale napisałem skrypty migracji, które zmieniły nazwę, zmieniono etykiety krawędzi lub utworzyłem indeksy. Jako przypadku przykładem zastosowania, oto fragment ze skryptu Gremlin Groovy Kiedyś przemapować kilka kluczy obcych przechowywanych na wykresie Neo4j i zaktualizować indeks:

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() 
} 

jak z Neo4j wersji 1.8, jest PropertyContainer które mogą być używane do metadanych wykresu. Byłoby łatwo użyć tego kontenera do aktualizacji właściwości "schema_version". Kod będzie wyglądał mniej więcej tak:

EmbeddedGraphDatabase db = new EmbeddedGraphDatabase(dbFilename);   
Transaction tx = db.beginTx(); 
PropertyContainer properties = db.getNodeManager().getGraphProperties(); 
properties.setProperty("schema_version", 3); 
tx.success(); 
tx.finish(); 
+0

Dodatkowy kredyt dla DBDeploy! – critium

8

Liquigraph istnieje teraz i choć nadal dość nowy, autor jest bardzo otwarci na informacje zwrotne i aktywnie pracuje nad projektem.

+0

upvoting w celu zwiększenia świadomości i zachęcić autora do dalszej pracy nad nim. – critium

0

Osobiście byłbym bardziej zainteresowany czymś opartym na interfejsach API TinkerPop. Myślę, że ten interfejs API jest obsługiwany przez wiele różnych baz danych, do czego jest przeznaczony. Wolałbym móc definiować moje etykiety wierzchołków, etykiety brzegowe, właściwości, indeksy itd. - nie próbując dopasować się do (wielkiej) technologii zaprojektowanej dla relacyjnych baz danych.

Powiązane problemy