Сервис хранения аннотированных разноформатных данных “Large Data Inventory”

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Ментор Космачев Алексей
Учебный семестр Осень 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‎