加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

neo4j – 图形数据库的变更管理?

发布时间:2020-12-12 06:46:09 所属栏目:MsSql教程 来源:网络整理
导读:我最近接触过图形数据库世界.对于像我这样的老式关系狗来说,这是一个非常有趣的范式转变. 最近,我一直在修补liquibase,它是管理数据库的一个非常好的工具. 所以,两个世界相互碰撞,我只是想知道是否有任何工具可以对图形数据库进行类似liquibase的变更管理.我
我最近接触过图形数据库世界.对于像我这样的老式关系狗来说,这是一个非常有趣的范式转变.

最近,我一直在修补liquibase,它是管理数据库的一个非常好的工具.

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

解决方法

Pramod Sadalage和Martin Fowler在2003年7月7日发表的有影响力的文章对我如何处理数据库中的模式更改进行了重大影响.我继续在 Java和.NET生态系统中使用 DbDeploy和DbDeploy.net,现在使用 ActiveRecord migrations.如果您发现liquibase很有趣,我建议您查看这些工具.

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读