1、企业版Neo4j的高可用模式,会对读写性能有哪些提升? 是否可理解为,企业版Neo4j的高可用不是分片模式,而是主从模式。即每个节点存储的数据相同。
答:理解准确,集群是主备模式,对于只读的事务,驱动可以自动路由到备机
2、 企业版Neo4j的高可用模式,对于应用层访问是集群提供统一访问接口(主节点),还是应用层访问各个节点。应用层是否需要判断访问节点是否存活,如果死掉了是否是应用层去切换成访问其余节点。
答:应用不需要判断主节点,驱动可以自动切换和实现
3、企业版Neo4j的高可用模式,对全量数据离线导入neo4j-import命令有什么影响。 比如:集群有3个节点,停掉一个节点初始化全量数据,导入成功后启动该节点,集群是否会出现内部数据同步。如果不出现,是否可以继续导入另外2个节点(导入操作是一台一台停机导入)。
答:
必须CORE集群,单节点无法做到负载均衡
集群模式不支持使用neo4j-import命令导入,neo4j-import支持单节点并且在服务停止情况下使用,如果在集群模式下停止服务情况下导入,集群需要重建;
如果只做一次初始化,正确的步骤是:
a、停止服务,导入到一个单节点
b、完成后按启动,检查数据是否正确
c、停止服务,进行数据备份
d、搭建新的两个从节点,将备份数据复制到从节点端,并进行restore
e、配置集群关系,并启动
如果是需要初始化100G数据,至少需要输入输出600G数据操作才能完成操作,其中备份和网络传输100G需要的时间较长(时间主要消耗到文件传输中)
如果经常性需要进行数据初始化并且数据量大,不建议使用集群模式,建议使用单节点。
如果经常性需要进行数据初始化但数据量少,建议使用在线批量插入的方式进行数据导入。
4、图库内存占比如何配置? 网上大多数说的都不对。
dbms.memory.heap.initial_size=XXXg
dbms.memory.heap.max_size=XXXg
dbms.memory.pagecache.size=XXXg
答:
第一种方式:neo4j-admin memrec --database=graph.db 会有相应的内存配置建议,请参考。
第二种方式:堆内存设置OS的总内存的30%,页面内存设置为OS的总内存的 50%。
经测试,第二种方式性能好于第一种方式。