Lio*_*erg 2 partitioning neo4j
是一种在neo4j分区之间进行物理分离的方法吗?意味着以下查询将转到node1:
Match (a:User:Facebook)
Run Code Online (Sandbox Code Playgroud)
此查询将转到另一个节点(可能托管在docker上)
Match (b:User:Google)
Run Code Online (Sandbox Code Playgroud)
情况就是这样:我想在neo4j下存储几个客户的数据,希望很多.现在,我不确定什么是最好的设计,但它必须满足几个条件:
换句话说,当我拥有更多客户端时,将所有内容存储在1个节点之下,在未来的某个时刻,我认为会有可扩展性问题.
顺便说一句,几乎没有集群?
还有什么分区优势为每个客户创建不同的Label?例如:Users_client_1,Users_client_2等
简答:不,没有.
Neo4j具有高可用性(HA)集群,您可以在许多计算机上复制整个图形,然后快速为该副本提供许多请求,但它们不会对一个非常大的图形进行分区,因此其中一些存储在此处,其他一些部分,然后通过一个查询机制连接.
更详细的答案:图形分区是一个难题,需要不断研究.您可以在维基百科上阅读有关它的更多信息,但要点是,当您创建分区时,您将图形拆分为多个不同的位置,然后需要处理跨越分区的关系的复杂性.跨越分区是一项昂贵的操作,因此分区时的真正问题是,如何进行分区,以便在查询中跨越分区的需求尽可能不频繁?
这是一个非常难的问题,因为它不仅取决于数据模型,还取决于可能发生变化的访问模式.
这是多么糟糕的情况(报价被盗):
通常,图分区问题属于NP难问题.这些问题的解决方案通常使用启发式算法和近似算法得出.[3] 但是,均匀图分区或平衡图分区问题可以显示为NP完全逼近任何有限因子.[1] 即使对于特殊的图形类,例如树和网格,也不存在合理的近似算法,[4]除非P = NP.网格是一个特别有趣的案例,因为它们模拟了有限元模型(FEM)模拟得到的图形.当不仅近似组件之间的边缘数量,而且还有组件的大小时,可以表明这些图形不存在合理的完全多项式算法.
不要给你留下太多的厄运和阴郁,很多人已经划分了大图.Facebook和Twitter每天都会这样做,因此您可以在Twitter上阅读有关FlockDB的内容,或利用相关的Facebook研究.但总结并切入追逐,这取决于您的数据和大多数人分区设计自定义分区策略,这不是软件为他们做的事情.
最后,其他架构(如Apache Giraph)可以在某些意义上进行自动分区; 如果你在hadoop上存储一个图形,并且hadoop已经在一个集群中自动扩展,那么从技术上讲,这就是为你自动划分你的图形.很酷,对吗?好吧......很酷,直到你意识到你仍然需要在整个地方执行图遍历操作,由于所有这些分区都必须遍历,你通常会尝试的性能情况,这可能表现得非常糟糕.首先避免明智地划分.