当前位置: 首页 > news >正文

湖北网站建站系统哪家好河南网站公司

湖北网站建站系统哪家好,河南网站公司,美术教师网站建设心得体会,做兼职网站背景#xff1a;我们项目第一次部署图数据库#xff0c;要求我们把现有的业务数据以及关系上线第一时间初始化到Neo4j中。开发环境数据量已经百万级别。生成环境数据量更多。 我刚开始开发的时候#xff0c;由于对Neo4j的了解并没有很多#xff0c;第一想到的是用代码通用组… 背景我们项目第一次部署图数据库要求我们把现有的业务数据以及关系上线第一时间初始化到Neo4j中。开发环境数据量已经百万级别。生成环境数据量更多。 我刚开始开发的时候由于对Neo4j的了解并没有很多第一想到的是用代码通用组装create语句进行创建节点以及关系。 业务说明系统中有很多实体表每个实体表中有自己的数据不同实体有一张关系表进行维护。 我开发的思路是1.先将所有的表中数据取出来做为节点 2.根据关系表将这个数据的关系查出来之后组装语句将数据添加到Neo4j中。 具体代码如下Springboot项目版本2.2.5RELEASE pom.xml dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-neo4j/artifactId/dependency配置文件进行下面配置 spring:data:neo4j:uri: bolt://localhost:7687username: neo4jpassword: neo4j使用Java代码组装CQL语句用原生session进行 Neo4jConfig.java Configuration public class Neo4jConfig {Value(${spring.data.neo4j.uri})private String uri;Value(${spring.data.neo4j.username})private String userName;Value(${spring.data.neo4j.password})private String password;Beanpublic org.neo4j.ogm.config.Configuration getConfiguration() {org.neo4j.ogm.config.Configuration configuration new org.neo4j.ogm.config.Configuration.Builder().uri(uri).connectionPoolSize(100).credentials(userName, password).withBasePackages(com.troy.keeper.desc.repository).build();return configuration;}Beanpublic SessionFactory sessionFactory() {return new SessionFactory(getConfiguration());}Bean(neo4jTransaction)public Neo4jTransactionManager neo4jTransactionManager(SessionFactory sessionFactory) {return new Neo4jTransactionManager(sessionFactory);}接口入口Controller.java GetMapping(initDataToNeo4j)public void initDataToNeo4j() {service.initDataToNeo4j();}Service.java //节点数据按照自己的实际业务添加我这里对应的是所有表的数据因为我业务中所有表结果基本一样也即节点属性都一样。每个表的数据一个map,key是表名作为节点的标签 MapString, ListNodeData nodeDataMap; //关系数据将每一个表数据的关系作为RelationData实体 ListRelationData relationDatas;//数据组装完成后进行节点的创建 neo4jUtil.creatNode(nodeDataMap);//进行关系绑定 neo4jUtil.bindRelation(relationDatas);NodeData.java private String id;//属性id private String name;//属性名称 private String table;//作为节点标签RelationData.java //关系id private String id; //关系名称 private String relationName; //因为我这里的关系跨实体所以需要指定结束标签 private String endLableName;//因为我这里的关系跨实体所以需要指定开始标签 private String startLableName;//开始节点的值 private String startValue;//结束节点的值 private String endWhereValue;Neo4jUtil.java Component public class Neo4jUtil { Resource private Session session; /*** 删除标签下的节点(包括节点之间的关系)* param lableName* return*/public Integer deleteByLable(String lableName) {if (StringUtils.isEmpty(lableName)) {return 0;}String cypherSql String.format(MATCH (r:%s) DETACH DELETE r , lableName);Result query session.query(cypherSql, new HashMap(16));session.clear();return query.queryStatistics().getNodesDeleted();}//创建节点 public void creatNode(MapString, ListNodeData nodeDataMap) {if (nodeDataMap null) {return ;}for(String key:nodeDataMap.keySet()){ListNodeData data nodeDataMap.get(key);if (StringUtils.isEmpty(key)) {continue;}//表下没有数据的只创建一个没有属性的节点if (data null || data.isEmpty()) {String sql String.format(create (:%s),key);session.query(sql, new HashMap(16));continue;}//因为是全量导入可以先删除这个标签下的全部节点和关系,按照自己业务要求自行添加deleteByLable(key);for (NodeData nodeData:data) {//兼容中文和特殊符号String labels : String.join(:, key) ;;String id nodeData.getId();String name nodeData.getName();String property String.format({id:%s,name:%s} , id,name);String sql String.format(create (%s%s), labels, property);session.query(sql, new HashMap(16));}}}//绑定关系 public void bindRelation( ListRelationData relations) {if (relations null) {return;}for (RelationData relation:relations) {String id relation.getId();String relationName relation.getRelationName();String startLableName relation.getStartLableName();String endLableName relation.getEndLableName();String startValue relation.getStartValue();String endValue relation.getEndValue();String property String.format({id:%s,name:%s} , id,relationName);String cypherSql String.format(MATCH (n:%s),(m:%s) where n.id %s and m.id %s CREATE (n)-[r:%s%s]-(m),startLableName,endLableName,startValue ,endValue ,relationName,property) ;session.query(cypherSql, new HashMap(16));}} }之后执行controller接口进行数据抽取和导入Neo4j我开发的时候用的环境大约有7w个节点120w条关系。用本地Neo4j跑了两个多小时连服务器部署的(跨地区)跑了8个小时。。。。 太慢了 后来查资料说是create适合数据量小的时候用对于大量数据导入可以用neo4j-admin import 接下来改造用neo4j-admin import 参见Java初始化数据到Neo4j中(二)
http://www.dnsts.com.cn/news/178424.html

相关文章:

  • 做网站的公司现在还 赚钱吗wordpress禁用自动保存
  • 网站建设能做什么工作自己开网站需要什么
  • 龙岗建网站公司全渠道分销零售平台
  • 华企立方网站代发货网站建设
  • 制作网站商城phpcms 手机网站
  • 宁波网站建设公司推荐易企网jsp网站开发详解书籍
  • 中国住房和城乡建设部查询网站学生个人网页制作 设计具体代码
  • 团队如何分工做网站网站建设拍金手指排名贰拾
  • 合肥响应式网站建设wordpress网站地图生成插件
  • 深圳做网站600郑州设计公司招聘
  • 哪个网站的品牌特卖做的好教育网站开发背景
  • 网站建设 付款方式无棣住房建设局网站
  • 网站部署设计网站年费
  • 做网站的公司怎么赚钱吗南宁电商网站建设
  • 官方网站制作公司南充网站建设与维护
  • 织梦cms零基础做网站海安网站设计公司
  • 淮安做网站.哪家网络公司好河北省工程建设造价信息网
  • 网站建设项目验收方案买的网站模板怎么上传
  • 做网站怎么选取关键词网站建设中文百
  • 做网站投资太大 网站也没搞起来嘉兴网站推广排名
  • 学校网站建设需求文档自建房平台设计
  • html网站开发开题报告范文网站建设制作介绍河南
  • 网站开发项目流程设计少儿编程培训机构哪里好
  • 建个网站需要服务器吗建设公司官网制作平台
  • 徐州建设工程交易网站质量监督江苏省建设厅网站施工员证查询
  • 电子商务网站调研报告网站开发一般用什么开发语言
  • 有专门做食品的网站吗google关键词分析工具
  • 网站开发找哪家html模板在哪找
  • 网站建设综合实训总结做效果图有哪些网站
  • 适响应式网站弊端长春模板建站代理