1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/WangShan010-SQLiteFileMana

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Статические ресурсы и другие функции бэкенда.

Код полностью открыт, что позволяет другим разработчикам на основе основной версии проводить вторичную разработку, расширять бизнес-функции и модули безопасности данных, но при этом необходимо сохранить подпись автора.

WinUI-win32-x64.exe — это панель управления для работы с библиотекой ресурсов, разработанная для администраторов. Она основана на Electron и позволяет напрямую вызывать стандартные диалоги Windows «Выбор файла» и «Выбор папки», что упрощает работу пользователей. Панель требует установки на локальный компьютер. В дальнейшем планируется разработка новых функций, исправление ошибок и периодическое обновление. Код является закрытым. Каждые два месяца выпускается бесплатная версия для использования, также доступна платная профессиональная версия.

Если вы являетесь программистом с базовыми навыками разработки, то после изучения исходного кода вы сможете использовать все функции, вызываемые через открытые серверные интерфейсы.

Раздел 3. Выбор технологий

Технология Название Официальный сайт
PKG NodeJs кроссплатформенный инструмент для упаковки программ https://www.npmjs.com/package/pkg
NodeJs NodeJS V16.14.2+ http://nodejs.cn/
Koa2 Web-фреймворк для разработки бэкенда https://koa.bootcss.com/
SQLite3 Лёгкая локальная база данных http://www.sqlite.org/

Раздел 5. Руководство по разработке

  1. Руководство по разработке: cnpm install pkg -g

  2. Тестовая платформа: Производительность тестирования: SQLiteFileMana\Projects\Server Платформа: Система: Windows 10 Аппаратное обеспечение: i7-10875H, M2 1T твердотельный накопитель Материалы: DEM-wordHeights (3,11 ГБ; 2,800,297 файлов) DOM-google (1,39 ГБ; 3086 файлов)

  3. Создание базы данных и тестирование производительности: В коде было проведено множество оптимизаций для операций с базой данных SQLite, включая агрегацию SQL-запросов, использование транзакций и многопоточную оптимизацию. Однопоточная вставка в среднем составляет 1 тысячу файлов в секунду, а многопоточная — 6 тысяч файлов в секунду.

На данный момент основным узким местом, ограничивающим производительность, является скорость чтения и записи данных на физическом жёстком диске.

Тестовая платформа Тестируемый элемент Результат
WinRAR 131 584 .terrain файла местности; формат .rar, метод сжатия 81 с
Server 131 584 .terrain файла местности; 4 потока, создание базы данных 32 с
  1. Чтение и тестирование производительности: Файлы сохраняются в SQLite, а затем считываются. Возникает вопрос, будет ли потеря производительности при большом количестве файлов? Здесь проводится сравнение с Nginx, который считается самым мощным HTTP-сервером в отрасли. База данных уже имеет индексы для часто используемых полей, и тесты показывают, что производительность практически не отличается от традиционного метода хранения больших объёмов данных в виде хешированных файлов на сервере, таком как Nginx. Таким образом, нет необходимости беспокоиться о проблемах с производительностью системы.
Тестовая платформа Тестируемый элемент Результат
nginx Однопоточный, 1W запросов get, данные 2kb .terrain 9,1 с
Server Однопоточный, 1W запросов get, данные 2kb .terrain 10,8 с
Тестовая платформа Тестируемый элемент Результат
nginx 50 одновременных запросов, 200 запросов get 6,1 с
Server 50 одновременных запросов, 200 запросов get 5,2 с
Тестовая платформа Тестируемый элемент Результат
Server Глобальные спутниковые снимки MapBox уровня 0–12, 83,2 ГБ, всего 2236 000 файлов ресурсов, случайное чтение одного фрагмента 7 мс

Раздел 6. Сценарии применения

  1. Управление географическими данными в Cesium: При разработке Cesium географические данные обычно отображаются в виде фрагментов: Изображения карт: предварительно созданные фрагменты карт определённого размера хранятся на сервере для быстрого ответа на запросы клиентов. Данные рельефа: исходные файлы данных рельефа обрабатываются в файлы .terrain. 3D-тайлы: формат LOD для моделей в трёхмерных сценах. После завершения разработки программного обеспечения разработчики сталкиваются с суровой реальностью: после переноса, резервного копирования и миграции этих миллионов разрозненных географических данных становится очень сложно.

Например, перенос 2,5 ГБ глобальных данных .terrain, состоящих из 2 800 297 файлов со средним размером 8 КБ каждый, занимает около 65 минут. Даже если использовать программное обеспечение WinRAR для сжатия данных перед переносом, это всё равно займёт минимум 38 минут, и после перемещения потребуется время на распаковку.

Используя программу SQLiteFileMana, можно потратить 38 минут на создание индекса для разрозненных файлов, получив пакет ресурсов размером 2,6 ГБ. Затем можно перенести данные на любую машину за 5 секунд.

  1. Шифрование данных для обеспечения безопасности: Во многих небольших проектах WebGIS при развёртывании часто размещают высокоточные фрагменты карт и 3Dtiles непосредственно на Nginx. Часто данные нескольких проектов размещаются на одном облачном сервере, где администраторы могут получить доступ к исходным данным. Это может привести к проблемам с безопасностью данных.

Базы данных SQLite можно защитить паролем. Если связать базу данных с паролем и кодом сервера, даже если пакет ресурсов будет скопирован, не нужно беспокоиться о потере или утечке данных.

Раздел 7. Прочее WangShan010 — участник проекта и создатель.

Пожалуйста, оцените проект, поставив звезду в правом верхнем углу, и поделитесь им. Ваша поддержка — это главная движущая сила открытого исходного кода.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Храните множество небольших ресурсных файлов с жёсткого диска в полях типа BLOB в SQLite и публикуйте HTTP-сервис для доступа к ним. Развернуть Свернуть
GPL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/WangShan010-SQLiteFileMana.git
git@api.gitlife.ru:oschina-mirror/WangShan010-SQLiteFileMana.git
oschina-mirror
WangShan010-SQLiteFileMana
WangShan010-SQLiteFileMana
master