Какой формат лучше всего выбрать для хранения сборника норм внутри приложения: таблица Excel, JSON или база данных?

Как лучше всего хранить и быстро загружать справочник в формате Excel для использования в десктопном приложении на Python, учитывая разнообразие форматов таблиц и потребность в пополнении другими нормативами? Рассматривал варианты хранения в отдельных JSON-файлах, но возникли сомнения в их консистентности, а также создание базы данных на SQLite для развертывания приложения. Есть ли другие способы или методы, которые могли бы быть более подходящими, особенно с учетом моего ограниченного опыта?
Изображение к вопросу
  • 6 января 2024 г. 9:47
Ответы на вопрос 2
Выбор формата для хранения сборника норм внутри приложения зависит от множества факторов, включая размер данных, частоту обновления, сложность структуры данных, требования к безопасности, скорость доступа к данным, и т.д.

Вот какие характеристики и преимущества имеют разные форматы:

1. **Таблица Excel**:
   - Удобство для не-программистов: Excel позволяет пользователям легко просматривать и редактировать данные.
   - Поддержка формул и расчётов внутри документа.
   - Не самый быстрый вариант для чтения и записи программой.

2. **JSON**:
   - Легче для чтения человеком в сравнении с другими форматами обмена данными.
   - Удобно для хранения структурированных данных.
   - Подходит для небольших объемов данных.

3. **База данных (например, SQLite)**:
   - Масштабируемость: подходит для работы с большими объемами данных.
   - Поддержка сложных запросов и управлением транзакциями.
   - Требует знаний SQL для эффективного управления.

Рассмотрев преимущества, рекомендую:

Если ваши данные регулярно обновляются, нужно искать относительные ссылки, выполнять сложные запросы или предвидится увеличение объема данных, то база данных (например, SQLite) будет наилучшим выбором. SQLite будет относительно простой в изучении и интеграции с Python, вам понадобится знание основ SQL и использование модуля `sqlite3` или ORM (например, SQLAlchemy).

Если данные просты, нечасто изменяются, их объем не велик, то JSON может быть хорошим вариантом. Для работы с JSON в Python используются встроенные модули `json`.

Для работы с Excel в Python, лучше всего использовать библиотеки, такие как `pandas`, которая облегчает чтение и обработку данных из `.xlsx` файлов. Однако, если данных много, работа с Excel файлами может замедлить ваше приложение.

Важно также рассмотреть следующее:

- **Частота обновления**: Если данные часто меняются, их лучше хранить в БД, чтобы упростить процесс обновления.
- **Число пользователей**:Если ваше приложение будет пользоваться множество пользователей одновременно, то вам нужна БД, которая хорошо работает с конкурентными запросами.
- **Интеграция данных**: Если потребуется интегрировать вашу систему с другими сервисами, то стоит выбрать JSON или БД в зависимости от того, какие стандарты обмена данными приняты в вашей сфере.

В любом случае, несмотря на ограниченный опыт, обучение основам работы с базами данных будет полезным не только для текущего проекта, но и для вашего развития как специалиста в области программирования.
Первое, что в голову пришло - перелить это все в несколько разных JSON-файлов по разделам.
Работать с набором JSON файлов не практично. Стоит работать с СУБД.
Воообще, с начала стоит упорядочить все справочники, поработав над нормализацией данных . Нужно избавляться от неструктурированных данных, насколько это возможно.

Следом пришла мысль завести базу на SQLite со всеми нормами, и уже ее разворачивать при запуске приложения.
А это уже хороший выбор. Советую начать с неё.
Для поддержки JSON: https://sqlite.org/json1.html

Какой наилучший вариант для хранения справочника и быстрого парсинга оного для подгрузки в приложение?
Все справочники подгружать сразу при инициализации программы не нужно. Некоторые особо критичные данные можно подгрузить в начале, но только если они не занимают сотню МБ в памяти.

MongoDB точно не нужно выбирать на начальном этапе. Если на каком-то этапе будут чувствовать ограничения SQLite, то стоит обратить внимание на Postgres.
Похожие вопросы