保持neo4j更新生产MSSQL

时间:2022-12-12 18:03:04

I'm investigating the possibility of using neo4j to handle some of the queries of our java web application that simply take too long to run on MSSQL as they require so many joins on large tables, even with indexes implemented.

我正在调查使用neo4j处理我们的java Web应用程序的一些查询的可能性,这些查询只需要很长时间就可以在MSSQL上运行,因为它们需要在大型表上进行如此多的连接,即使实现了索引。

I am however concerned about the time that it might take to complete the ETL ultimately impacting on how outdated the information may be when queries.

然而,我担心完成ETL可能需要的时间最终会影响查询时信息的过时性。

Can someone advise on either a production strategy or toolkit / library that can assist in reading a production sql-server database (using deltas if possible to optimise) and updating a running instance of a neo4j database? I imagine that there will have to be some kind of mapping configuration but the idea is to have this run in an automated manner, updating the neo4j database with one or more sql-server table or view contents.

有人可以建议生产策略或工具包/库,它们可以帮助读取生产sql-server数据库(如果可能的话,使用增量来优化)并更新neo4j数据库的运行实例吗?我想必须有某种映射配置,但想法是以自动方式运行,用一个或多个sql-server表或视图内容更新neo4j数据库。

1 个解决方案

#1


0  

  1. The direct way to connect a MS SQL database to a Neo4j database would be using the apoc.load.jdbc procedure.
  2. 将MS SQL数据库连接到Neo4j数据库的直接方法是使用apoc.load.jdbc过程。
  3. For an initial load you can use Neo4j ETL (https://neo4j.com/blog/rdbms-neo4j-etl-tool/).
  4. 对于初始加载,您可以使用Neo4j ETL(https://neo4j.com/blog/rdbms-neo4j-etl-tool/)。
  5. There is however no way around the fact that some planning and work will be involved if you want to keep two databases in sync (and if the logic involved goes beyond a few simple queries) continiously. You might want to offload a delta every so often (monthly, daily, hourly, ...) into CSV files and load those (with CYPHER syntax determining what needs to be added, removed, changed or connected) with LOAD CSV.
  6. 但是,如果你想要保持两个数据库同步(并且所涉及的逻辑超出了一些简单的查询),那么就无法进行一些规划和工作。您可能希望每隔一段时间(每月,每天,每小时......)将增量卸载到CSV文件中,并使用LOAD CSV加载这些文件(使用CYPHER语法确定需要添加,删除,更改或连接的内容)。

Sadly enough there's no such thing as a free lunch.

可悲的是,没有免费的午餐。

Hope this helps, Tom

希望这会有所帮助,汤姆

#1


0  

  1. The direct way to connect a MS SQL database to a Neo4j database would be using the apoc.load.jdbc procedure.
  2. 将MS SQL数据库连接到Neo4j数据库的直接方法是使用apoc.load.jdbc过程。
  3. For an initial load you can use Neo4j ETL (https://neo4j.com/blog/rdbms-neo4j-etl-tool/).
  4. 对于初始加载,您可以使用Neo4j ETL(https://neo4j.com/blog/rdbms-neo4j-etl-tool/)。
  5. There is however no way around the fact that some planning and work will be involved if you want to keep two databases in sync (and if the logic involved goes beyond a few simple queries) continiously. You might want to offload a delta every so often (monthly, daily, hourly, ...) into CSV files and load those (with CYPHER syntax determining what needs to be added, removed, changed or connected) with LOAD CSV.
  6. 但是,如果你想要保持两个数据库同步(并且所涉及的逻辑超出了一些简单的查询),那么就无法进行一些规划和工作。您可能希望每隔一段时间(每月,每天,每小时......)将增量卸载到CSV文件中,并使用LOAD CSV加载这些文件(使用CYPHER语法确定需要添加,删除,更改或连接的内容)。

Sadly enough there's no such thing as a free lunch.

可悲的是,没有免费的午餐。

Hope this helps, Tom

希望这会有所帮助,汤姆