RS: Хранилище данных

Продукт
Разработчики: RedSys (Редсис)
Технологии: СХД

Хранение бинарных объектов в таблицах реляционной базы данных — это реальность, с которой часто приходится сталкиваться при сопровождении, модификации и эксплуатации систем. Чаще всего бинарные данные (сканированные образы документов, фотографии товара, etc) хранятся в тех же таблицах, что и объекты учёта. Так получается по разным причинам. Иногда недостаточное понимание последствий такого решения, т.е. издержек, которые возникнут в связи с таким хранением, становится причиной того, что база на 70% состоит из бинарных объектов. Причиной может быть и взрывной рост объёма операций (количества записей), на который никто не рассчитывал при начальном проектировании.

Но как бы то ни было, такое хранение становиться настоящей головной болью у тех, кто вынужден поддерживать и развивать систему, которая теперь состоит из огромного статического контента: клонирование базы для детального разбора или экспериментов, резервное копирование, подготовка стенда для разработчиков — всё превращается в кошмар администратора.

Даже когда появляется понимание, как и где должны храниться такие данные, переход к новой архитектуре зачастую не тривиален: скорее всего потребуется изменение прикладного кода, что в унаследованных системах может превратиться в очень долгий и затратный процесс требующий останова и регрессионных тестов всех модулей системы. Кроме того, следует заметить, что перенос бинарных объектов на файловую систему создаст дополнительный «шов» и точку отказа, т.е. кроме базы данных, пусть неповоротливой, у команды эксплуатации теперь появляется «раздел с картинками\документами», который хоть и редко, но меняется, т.е. его также надо включать в процедуру резервного копирования, в систему мониторинга и прочее.

Некоторые СУБД уже решили такие задачи и предлагают свои решения по способам хранения и алгоритмам обработки бинарных объектов — как в выделенных специализированных областях БД (яркий пример — механизм Secure Files в СУБД Oracle), так и способы хранения бинарных объектов в файловой системе и ссылками на соответствующие файлы непосредственно в таблицах.

Как быть, если у вас база данных PostgreSQL, и в вашей системе бинарные объекты хранятся в тех же таблицах, что и объекты учёта, а переделка прикладной части долгая сложная и рискованная операция? При этом хотелось бы получить способы миграции бинарных объектов прямо «на лету», т.е. хотя бы новые объекты должны сохраняться где-то на внешнем хранилище, а у администратора была возможность переносить старые объекты во время минимальной нагрузки, а если при этом для бинарных объектов все операции будут ещё и транзакционны...

Решение RedSys"RS: Хранилище данных" — использует возможности расширения PostgreSQL при помощи внешних модулей (extension), наше расширение объявляет новый метод доступа, реализует собственный индекс на основе хэш-индекса PostgreSQL. Для внешнего хранения больших бинарных объектов использована файловая система, но также есть возможность сохранять большие объекты в распределённой файловой системе с открытым исходным кодом Ceph.

Ceph — это программно-определяемая распределенная файловая система с открытым исходным кодом, лишенная узких мест и единых точек отказа, которая представляет собой легко масштабируемый до петабайтных размеров кластер узлов, выполняющих различные функции, обеспечивая хранение и репликацию данных, а также распределение нагрузки, что гарантирует высокую доступность и надежность. Система бесплатная, хотя разработчики могут предоставить платную поддержку. Никакого специального оборудования не требуется.

Расширение RedSys доставляет контент из файловой системы или из Ceph в приложение, которое и «знать не знает», что оно работает с удалённым хранилищем или с файловой системой, а работает с бинарным содержимым так, как если бы оно находилось в базе данных. Внутри PostgreSQL расширение предоставляет тип RBYTEA, по аналогии со стандартным типом BYTEA, который используется для хранения бинарных объектов в PostgreSQL. Только в отличии от стандартного типа наш RBYTEA сохраняет в блоках базы данных только дескрипторы небольшого размера (не более 100 байт) каждый такой дескриптор представляет собой описание местонахождения и состояние бинарного объекта. Все операции с новым типом транзакционны, т.е. дескриптор физически удаляется из файлов базы данных вместе с данными из удалённого хранилища или из файловой системы в соответствии с контекстом транзакции и по правилам, определяемыми внутренними механизмами СУБД PostgreSQL. Кроме типа, расширение представляет небольшой набор прикладных функций для просмотра значений дескриптора, его создания и заполнения бинарным содержимым. Теперь можно предусмотреть бесшовную миграцию, создав в таблице с бинарными данными поля «нового» типа и определив правила для заполнения полей. Кроме того, администратор может делать резервную копию или клонировать базу данных — копироваться будут только дескрипторы, которые требуют существенно меньше места.



Подрядчики-лидеры по количеству проектов

За всю историю
2021 год
2022 год
2023 год
Текущий год

  ITglobal.com (ИТглобалком Рус) (35)
  Рэйдикс (Raidix) (35)
  R-Style Softlab (Эр-Стайл Софтлаб) (27)
  BeringPro (БерингПойнт) ранее BearingPoint Russia (26)
  Сапран (Saprun) (22)
  Другие (542)

  Сапиенс солюшнс (Sapiens solutions) (7)
  ITglobal.com (ИТглобалком Рус) (6)
  Aerodisk (Аеро Диск) (4)
  Крикунов и Партнеры Бизнес Системы (КПБС, KPBS, Krikunov & Partners Business Systems) (3)
  BeringPro (БерингПойнт) ранее BearingPoint Russia (3)
  Другие (30)

  Ростелеком (1)
  Философия.ИТ (1)
  ActiveCloud by Softline (АктивХост РУ) (1)
  Aerodisk (Аеро Диск) (1)
  Hewlett Packard Enterprise (HPE) (1)
  Другие (8)

  Киберпротект (ранее Акронис-Инфозащита, Acronis-Infoprotect) (3)
  Шаркс Датацентр (Sharx DC) (1)
  Arenadata (Аренадата Софтвер) (1)
  Axenix (ранее Аксенчер Россия) Аксеникс (1)
  Beeline Cloud (DataFort) (1)
  Другие (6)

  КНС Групп (Yadro) (2)
  Platformcraft (Платформкрафт) (2)
  СевенПро, 7Pro (ранее - Регионком) (1)
  Aerodisk (Аеро Диск) (1)
  Cloud4Y (ООО Флекс) (1)
  Другие (7)

Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2021 год
2022 год
2023 год
Текущий год

  SAP SE (1, 103)
  NetApp (25, 66)
  Рэйдикс (Raidix) (19, 52)
  IBM (30, 43)
  Dell EMC (68, 32)
  Другие (703, 344)

  SAP SE (1, 8)
  NetApp (5, 7)
  Aerodisk (Аеро Диск) (5, 6)
  Lenovo (1, 6)
  Lenovo Data Center Group (1, 6)
  Другие (18, 19)

  Aerodisk (Аеро Диск) (3, 2)
  Hewlett Packard Enterprise (HPE) (1, 1)
  Lenovo Data Center Group (1, 1)
  NetApp (1, 1)
  TData (ТДата) (1, 1)
  Другие (7, 7)

  Киберпротект (ранее Акронис-Инфозащита, Acronis-Infoprotect) (1, 3)
  Lenovo Data Center Group (1, 1)
  Шаркс Датацентр (Sharx DC) (1, 1)
  Arenadata (Аренадата Софтвер) (1, 1)
  Lenovo (1, 1)
  Другие (3, 3)

  Platformcraft (Платформкрафт) (2, 2)
  КНС Групп (Yadro) (1, 2)
  Рэйдикс (Raidix) (1, 2)
  SAP SE (1, 1)
  Aerodisk (Аеро Диск) (1, 1)
  Другие (4, 4)

Распределение базовых систем по количеству проектов, включая партнерские решения (проекты, партнерские проекты)

За всю историю
2021 год
2022 год
2023 год
Текущий год

  SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 103 (103, 0)
  Raidix СХД - 47 (47, 0)
  NetApp FASx - 45 (45, 0)
  RS-DataHouse - 27 (24, 3)
  Lenovo ThinkSystem - 17 (17, 0)
  Другие 299

  SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 8 (8, 0)
  Lenovo ThinkSystem - 6 (6, 0)
  Аэродиск Восток СХД - 3 (3, 0)
  IBM FlashSystem - 3 (3, 0)
  NetApp FASx - 3 (3, 0)
  Другие 19

  SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 1 (1, 0)
  NetApp FASx - 1 (1, 0)
  Lenovo ThinkSystem - 1 (1, 0)
  EMC VNX - 1 (1, 0)
  Аэродиск Восток СХД - 1 (1, 0)
  Другие 6

  Кибер Инфраструктура (ранее Acronis Инфраструктура) - 3 (3, 0)
  Cloudike - 1 (0, 1)
  SharxBase - 1 (1, 0)
  Lenovo ThinkSystem - 1 (1, 0)
  TATLIN семейство систем хранения данных - 1 (1, 0)
  Другие 0

  TATLIN семейство систем хранения данных - 2 (2, 0)
  Raidix СХД - 2 (2, 0)
  SAP NetWeaver Business Warehouse (SAP BW/4HANA) - 1 (1, 0)
  Platformcraft Depot On-Premise - 1 (1, 0)
  Aerodisk vAIR - 1 (1, 0)
  Другие 4