В настоящее время я занимаюсь разработкой децентрализованного приложения с использованием blockstack.org.Прямо сейчас я управляю всем состоянием, используя их API для получения и размещения файлов.Т.е. это выглядит примерно так:
putFile(path: string, data: string) : Promise<void>
getFile(path: string) : Promise<string>
В настоящее время я отслеживаю файлы вручную и создал свой собственный индекс для запросов типа БД.Однако сейчас я добираюсь до места, где мне приходится совершать десятки таких вызовов для отдельных операций.В идеале я хотел бы хранить все свои индексы в БД, например, PouchDB, и выполнять поиск оттуда.Поэтому я думаю сделать следующее:
- Создать веб-работник, который извлекает PouchDB из хранилища (т. Е. Используя
getFile
) - Создание локальной версии БД
- Выполните двухстороннюю синхронизацию с локальной версией и выбранной версией.
- Сериализация БД в память и использование
putFile
. - Повторяйте каждые 30 секунд или около того.
- Если пользователь находится в автономном режиме, он продолжает добавлять и изменять информацию в локальном хранилище, а после того, как он снова подключается, он в конечном итоге синхронизируется с помощью двусторонней синхронизации пакетов.
У меня есть две части к этому вопросу:
- Это то, как другие люди синхронизируют базы данных, такие как PouchDB, с онлайн-ресурсами, которые не имеют адаптеров (например, хранилище Gaia в blockstack)?Или это может быть так же просто, как синхронизировать с чем-то вроде API Dropbox или S3.
- Как можно сериализовать БД, такую как PouchDB, в сериализованный объект JSON, а затем загрузить ее обратно в память?