Опубликовано хранилище TileDB 2.0, оптимизированное для хранения многомерных массивов и данных, используемых в научных расчётах. В качестве областей применения TileDB упоминаются различные системы обработки генетической информации, пространственных и финансовых данных, т.е. системы оперирующие разрежёнными или непрерывно заполняемыми многомерными массивами. TileDB предлагает С++ библиотеку для прозрачного абстрагирования доступа к данным и метаданным в приложениях, беря на себя всю работу по низкоуровневой организации эффективного хранения. Код проекта написан на языке С++ и распространяется под лицензией MIT. Поддерживается работа в Linux, macOS и Windows.
Основные особенности TileDB:
- Эффективные методы хранения разреженных массивов, данные в которых не следуют непрерывно, массив заполняется фрагментами, и большая часть элементов остаются пустыми или принимают одно и то же значение.
- Возможность доступа к данным в формате ключ-значение или наборов столбцов (DataFrame);
- Поддержка интеграции с облачными хранилищами AWS S3, Google Cloud Storage и Azure Blob Storage;
- Поддержка мозаичных (блочных) массивов;
- Возможность использования разных алгоритмов сжатия и шифрования данных;
- Поддержка проверки целостности по контрольным суммам;
- Работа в многопоточном режиме c распараллеливанием ввода/вывода;
- Поддержка версионирования хранимых данных в том числе для выборки состояния в определённый момент в прошлом или атомарных обновлений целиком больших наборов.
- Возможность привязки метаданных;
- Поддержка группировки данных;
- Модули интеграции для использования в качестве низкоуровневого движка хранения в Spark, Dask, MariaDB, GDAL, PDAL, Rasterio, gVCF и PrestoDB;
- Библиотеки-обвязки над C++ API для языков Python, R, Java и Go.
Выпуск 2.0 примечателен поддержкой концепции «DataFrame», которая позволяет хранить данные в форме столбцов значений произвольной длины, привязанных к определённым атрибутам. Хранилище также оптимизировано для обработки разреженных массивов разнородного размера (в ячейках могут хранится данные разного типа и можно выполнять операции слияния столбцов разного типа, например, в которых хранится название, время и цена). Добавлена поддержка столбцов со строковыми данными. Добавлены модули для интеграции с Google Cloud Storage и Azure Blob Storage. Переработан API для языка R.