neo4j的使用感悟
来源:互联网 发布:淘宝网限制登录申诉 编辑:程序博客网 时间:2024/05/30 20:06
最近接到公司的一个需求:公司经常有批量产品要下线退市,但在退市之前要确保该批产品的物料中专用料库存已经消耗了。所谓专用料指的是除了这批产品,其他产品中没有使用该物料。公司物料数据库中数据是上级节点对应下级节点这种方式一条一条存入的,即1.0.0.1->1.1.0.1 ,1,0.0.1->1.0.0.2 ,1.1.0.1->1.2.0.1,如图方式
对于这种关系路径的方式非常适合neo4j来查下关系。
neo4j的两种运行模式(服务器模式和嵌入式模式),果断采用嵌入式模式,速度快10倍以上
嵌入式模式当时想了三种方案,先想的第一种,速度不行改为了第二种,最后采用了第三种:
我做的是批量查询,输入参数是100个1.0物料
方案一:查下批量物料1.0下面所有子节点,获取每个子节点对内路径数m ,该子节点与该批1.0物料路径数n;当m>n,表明该子节点在其他产品中有使用,不是专用料;m=n时,有可能是专用料,继续判断该节点对内的根节点集合是否都在该批1.0物料中,如果都在是专用料,否则不是专用料 。该方案耗时数小时 方案二:查下批量物料1.0下面所有子节点,获取每个子节点对内一级路径数m ,该子节点与该批1.0物料路径数n;当m>n,表明该子节点在其他产品中有使用,不是专用料;m=n时,有可能是专用料,继续判断该节点对内的根节点集合是否都在该批1.0物料中,如果都在是专用料,否则不是专用料 。虽然与一方案相比改动非常小,但耗时缩短到12分钟
方案三:查询1.0物料下所有的子节点,然后去重获得集合list,查询每个子节点对内一级路径的开始节点(即上一节点)集合,判断该集合是否都在list中,如果在是专用料,否则为非专用料。该方案耗时4秒。 三种方案虽然都是用neo4j的嵌入式模式做的,但耗时差距巨大,这再次提醒我在开发之前一定要先缕清思路,彻底了解业务,规划一条合理的代码逻辑。
- neo4j的使用感悟
- neo4j的使用一
- neo4j的使用二
- neo4j的使用
- 图数据库Neo4J的使用
- neo4j中索引的使用
- 图数据库Neo4J的使用
- Neo4j 的一些使用心得
- Neo4j的Rest接口使用
- 使用python的 neo4j.v1出现无法连接Neo4j问题
- neo4j使用
- Neo4j使用时的一些体会
- 图数据库之neo4j-jdbc的使用
- Neo4j的安装和简单使用
- Neo4j的工具安装及使用
- neo4j load csv 的使用问题总结
- 使用Neo4j Java Driver操作Neo4j
- 使用Neo4j Java Driver操作Neo4j
- 附件预览功能
- 跟我学习dubbo-Dubbo管理控制台的安装(3)
- hbase学习--3 使用Java API禁用和启用表
- 通过ajax上传formdata
- 28个Unix/Linux的命令行神器
- neo4j的使用感悟
- Faulty Odometer HDU
- 经典的站外seo方法和做法?
- 【转】后勤常用查询报告
- 数组
- zookeeper适用场景:配置文件同步
- Spring4+Springmvc+quartz实现多线程动态定时调度
- PHP 内核分析经验谈:工具篇
- Java算法之希尔排序