用户登录
用户注册

分享至

neo4j 性能调优

  • 作者: 大美人困兽之斗
  • 来源: 51数据库
  • 2020-09-28
比如说社区网站,用户之间的关系有朋友关系,亲友关系,同事关系等,把每个人看作是一个结点,用户与用户之间的关系看作是一条边,这样整个社区就像一张大的图一样。
用图论的方法查找用户之间的关系网是很方便的,查询速度也极快,它可以查出通过朋友可能认识的人(二度人脉),甚至三度人脉及多度人脉,还可以查出两个用户间最短路径。
如果是这样的需求用neo4j作数据库效果非常好



  1.对象关系的不匹配使得把面向对象的“圆的对象”挤到面向关系的“方的表”中是那么的困难和费劲,而这一切是可以避免的。
2.关系模型静态、刚性、不灵活的本质使得改变schemas以满足不断变化的业务需求是非常困难的。由于同样的原因,当开发小组想应用敏捷软件开发时,数据库经常拖后腿。
3.关系模型很不适合表达半结构化的数据——而业界的分析家和研究者都认为半结构化数据是信息管理中的下一个重头戏。
4.网络是一种非常高效的数据存储结构。人脑是一个巨大的网络,万维网也同样构造成网状,这些都不是巧合。关系模型可以表达面向网络的数据,但是在遍历网络并抽取信息的能力上关系模型是非常弱的。
虽然neo是一个比较新的开源项目,但它已经在具有1亿多个节点、关系和属性的产品中得到了应用,并且能满足企业的健壮性和性能的需求:
完全支持jta和jts、2pc分布式acid事务、可配置的隔离级别和大规模、可测试的事务恢复。这些不仅仅是口头上的承诺:neo已经应用在高请求的24/7环境下超过3年了。它是成熟、健壮的,完全达到了部署的门槛。
图:是指数据原理里的树集合成的网络。
neo4j是一个嵌入式,基于磁盘的,支持完整事务的java持久化引擎,它在图(网络)中而不是表中存储数据。neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图,可以扩展到多台机器并行运行。相对于关系数据库来说,图数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。neo4j重点解决了拥有大量连接的传统rdbms在查询时出现的性能衰退问题。通过围绕图进行数据建模,neo4j会以相同的速度遍历节点与边,其遍历速度与构成图的数据量没有任何关系。此外,neo4j还提供了非常快的图算法、推荐系统和olap风格的分析,而这一切在目前的rdbms系统中都是无法实现的。
由于使用了“面向网络的数据库”,人们对neo充满了好奇。在该模型中,以“节点空间”来表达领域数据——相对于传统的模型表、行和列来说,节点空间是很多节点、关系和属性(键值对)构成的网络。关系是第一级对象,可以由属性来注解,而属性则表明了节点交互的上下文。网络模型完美的匹配了本质上就是继承关系的问题域,例如语义web应用。neo的创建者发现继承和结构化数据并不适合传统的关系数据库模型:

软件
前端设计
程序设计
Java相关