2014-01-03 4 views
-1

Я думаю об использовании этой STL-подобной древовидной библиотеки для C++ http://tree.phi-sci.com/ для хранения иерархических данных (подумайте об организации диаграммы).Сделать постоянную копию дерева (C++)

В моем случае дерево содержит только структуру, «полезная нагрузка» каждого узла хранится в другом месте. Таким образом, это, вероятно, закончится как tree<int> или tree<simple_class_containing_a_couple_of_ints>

Я хотел бы найти лучший способ сохранить дерево. Чтобы быть более конкретным, я хотел бы найти лучший способ сохранить дерево в базе данных SQL, чтобы он мог быть загружен обратно в приложение при запуске.

Итак, мой вопрос: как я могу сохранить дерево, содержащееся в контейнере tree.hh, в базу данных SQL?

Примечание: нет необходимости хранить его в виде древовидной структуры в базе данных (то есть нет необходимости в вложенном наборе, списке смежности). Нет необходимости запрашивать базу данных, поскольку все дерево будет загружено в память.

UPDATE:

Я нашел этот класс в качестве альтернативы tree.hh здесь: http://stlplus.sourceforge.net/stlplus3/docs/ntree.html пока не могу комментировать какие-либо разницы в производительности, но это в основном реализует то, что мне нужно, и имеет класс настойчивости (жаль нет ссылка как недостаточно репутация), что я могу сбросить до BLOB. Я еще не вступил в это как ответ, потому что меня все еще интересуют любые альтернативные решения.

+0

Hi. Какой у Вас вопрос? – utnapistim

+0

Как я могу сохранить дерево, хранящееся в контейнере tree.hh, в базу данных SQL? Спасибо. Я добавил это в основной текст для ясности. – iwbnwif

+0

Почему вы хотите использовать SQL, если нет необходимости запрашивать базу данных ??? –

ответ

0

Я бы удержал каждый узел в одной таблице SQL (одна строка на узел) и, возможно, каждый узел -> отношение сестры в другой таблице. Я не уверен, что SQL - это лучший способ сохранения. Вы можете использовать JSON.

+0

Спасибо, это была моя мысль. Если в таблице есть столбец для идентификатора узла и столбец для родительского идентификатора, я могу восстановить дерево. Но для каждой строки мне пришлось бы «найти» родителя в дереве, чтобы я мог добавить ребенка, и это кажется неэффективным. Есть ли способ лучше? – iwbnwif

Смежные вопросы