Распределенное хранение и визуализация массивов научных данных и изображений Дмитрий Медведев, Александр Новиков ГЦ РАН, ИКИ РАН
Примеры использования многомерных массивов 2D / 3D 3D / 4D / 5D /… 1D Наблюдения Спутниковые снимки Моделирование
Файлы Большинство научных данных хранится и передается в виде файлов Существует много различных форматов файлов, которые используют похожие структуры данных (GRIB, SAO, WDC, Intermagnet, различные варианты ASCII таблиц) К коллекции файлов сложно организовать удаленный доступ, предполагающий много различных запросов Многие форматы не поддерживают интегрированные метаданные Большие коллекции файлов сложно обслуживать Удачные примеры: netCDF, HDF5
Реляционные базы данных Удобное хранение метаданных Простая организация удаленного доступа Простое обслуживание Реляционная модель плохо подходит для многомерных массивов Реляционная модель слишком общая, для каждого набора данных приходится создавать БД с нуля
ActiveStorage Основана на реляционной СУБД Сочетает преимущества реляционной СУБД и непрерывных числовых массивов Операции для работы с массивами реализованы в виде хранимых процедур
Способы организации массива в базе данных ,0,A[0,0], 0,1,A[0,1], 0,2,A[0,2], 0,3,A[0,3], …, 3,0,A[3,0], 3,1,A[3,1], 3,2,A[3,2], 3,3,A[3,3] 0,0,0,0,…,3,3,3,3, 0,1,2,3,…,0,1,2,3, A[0,0],A[0,1],A[0,2],A[0,3],A[1,0],A[1,1], …,A[3,0],A[3,1],A[3,2],A[3,3], 0,A[0,0],A[0,1],A[1,0],A[1,1], 1,A[0,2],A[0,3],A[1,2],A[1,3], 0,A[2,0],A[2,1],A[3,0],A[3,1], 1,A[0,2],A[0,3],A[1,2],A[1,3], ijvalue 00A[0,0] 01A[0,1] 02A[0,2] ……… 32A[3,2] 33A[3,3] nblock строка столбец блок 1) Традиционная РСУБД 2) Колоночная СУБД 3) Подход, используемый в ActiveStorage 1), 2)3)
SciDB (2010) Архитектура существующих решений РСУБД Сервер RasDaMan Клиентская библиотека RasDaMan (1999) Данные + метаданные РСУБД Данные + метаданные Процедуры обработки Клиентская библиотека ActiveStorage (2007)
Разбиение многомерного массива на блоки 1 операция8 операций4 операции Массив, разбитый на блоки Целый массив При каждой операции чтения считывается блок целиком Блоки хранятся в виде двоичных объектов (BLOB) в ячейках таблицы Блоки могут быть разной формы и размера chunk_keychunk
Таблица данных и таблица-указатель Таблица данных хранит содержимое массивов в виде блоков. Таблица-указатель содержит информацию о размере каждого блока и его положении в целом массиве. Эта информация также дублируется внутри самого блока, в его заголовке. Для каждого нового массива автоматически создаются две таблицы: Таблица данных Таблица-указатель
Индексирование блоков Используется иерархическое разбиение на прямоугольные области одинакового размера. Это позволяет эффективно использовать B-tree индексирование, встроенное в СУБД. блок
Common Data Model Модель данных Common Data Model (CDM) используется в специализированных форматах хранения данных netCDF and HDF5. Основное назначение CDM – представление многомерных численных массивов.
Схема базы данных ActiveStorage
Схема обработки запроса SQL Server Клиентская библиотека 2. Передача запроса СУБД 3. Выбор требуемых фрагментов массив из нескольких блоков 3. Передача фрагментов массива клиенту 4. Соединение фрагментов массива 1. Инициализация запроса Приложение
Параллельная обработка запроса SQL Server БД 1 Приложение SQL Server БД 2 Клиентская библиотека
1 сервер 4 сервера Параллельная обработка запроса
Версии ActiveStorage СУБД PostgreSQL СУБД PostgreSQL PL/Java Клиентская библиотека Java СУБД Microsoft SQL Server 2008 СУБД Microsoft SQL Server 2008 CLR Клиентская библиотека.NET Клиентская библиотека Java Сервер – Windows Клиент – Windows/Linux Сервер – Windows/Linux Клиент – Windows/Linux
Веб-интерфейс к модели данных
Приложения Глобальный реанализ погоды NCEP/NCAR Спутниковые снимки DMSP (ночные огни) База данных метеонаблюдений NCDC ISD
Глобальный реанализ погоды NCEP/NCAR Постоянно обновляемые данные на сетке Реальные наблюдения используются как исходные данные для моделирования 74 параметра 5000 файлов netCDF, размер одного файла 30 – 500 MB Время: 1948 – 2008 каждые 4 часа Сетки двух видов: Регулярная сетка, 2.5 x 2.5 градуса Гауссова сетка T62, 192 x 94
Глобальный реанализ погоды NCEP/NCAR Типичные запросы: 1)Карта температур на район в определенный момент времени (2D-массив) 2)Временной ряд температур в одной точке за длительный период (1D-массив)
Структура базы данных ns1 – 3D массив, регулярная сетка ns2 – 3D массив, гауссова сетка ns3, ns4, ns5 – 4D массив, регулярная сетка Group: ns2 NCEP/NCAR Weather Reanalysis Database time Group: ns1 lat lon data Group: ns5 Group: ns4 time Group: ns3 lat lon data level
Спутниковые снимки DMSP F10, 1992 F16, x Карты стабильных ночных огней 18 лет ( ) Покрытие – Россия Разрешение ~1км/пиксел Разница огней Московской области 1992, 2009
Интерфейс к спутниковым снимкам с использованием Bing Maps
NCDC Integrated Surface Database 1901 – миллионов сенсоров 1.7 миллиардов наблюдений Наземные станцииКораблиМобильные устройстваБуи FM V N N N ADDGA KA1120N datetimelatlon Mandatory data sectionAdditional data sectionSection marker Group marker Parameter group Control data section ASCII файлы, упакованные GZip. 50 GB упакованные; 400 GB распакованные. Структура исходных файлов
Проблемные данные СтанцииТраектории Длинный одномерный массив. Поиск по 3-м параметрам: широта, долгота, время Много сравнительно небольших одномерных массивов (временной ряд для каждой станции) Поиск по координатам станций и времени Моменты измерений для каждой станции различные Нужно дополнительное индексирование!