У меня есть сложная и переменная иерархическая структура данных, которую я буду хранить локально из JavaScript. Основываясь на моих исследованиях, кажется, что IndexedDB — мой лучший выбор для решения.
Моя структура состоит из похожих элементов, каждый из которых имеет уникальный идентификатор и произвольное количество дочерних элементов. Может быть любое количество корневых элементов. Элементы могут быть символическими ссылками на другие существующие элементы. Я планирую сделать объектное хранилище с ключом по идентификатору, оттуда я рассмотрел несколько вариантов:
1) Я могу вставить корневые элементы напрямую. Это делает иерархические операции (удаление, клонирование, пересадка) и резервное копирование на сервер намного проще — на самом деле это тривиально; но также делает поиск более глубоких элементов очень дорогим и сложным для реализации.
2) Я могу вставить каждый элемент непосредственно в хранилище и использовать идентификаторы дочерних элементов для перестройки иерархии по мере необходимости. Это ускоряет поиск до O(log n), но воссоздает все иерархические сложности реляционной БД.
Если есть способ: а) создать индекс или запрос, который быстро перебирает всю структуру данных в IndexeDB или б) создать несколько ссылок на объект в IndexedDB
это значительно упрощает проблему, кроме того, я не уверен, как лучше всего подойти к этому.