Постоянные структуры данных зависят от совместного использования структуры для повышения эффективности. Пример см. здесь.
Как я могу сохранить совместное использование структуры при сериализации структур данных и записи их в файл или базу данных? Если я просто наивно пройдусь по структурам данных, я сохраню правильные значения, но потеряю совместное использование структуры. Я хотел бы иметь возможность сохранять структуры данных с общими компонентами в файл, восстанавливать их и по-прежнему использовать большую часть структуры в восстановленных данных.
Ответ 2 · рейтинг 4 · swestrup
Я могу придумать два очевидных метода, и они связаны между собой.
- Не сериализуйте структуры, сериализуйте узлы. Таким образом, вы должны хранить сериализованную запись для каждого узла в приведенном вами примере дерева и преобразовывать все ссылки на узлы в имя ключа базы данных для узла. Это дает вам автоматический обмен, но требует многократных поисков в погоне за ссылками, чтобы загрузить структуру.
- Раскрасьте свои узлы по праву собственности, как в вашем примере. Имейте представление о том, к какой структуре "принадлежит" данный узел, и сериализуйте только те узлы в структуре, которые принадлежат этой структуре. Ссылки на узлы в других структурах заменяются ссылкой на эту структуру и рассматриваемый узел. Это позволяет загружать сразу всю структуру, но может привести к необходимости загрузки ВСЕХ связанных структур, если они сильно взаимосвязаны.
Выбор между этими вариантами зависит от того, для чего вы пытаетесь оптимизировать и какие связи вы ожидаете увидеть на практике.