powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сериализация ассоциативного массива в файл. Замена PropertyBag. NoSQL в VB6
5 сообщений из 5, страница 1 из 1
Сериализация ассоциативного массива в файл. Замена PropertyBag. NoSQL в VB6
    #39772733
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть программка - хранилище документов. В ней отображается дерево документов для навигации и текстовое поле для редактирования. Все документы сериализованы в PropertyBag. Где ключ привязан к узлу дерева. При сохранении хранилища, обходим в цикле все узлы дерева, собираем в PropertyBag, сохраняем его в файл. При чтении хранилища, читаем весь PropertyBag в байтовый массив, десериализуем, в цикле строим дерево с узлами, присваивая каждому узлу ссылку на текстовый документ. В общем все просто.

И работало отлично... Пока размер хранилища документов не подполз к 200 мегабайтам. Тогда программа начала тупить и виснуть. Потому как при чтении хранилища размер программы в памяти увеличивался с 10 мегабайт до 950 мб. Путь тупиковый оказался. Нельзя загружать весь файл PropertyBag в память. Нужно частями. Но сделать это невозможно со стандартным PropertyBag, нужна своя реализация. Может кто-то видел подобное хранилище в исходниках? Или может подкинуть идею как ее реализовать?

P.S. Конечно можно все переписать с использованием обычной БД Access или SQLite. Но это уже не так интересно. С точки зрения тренировки мозгов))
...
Рейтинг: 0 / 0
Сериализация ассоциативного массива в файл. Замена PropertyBag. NoSQL в VB6
    #39772780
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надеюсь, хранилище это - кластеризованное, не потоковое?

Ну первая мысль - это построение документа-индекса. Т.е. грубо - в левом окне свой документ, который хранит имена документов, информацию об их расположении в дереве документов, и ссылку на PropertyBag отдельных документов. Индекс может быть как отдельным хранилищем, так и первым (или там нулевым) элементом в общем файле.

Соответственно при переходе текущего выделения в левом окне на некий документ в правое окно по его ссылке подчитывается сам документ. При изменениях - корректируется документ, если изменения затрагивают индекс (скажем, меняется название или сам документ перемещается в дереве) - то корректируется и документ-индекс.
...
Рейтинг: 0 / 0
Сериализация ассоциативного массива в файл. Замена PropertyBag. NoSQL в VB6
    #39772782
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eoltсделать это невозможно со стандартным PropertyBag, нужна своя реализацияОпять же можно подумать о делении хранилища на несколько - эдакий аналог партиционирования. В оптимуме на SQRT(count), а там хоть до отдельного хранилища на каждый файл. А для компактности всё это зазиповать и работать с архивом как с compressed folder.
...
Рейтинг: 0 / 0
Сериализация ассоциативного массива в файл. Замена PropertyBag. NoSQL в VB6
    #39772812
ATM-TURBO 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используй OLE storage (StgCreateStorageEx), там файловая система внутри файла. Папки - IStorage, файлы IStream.
...
Рейтинг: 0 / 0
Сериализация ассоциативного массива в файл. Замена PropertyBag. NoSQL в VB6
    #39772844
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хранение множества файлов в OLE storage это пожалуй самый хороший вариант
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сериализация ассоциативного массива в файл. Замена PropertyBag. NoSQL в VB6
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]