database-design - 一个图形数据库中有多个 'databases'

标签 database-design neo4j graph-databases database-partitioning

我使用 GrapheneDB 来托管我的 neo4j 数据库 (db)。

问题

我有 N客户并且正在寻找自动分离他们的内容(他们独特的数据库)的方法,以便:

  • 它不重叠数据
  • 操作速度不受影响。

  • 选项 1

    由于我不熟悉自动创建新的neo4j服务器,并且希望保持简单,我的想法是附加一个独特的databaseId到每个 noderelationship在图中。

    那么显然我会考虑到这个限制来应用查询。

    选项 2

    另一个想法是创建一个根节点并为所有节点与根节点创建关系。

    问题

    我的问题是:
  • 哪个选项在速度方面更好,提高多少?
  • 这是一种可行的方法,即您是否看到优点/缺点?
  • 当我有大量数据( N --> /inf )时,它会影响速度吗?我的想法是它不会,因为您应用了 databaseId限制(例如在 noSQL 这工作得很好),但我不确定它是否也适用于 neo4j 图形数据库。
  • 最佳答案

    作为一般建议(因为我对您的用例一无所知),我会尝试为每个“逻辑数据库”(LDB)使用一组不相交的节点标签。这将使创建和访问属于特定 LDB 的节点变得容易。而且,如果您只在标签属于同一个 LDB 的节点之间创建关系,那么图遍历也将保留在同一个 LDB 中。

    Neo4j 可以通过标签快速获取节点,还可以创建索引,以便高效地找到标签/属性组合。

    关于database-design - 一个图形数据库中有多个 'databases',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42797965/

    相关文章:

    mysql - 是否应该在用户可以选择多个选项的结构中使用外键?如果是这样,怎么会这样?

    sql - 如何在Rails中联接三个表?

    java - 如何从 Neo4j 调整 lucene maxClauseCount?

    neo4j - Spring Data REST Neo4j 创建关系

    postgresql - 将网站和数据库放在不同的服务器上有什么缺点或安全问题吗?

    database - 使用多个数据库和每个数据库一个模式更好,还是一个数据库有多个模式更好?

    import - Neo4j导入工具-控制台输出含义

    graph-databases - 现有 Cassandra 键空间的 JanusGraph 自定义字符串顶点 ID

    graph - Gremlin : GroupBy vertices , 计数 > 1

    java - 删除泰坦图中的后代