Моя программа рассчитывает следующее состояние на основе текущего состояния и приращения.Расчет представляет собой поиск в ширину первого поискового графа , охватывающий 100-1000 исследуемых узлов.
До сих пор у меня была отдельная структура данных для обхода (потому что если исходная некомпетентность в отношении SQLite), но сейчас хотелось бы использовать базу данных SQLite в памяти для состояния (потому что поддержание синхронизации двух структур данных доказалок черту, и компетенция в отношении SQLite несколько улучшилась, в частности, заявление WITH RECURSIVE было откровением).
Для моей предыдущей структуры данных я мог бы легко сделать копии состояния и вставить узлы исследуемого графа, но для SQLite это не кажется таким простым или легким.Вот варианты, которые, я думаю, могут работать:
- serialize / deserialize
- Работает почти так же, как моя старая структура данных.Однако память уже является проблемой, и полная база данных вряд ли меньше отдельной структуры.
- Первоначальное тестирование предполагает, что дистрибутив ActiveTcl не компилирует sqlite3 с включенной поддержкой сериализации.
- запись, откат, воспроизведение
- Запись транзакций из начального состояния (например, с использованием
trace execution
) на узел и последующее воспроизведение позже, вероятно, намного эффективнее, чем 1. Как на самом деле запись воспринимается как рискованная (см. мой предыдущий вопрос ), поэтому любые советы приветствуются.
Перед тем, как отправиться в недельное приключение в бесполезности, я выкладываюэтот вопрос в надежде, что кто-то еще имеет опыт ветвления базы данных SQLite.