Я пишу метод, который получает древовидную структуру и вставляет ее в базу данных, где каждая ветвь представляет собой другую таблицу базы данных. Например:
tree = {
"_id": "111",
"field1": "",
"field2": "",
"field3": {
"_id": "333",
"_parent_id": "111",
"field3_1": "",
"field3_2": "",
"field3_3": [
{
"_id": "1",
"_parent_id": "333",
"field3_3_1": ""
},
{
"_id": "2",
"_parent_id": "333",
"field3_3_1": ""
},
{
"_id": "3",
"_parent_id": "333",
"field3_3_1": ""
}
]
}
}
Должно соответствовать 3 таблицам: tree, field3 и field3_3 - которые имеют отношения к _id и _parent_id. Каждая ветвь может быть одним значением, таблицей или объектом, в основном дерево имеет динамическую структуру c, которая соответствует некоторой структуре данных в базе данных PostgreSQL. Я использую JDB c для вставки данных в базу данных. Каков наилучший способ вставки таких данных, когда возможно, что пользователь предоставит большие деревья с несколькими ветвями или несколькими значениями ветвей? Я думал о таком утверждении, как:
with first_insert as(
insert into sample(firstname, lastname)
values('fai55', 'shaggk')
RETURNING id
),
second_insert as(
insert into sample1(id, adddetails)
values
((select id from first_insert), 'ss')
RETURNING user_id
)
Но проблема возникнет, если внутренняя вставка будет работать с большими пакетными записями (field3_3 будет содержать 100 000 записей для каждой строки данных).
I Я уже реализовал метод, который принимает таблицу и вставки на одном уровне БД, используя PreparedStatement и executeBatch (), и он прекрасно работает. Что-нибудь вроде этого метода, доступного для деревьев?