Вопрос или проблема
В нашем учреждении у нас есть большая база данных наблюдательных данных, состоящая из осадков, температуры, высоты и множества других переменных, поступающих из различных проектов и в различных форматах. В настоящее время у нас это хранится в одной папке, каждая выборка данных имеет свою подпапку. Из-за объема данных возникла необходимость в хранении и извлечении данных на основе их метаданных (версия, охватываемые годы, переменная, разрешение и т.д.) в новом архиве.
Мы ищем лучшее приложение для реализации этого, основываясь на наших требуемых рабочих процессах загрузки/извлечения, которые перечислены ниже.
A) Загрузка данных в архив
Следующий рабочий процесс — это то, что мы хотели бы внедрить для загрузки нового набора данных в архив:
- Пользователь подготавливает данные (в любом формате) и загружает их в папку по своему выбору в нашем кластере
- Конечный пользователь заполняет онлайн-форму метаданных. Форма включает требование к исходному каталогу (см. предыдущий пункт), где находятся данные
- После отправки система проверяет метаданные (проверяя, чтобы все было присутствующим и согласованным) и копирует данные из указанной пользователем папки в отдельное место, где будут храниться все наблюдения
B) Извлечение данных из архива
Для извлечения данных пользователи должны:
- доступ к базе данных через веб-форму
- отфильтровать по необходимым метаданным
- получить ссылку на загрузку (или местоположение в архиве)
Возможные приложения / бэкенды?
Эта система будет использоваться в основном для внутреннего использования. Мы начали искать приложения, чтобы упростить это (мы предпочли бы не кодировать все с нуля). Kit Data Manager
, OpenRosa
и Open Data Kit
в настоящее время оцениваются. Я слышал о OPeNDAP
и W3C-DCAT
, которые могут быть связаны. Какие существуют возможные приложения или бэкенды, которые обычно используются с такими рабочими процессами?
Насколько я знаю, нет готового программного обеспечения, которое бы решало вашу конкретную задачу.
Я бы использовал этот стек программного обеспечения:
- PostgreSQL для метаданных
- Django/Python для веб-интерфейса
Ответ или решение
Вопрос о создании эффективной системы для хранения и извлечения данных на основе метаданных является актуальной задачей для многих учреждений, занимающихся обработкой больших объемов информации. Ваша ситуация требует комплексного подхода, сочетающего в себе управление данными, метаданными и удобный пользовательский интерфейс. Я постараюсь предложить оптимальный программный стек, который соответствует вашим требованиям, а также обрисую возможные решения для реализации.
1. Архитектура системы
Для выполнения указанных вами рабочих процессов я рекомендую использовать следующий программный стек:
-
База данных: PostgreSQL с расширением PostGIS для хранения метаданных, включая такие атрибуты, как версия, охватываемые годы, переменные и разрешение. PostgreSQL обеспечивает высокую степень надежности и возможность расширения, а интеграция с PostGIS позволяет легко работать с геопространственными данными, что может быть полезно при обработке метеорологических данных.
-
Веб-фреймворк: Django (Python) для разработки интерфейса. Django предлагает удобные инструменты для работы с формами, валидации данных и маршрутизации, что позволит легко реализовать форму ввода метаданных и обеспечить удобный доступ к данным.
-
Frontend: Для интерактивного взаимодействия можно использовать React или Vue.js. Эти библиотеки помогут создать интуитивно понятный и динамичный интерфейс для запроса данных.
2. Процесс загрузки данных
Согласно вашему описанию, система должна поддерживать следующий процесс:
-
Загрузка данных пользователем: Пользователь загружает данные в указанную папку на локальном кластере. Это можно реализовать с помощью файловой загрузки на сервер, используя Django File Upload.
-
Форма метаданных: Создание онлайн-формы для ввода метаданных с использованием Django Forms позволит пользователям легко заполнить информацию о загружаемом наборе данных. Валидация данных может быть настроена на уровне модели, что обеспечит проверку присутствия всех необходимых полей.
-
Копирование данных: После успешной валидации метаданных, Django может автоматически переместить загруженные файлы в защищенное хранилище для дальнейшего использования.
3. Процесс извлечения данных
Для реализации процесса извлечения данных, пользователи должны иметь возможность:
-
Доступ к веб-интерфейсу: Основная страница должна содержать форму для фильтрации данных по метаданным. Это можно сделать используя формы Django с динамическими фильтрами.
-
Фильтрация по метаданным: Реализация фильтров на основе метаданных позволит пользователям ограничивать поиск по заданным критериям, используя SQL-запросы к PostgreSQL.
-
Получение ссылок на данные: После того как пользователи отфильтровали данные, необходимо будет предоставить ссылки на скачивание или информацию о местоположении данных в архиве. В Django это можно сделать через стандартные механизмы возврата файлов или предоставления ссылок.
4. Альтернативные приложения и инструменты
Помимо предложенного стека, стоит рассмотреть следующие приложения и сервисы:
-
CKAN: Платформа для управления данными, которая поддерживает метаданные и предоставляет возможности для поиска и загрузки данных.
-
Dataverse: Открытая платформа для хранения и распространения наборов данных, которая включает управление метаданными и возможность интеграции с другими системами.
-
Invenio: Открытая платформа, которая предлагает мощности для цифровых репозиториев и управления контентом, включая управление метаданными.
Заключение
Подводя итог, системная разработка с использованием PostgreSQL и Django кажется наиболее подходящей для ваших потребностей. Данный подход позволяет сосредоточиться на управлении метаданными и простоте их извлечения. Учитывая объемы данных и разнообразие форматов, важно также предусмотреть возможность доработки системы в будущем. Выбор готовых решений, таких как CKAN или Dataverse, может сократить время разработки, но требует рассмотрения возможностей кастомизации.