Сервис хранения аннотированных разноформатных данных “Large Data Inventory”
Ментор | Космачев Алексей |
Учебный семестр | Осень 2018 |
Учебный курс | 3-4-й курс |
Максимальное количество студентов, выбравших проект: 2-3 | |
Что за проект?
Биоинформатические алгоритмы анализа данных пациента генерируют огромное количество различных файлов (порядка 50-100 Гб на каждого пациента). Для хранения таких объемов информации используются различные облачные хранилища, такие как Rackspace Cloud Files, Amazon S3 и тд. Основная проблема - это понять принадлежность того или иного объекта в хранилищах: к какому пациенту относится, к какому dataset, когда и кто данный объект загрузил, какой биоинформатический инструмент сгенерировал файл (название, версия и прочие метаданные), какие данные (мутации, экспрессии и т.п.) и какой формат данных, как долго нужно хранить данный объект и так далее. Важно отметить, что в хранилище помещаются данные пациентов из госпиталей, которая является PHI-информацией. Это означает, что необходим гибкий и надежный механизм разграничения прав доступа к распределенному хранилищу. Помимо этого, необходимо обеспечивать консистентность данных, хранимых в системе - не должно быть фантомных объектов, которых на самом деле не существует, не должно оставаться файлов в реальном хранилище после удаления и тд. Каждый объект, помещаемый в LDI (Large Data Inventory), снабжается минимально необходимым набором атрибутов и мета-данных. Атрибуты могут быть заданы как пользователем, так и встроенными в систему. Атрибуты и значения будут использоваться при выборке и отображении хранимым в системе объектов. Метаданные - некоторый системный набор атрибутов, например, кто загрузил объект, когда, какой размер объекта, mime-тип данных и т.п. Необходимо разработать прототип компоненты, которая на основе облачного хранилища общего назначения предоставит RESTful API для интеграции в платформу, CLI для доступа пользователя к хранилищу.
Начальные требования
- Умение работать с англоязычной технической литературой
- Базовое знание Python
- Готовность изучать новые технологии
Чему вы научитесь
- Обеспечивать гибкий авторизованный доступ к данным в распределенной системе
- Реализовывать свой язык запросов и производить эффективный поиск по нему
- Реализовывать клиентское приложение для работы с системой
- Разворачивать самостоятельно и работать с существующими облачными решениями для хранения больших данных
Какие будут использоваться технологии
- Python, Golang
- Amazon S3 (Minio)
- MongoDB
- Yacc\Lex
Критерии оценивания
- 4 - Реализован сервис, предоставляющий RESTApi с возможностью добавления записи о файле и его поиска
- +2 - Реализован domain-specific language запросов
- +3 - Реализован CLI c возможностью загружать реальные данные
- +3 - Реализована авторизация
Контакты
Космачев Алексей adkosmachev@edu.hse.ru