通过多线程从数据库加载数据的最佳方法是什么

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 供应商的,但可以轻松调整以适合您的系统。