neo4j - 图数据库的变更管理?

标签 neo4j graph-databases

我最近接触了图形数据库的世界。对于像我这样的老狗来说,这是一个非常有趣的范式转变。

也是最近,我一直在修改 liquibase,它是管理数据库的一个非常简洁的工具。

所以,两个世界发生了冲突,我只是想知道是否有任何工具可以对图形数据库进行类似 liquibase 的变更管理。我对neo4j特别感兴趣和 orientdb .

最佳答案

Pramod Sadalage 和 Martin Fowler 于 2003 年发表的有影响力的文章 Evolutionary Database Design对我在数据库中管理架构更改的方式产生了重大影响。我继续使用 DbDeploy Java 和 .NET 生态系统中的 DbDeploy.net,现在使用 ActiveRecord migrations .如果您觉得 liquibase 很有趣,我建议您看看这些工具。

Neo4j.rb documentation讨论了针对 Neo4j 的这些类型的迁移。

我个人没有使用过在 Neo4j 中管理迁移的工具,但我已经编写了迁移脚本,可以完成重命名属性、更改边缘标签或创建索引等操作。作为示例用例,这是我用来重新映射存储在 Neo4j 图中的一些外键并更新索引的 Gremlin Groovy 脚本的片段:

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

从 Neo4j 1.8 版开始,有一个 PropertyContainer 可用于图形元数据。使用此容器更新“schema_version”属性会很简单。代码如下所示:
EmbeddedGraphDatabase db = new EmbeddedGraphDatabase(dbFilename);        
Transaction tx = db.beginTx();
PropertyContainer properties = db.getNodeManager().getGraphProperties();
properties.setProperty("schema_version", 3);
tx.success();
tx.finish();

关于neo4j - 图数据库的变更管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15312760/

相关文章:

java - 因果集群。即使交易终止后数据也不在图表中

kubernetes - Neo4J:Pod记录Neo4j无效的用户名

java - 如何将这种图存储在 neo4j 中以便快速遍历?

neo4j - Levenshtein(编辑距离)算法在 native 图形数据库中的执行速度是否比 O(n*m) 更快?

neo4j - 如何从 Neo4j 服务器插件登录?

sql - 东方数据库 SQL : How to find vertices and create edges between them?

neo4j - 在 neo4j 中创建关系需要太长时间

lazy-evaluation - 在 Orient-DB 中延迟执行查询

neo4j - 图形数据库和社交网络分析指标

c# - 快速内存图形数据库