Dbspace
Dbspace — это логическая единица хранения данных в системах управления базами данных (СУБД) семейства Informix (в настоящее время разрабатывается компанией IBM, а также в рамках открытого проекта HCL Informix). Dbspace представляет собой именованную область на дисковых устройствах, которая используется для размещения таблиц, индексов и других объектов базы данных. Фактически, dbspace является абстракцией, объединяющей один или несколько физических файлов (или разделов диска) в единое пространство, управляемое СУБД.
История и происхождение
Концепция dbspace была разработана компанией Informix Software в 1980-х годах для её реляционной СУБД Informix. Основной целью создания этой абстракции было упрощение администрирования дискового пространства и повышение гибкости управления данными. В отличие от многих других СУБД того времени, которые работали напрямую с файловыми системами операционной системы, Informix предложил модель, где администратор базы данных мог создавать логические контейнеры (dbspace) из произвольного набора физических устройств.
После приобретения Informix корпорацией IBM в 2001 году технология продолжила развиваться в составе продуктов IBM Informix. В 2017 году IBM передала исходные коды Informix под управление компании HCL Technologies, которая выпускает собственную версию СУБД — HCL Informix. В обеих версиях dbspace остаётся фундаментальной единицей хранения.
Устройство и структура
Физическая организация
Dbspace состоит из одного или нескольких chunk (чанков). Чанк — это непрерывный блок физического дискового пространства, который может быть представлен:
- обычным файлом в файловой системе операционной системы (например,
/data/informix/dbspace1.dat); - «сырым» устройством (raw device) — разделом диска без файловой системы, что обеспечивает более высокую производительность за счёт прямого доступа к блочному устройству.
Каждый чанк делится на страницы (pages) — минимальные единицы ввода-вывода. Размер страницы задаётся при создании dbspace и обычно составляет 2, 4, 8 или 16 КБ. Страницы группируются в экстенты (extents) — последовательные наборы страниц, выделяемые для хранения данных одной таблицы или индекса.
Логическая структура
Dbspace содержит:
- Таблицы (хранятся в виде B-деревьев или других структур);
- Индексы (ускоряют поиск данных);
- Системные каталоги (метаданные о таблицах, пользователях, правах доступа);
- Журналы транзакций (логи) — в некоторых типах dbspace.
Каждый dbspace имеет уникальное имя (до 128 символов) и идентификатор (номер). При создании базы данных администратор указывает, в каком dbspace будут размещаться её объекты. Одна база данных может использовать несколько dbspace, и один dbspace может содержать объекты нескольких баз данных.
Классификация dbspace
В СУБД Informix существует несколько типов dbspace, различающихся по назначению и поведению:
Root dbspace
Корневой dbspace создаётся автоматически при инициализации сервера Informix. Он содержит:
- системные каталоги;
- управляющие структуры (например, таблицу расположения чанков);
- начальные журналы транзакций (логи).
Это единственный dbspace, который не может быть удалён. Обычно он занимает небольшой объём (от 50 до 200 МБ).
Data dbspace
Стандартный dbspace для хранения пользовательских данных (таблиц, индексов). Может быть создан администратором в любом количестве. Данные в нём не дублируются.
Blobspace
Специализированный dbspace для хранения больших двоичных объектов (BLOB — binary large objects), таких как изображения, видео, аудиофайлы. Blobspace оптимизирован для хранения данных большого размера (от нескольких килобайт до гигабайт) и не поддерживает индексы.
Smart Blobspace (sbspace)
Появился в версии Informix 9.x. Предназначен для хранения «умных» больших объектов (smart BLOBs), которые поддерживают потоковую передачу данных и частичное чтение/запись. Используется для хранения мультимедийных данных, документов, XML-файлов.
Temp dbspace
Временный dbspace, используемый для хранения временных таблиц и промежуточных результатов сортировки. Создаётся при старте сервера и автоматически очищается при завершении работы. Не требует резервного копирования.
Logical Log dbspace
Специальный dbspace для хранения журналов транзакций (логов). Используется для обеспечения целостности данных и восстановления после сбоев. Может быть создан несколько таких dbspace для распределения нагрузки.
Управление dbspace
Создание
Администратор создаёт dbspace с помощью команды SQL CREATE DBSPACE или утилиты onspaces. Пример: ``sql CREATE DBSPACE dbs1 WITH CHUNK '/data/chunk1.dat' SIZE 1000 MB; ``
Добавление чанков
К существующему dbspace можно добавлять новые чанки для увеличения объёма. Это делается без остановки сервера (онлайн-операция): ``sql ALTER DBSPACE dbs1 ADD CHUNK '/data/chunk2.dat' SIZE 500 MB; ``
Мониторинг
Состояние dbspace отслеживается через:
- системную таблицу
sysdbspaces; - утилиту
onstat -d; - команду
SELECT * FROM sysmaster:sysdbspaces.
Основные параметры мониторинга: общий размер, занятое пространство, количество свободных страниц, состояние чанков (активен/неактивен/ошибка).
Резервное копирование
Dbspace поддерживают различные режимы резервного копирования:
- Полное копирование (full backup) — всех dbspace;
- Инкрементальное копирование (incremental backup) — только изменённых страниц;
- Копирование на уровне чанков (chunk-level backup) — отдельных физических устройств.
Преимущества и недостатки
Преимущества
- Гибкость: возможность создавать dbspace произвольного размера из любых дисковых устройств.
- Производительность: размещение часто используемых данных на быстрых дисках (например, SSD) отдельно от архивных.
- Управляемость: возможность добавлять дисковое пространство без остановки сервера.
- Изоляция: сбой в одном dbspace не затрагивает другие (если они на разных физических устройствах).
Недостатки
- Сложность администрирования: требуется понимание физической организации дисков.
- Ограничения на количество: максимальное количество dbspace в одной инсталляции Informix — 2047 (версия 12.10 и выше).
- Зависимость от файловой системы: при использовании файловых чанков производительность ниже, чем у raw-устройств.
- Необходимость планирования: неправильное распределение данных между dbspace может привести к фрагментации и снижению производительности.
Сравнение с другими СУБД
Концепция dbspace схожа с:
- Tablespace в Oracle Database и PostgreSQL — логические области хранения, состоящие из файлов данных.
- Filegroup в Microsoft SQL Server — группы файлов, объединяющие один или несколько файлов базы данных.
- Storage group в IBM Db2 — наборы путей к файлам, используемые для хранения табличных пространств.
Однако dbspace отличается тем, что напрямую управляет физическими чанками, а не только файлами, и поддерживает специализированные типы (blobspace, sbspace) для конкретных видов данных.
Применение
Dbspace активно используется в корпоративных информационных системах, работающих на базе Informix, включая:
- банковские и финансовые системы (обработка транзакций);
- телекоммуникационные платформы (биллинг, управление абонентами);
- системы управления складом и логистикой;
- веб-приложения с высокими требованиями к производительности.
В России СУБД Informix с dbspace применяется в ряде крупных банков и государственных учреждений, где требуются высокая надёжность и возможность масштабирования.
Источники
- IBM Informix Dynamic Server Administrator's Guide, Version 12.10.
- HCL Informix Documentation: "Managing Disk Space".
- Informix Guide to SQL: Reference, Version 11.70.
- Статья «Dbspace vs Tablespace: A Comparative Study» в журнале Database Systems Journal, 2019.
- Документация IBM: "Informix Dynamic Server: Storage Architecture".
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →