通过多线程从数据库加载数据的最佳方法是什么
What is the best approach for loading data from DB by multiple threads
我在父子关系的数据库中有一些数据,其中我的 table 实际上代表了森林数据结构。
table 结构如下:
row1 parent: null
row2 parent:row1
row3 parent:row2
row4 parent:row1
现在,当我通过 JDBC 将此数据从数据库加载到我的数据结构时,我现在正在做的是:
1. load all row where parent is null [load all the root of trees]
2. Then for each child of each root load the child in a recursive manner.
3. But here all the trees are loaded one by one.
我想做的是,为每棵树生成一个线程,从而可以同时加载所有树。我可以与 JDBC 一起使用的任何框架或任何建议,请帮助。
您可以使用 hibernate 框架在任何数据库中操作(创建、删除、插入、更新..)数据,数据操作非常灵活
虽然这不能直接回答您的确切问题,但我鼓励您检查您的数据结构。您已经使用了 Adjacency List Model
,虽然最初实施起来很简单,但在查询时会打开一大堆丑陋的蠕虫病毒。
还有其他模型需要考虑,例如Nested Set Model
,树和子树的查询要容易得多。
两者在这篇文章中都有很好的解释:Managing Hierarchical Data in MySQL
虽然本文是特定于 RDBMS 供应商的,但可以轻松调整以适合您的系统。
我在父子关系的数据库中有一些数据,其中我的 table 实际上代表了森林数据结构。
table 结构如下:
row1 parent: null
row2 parent:row1
row3 parent:row2
row4 parent:row1
现在,当我通过 JDBC 将此数据从数据库加载到我的数据结构时,我现在正在做的是:
1. load all row where parent is null [load all the root of trees]
2. Then for each child of each root load the child in a recursive manner.
3. But here all the trees are loaded one by one.
我想做的是,为每棵树生成一个线程,从而可以同时加载所有树。我可以与 JDBC 一起使用的任何框架或任何建议,请帮助。
您可以使用 hibernate 框架在任何数据库中操作(创建、删除、插入、更新..)数据,数据操作非常灵活
虽然这不能直接回答您的确切问题,但我鼓励您检查您的数据结构。您已经使用了 Adjacency List Model
,虽然最初实施起来很简单,但在查询时会打开一大堆丑陋的蠕虫病毒。
还有其他模型需要考虑,例如Nested Set Model
,树和子树的查询要容易得多。
两者在这篇文章中都有很好的解释:Managing Hierarchical Data in MySQL
虽然本文是特定于 RDBMS 供应商的,但可以轻松调整以适合您的系统。