6.2. Механизм хранения данных
Для дальнейшего объяснения принципов работы архитектуры DSA необходимо описать механизм использования дискового пространства или, другими словами, как сервера Informix хранят данные на диске.
Только администратор СУБД, отвечающий за выделение памяти на жестком диске под хранение данных, может (и должен) управлять таким этим. Тем не менее, с элементами представления данных на жестком диске работает и прикладной программист. Поэтому рассмотрим механизм размещения данных с обеих точек зрения – как с точки зрения администратора, так и с точки зрения программиста.
С точки зрения прикладного программиста (в том числе, и разработчика схемы конкретной БД) область хранения данных на жестком диске состоит из некоторого пространства областей данных (в фирменной документации используется термин dbspace, который иногда используется в русскоязычной литературе в своем транслитеральном переводе «дбспейс»). Существует пространство данных, используемое для хранения БД по умолчанию. Это пространство называется корневым (root dbspace). В корневом пространстве, кроме баз данных, хранится еще и системная информация, необходимая для работы сервера базы данных целиком. Для прикладного программиста это означает, что объем памяти, отведенной под БД в корневом пространстве данных существенно меньше собственного, физического размера корневого пространства.
Каждая база данных, как правило, может размещаться только в одном пространстве данных. В одном пространстве данных может размещаться несколько баз данных:
С точки зрения прикладного программиста разные пространства данных различаются по следующим параметрам:
Скорость доступа;
Вероятность отказа;
Время восстановления после отказа;
Размер.
Имена пространств данных используются в операторе CREATE DATABASE, после ключевого слова IN. Например, если мы хотим создать базу данных my_db в пространстве данных work_dbspace, а базу данных phones в пространстве office_db, то надо выполнить следующие операторы:
CREATE DATABASE my_db IN work_dbspace CREATE DATABASE phones IN offiсe_db
С точки зрения администратора сервера БД каждое пространство данных состоит из нескольких компонент – чанков (от английского “chunk” – ломоть, кусок). Каждый чанк является или файлом в файловой системе, или частью этого файла, или частью «сырого» устройства. «Сырое» устройство означает устройство с прямым доступом, но на котором не хранятся обычные файлы ОС.
Каждый чанк определяется именем файла или устройства, на котором он находится, смещением области данных от начала и размером. В случае использования файла именем будет просто имя файла, например /usr/informix/chunks/cook1. В случае сырого устройства именем будет выступать имя файла ОС Unix, ассоциированное с данным устройством, например /dev/dsk/c0d0t1s2.
В качестве примера рассмотрим следующую конфигурацию. Пусть у нас есть два пространства данных – rootdbs и work_dbspace. Первое пространство, размером 100 МБт состоит из двух чанков:
файла /usr/informix/chunks/cook1 , размером 40 МБт
первых 60 МБт сырого устройства /dev/dsk/c0d0t1s2
Второе пространство, work_dbspace, размером 150 МБт, состоит из одного чанка, размером, соответственно, тоже 150 МБт, и который находится на том же сыром устройстве, что и второй чанк первого пространства, но занимает область после него:
Для того, чтобы добавить к серверу базы данных Informix Dynamic Server новое пространство данных, можно воспользоваться или утилитой onspaces, или воспользоваться оболочками администратора onmonitor (для терминального режима) или Informix Enterprise Command Center (для графического режима).
Для того, чтобы узнать текущий набор пространств и узнать, из каких чанков состоит каждое пространство данных, надо выполнить команду (для терминального режима) onstat –d:
fili% onstat –d INFORMIX-OnLine Version 7.11.UC1 - On-Line - Up 17 days 00:24:59 -- 11480 Ks Dbspaces address number flags fchunk nchunks flags owner name a33e0e8 1 1 1 2 N informix rootdbs a36b9c0 2 1 2 1 N informix db1 a36ba28 3 1 3 1 N informix db2 a36ba90 4 1 4 1 N informix db3 a36baf8 5 1 5 1 N informix db4 a36bb60 6 1 7 1 N informix agspace1 6 active, 2047 maximum Chunks address chk/dbs offset size free flags pathname a33e150 1 1 0 32485 256 PO- /data/chunw a36b228 2 2 0 20000 0 PO- /data/chun1 a36b300 3 3 0 20000 6593 PO- /data/chun2 a36b3d8 4 4 0 20000 1053 PO- /data/chun3 a36b4b0 5 5 0 20000 6957 PO- /data/chun4 a36b588 6 1 0 50000 2024 PO- /data/chun10 a36b660 7 6 0 5000 2283 PO- /data/chun5 7 active, 2047 maximum
По данной выдаче видно, что в данном экземпляре сервера имеется 6 пространств данных (rootdbs, db1, db2, db3, db4 и agspace1). Пространство данных rootdbs состоит из двух чанков (/data/chunw и /data/chun10), остальные пространства состоят из одного чанка каждый (у каждого пространства данных есть свой уникальный номер – поле number, на который указывает поле dbs у чанка).
Для каждого сервера базы данных должен существовать один специально выделенный первичный (или корневой) чанк, являющийся первым чанком в корневом пространстве данных. Для начального запуска сервера в работу требуется иметь только корневой чанк.
Получить информацию о количестве пространств данных, о входящих в них чанках, можно только на работающем сервере.
- 4.5. Упражнения 67
- Глава 6. Устройство Informix Dynamic Server 165
- Глава 7. Эксплуатация информационных систем 177
- Глава 1 Обзор основных архитектур баз данных
- 1.1. Архитектура на основе разделяемых файлов
- 1.2. Архитектура “Хост-терминал”
- 1.3. Архитектура “Клиент-Сервер”
- 1.4. Архитектура с использованием сервера приложений (трехзвенная архитектура)
- 1.5. Упражнения
- Глава 2 Модели данных
- 2.1. Уровни восприятия данных
- 2.2. Иерархическая модель данных
- 2.3. Сетевая модель данных
- 2.4. Реляционная модель данных
- 2.5. Объектно-реляционная модель данных
- Глава 3 Реализация информационных систем на основе продуктов Informix Software
- 3.1. Обзор продуктов Informix
- 3.2. Варианты построения систем
- Internet/Intranet-конфигурация
- 3.3. Выбор оптимальной конфигурации
- Глава 4 Математические основы реляционных субд
- 4.1. Основные понятия
- 4.2. Ключи
- 4.3. Основные операции над таблицами и их интерпретация
- 4.4. Нормализация
- 4.5. Упражнения
- Глава 5 Язык sql
- 5.1. Типы данных, доступные в sql
- 5.3. Основные sql-операторы для доступа и модификации данных
- 5.4. Управление транзакциями
- 5.5. Продвинутые варианты оператора поиска
- 5.5.1. Поиск по нескольким таблицам
- 5.5.2. Устранение повторения данных в операторе select
- 5.5.3. Вычисления внутри оператора select
- 5.5.4. Логические выражения в условии sql-операторов
- 5.5.5. Слияние двух выборок
- 5.5.6. Сортировка выборки
- 5.5.7. Вставка в таблицу нескольких строк одновременно
- 5.6. Использование sql в языках программирования
- 5.7. Программирование сервера базы данных
- 5.7.1. Динамический sql
- 5.7.3. Хранимые процедуры
- 5.7.4. Триггеры
- 5.8. Ограничители (задание целостности на уровне схемы)
- 5.9. Разграничение в sql прав пользователей
- 5.9.1. Права доступа
- 5.9.2. Права на уровне базы данных
- 5.9.3. Права на таблицы
- 5.9.4. Права на хранимые процедуры
- 5.9.5. Кто и как следит за соблюдением прав
- 5.9.6. Механизм ролей
- 5.9.7. Псевдотаблицы (view)
- 5.9.7. Синонимы
- 5.10. Управление одновременным доступом к данным
- 5.10.1. Что бывает, когда несколько человек одновременно пытаются обновить одни и теже данные
- 5.10.2. Открытие базы данных только для себя
- 5.10.3. Блокирование таблицы
- 5.10.4. Механизм блокирования записей и уровни изоляции
- 5.10.5. Управление ожиданием снятия блокировок
- 5.10.6. Тупиковые ситуации
- 5.11. Повышение скорости обработки запросов.
- 5.11.1. Индексы
- 5.11.2. Буферизация журнала транзакций
- 5.11.3. Блокировка на уровне записей и страниц
- 5.11.4. Эффективное построение запросов
- 5.11.5. Сортировка и поиск по коротким полям. Классификаторы
- 5.12. Объектное расширение sql в Informix ds/Universal Data Option
- 5.12.1. Зачем нужна поддержка объектов в серверах бд?
- 5.12.3. Внедрение объектно-ориентированной технологии
- 5.12.4. Реализация объектного подхода в Informix
- Informix ds/Universal Data Option - объектно-реляционная субд
- 5.12.5. Итак…
- Глава 6. Устройство Informix Dynamic Server
- 6.1. Внутренняя архитектура dsa
- 6.2. Механизм хранения данных
- 6.3. Инсталляция продукта
- 6.4. Запуск и останов сервера
- 6.5. Работа с русским языком
- Глава 7. Эксплуатация информационных систем
- Администрирование серверов баз данных
- 7.2. Обеспечение сохранности данных.
- 7.2.1. Технологии постоянного дублирования
- 7.2.2. Архивация
- 7.2.3. Так как же обеспечить сохранность данных?
- 7.3. Архивирование и восстановление данных
- 7.3.1. Что нужно архивировать
- 7.3.2. Утилиты архивации и восстановления
- 7.3.3. Создание архивов утилитой ontape
- 7.3.4. Восстановление из архивов утилитой ontape
- 7.3.5. Как узнать “когда”?
- 7.3.6. Практические советы
- 7.4. Средства контроля за доступом
- 7.4.1 Как работает аудитинг?
- 7.4.2. Конфигурирование списков протоколируемых событий
- 7.4.3. Задание файлов, запуск и остановка механизма аудитинга
- Анализ протокола
- 7.4.5. Практические советы или Что делать, если вы хотите…
- 7.5. Реагирование на чрезвычайные ситуации
- 7.6. Мониторинг текущего состояния сервера базы данных
- 7.6.1. Кто работает с сервером базы данных
- 7.6.2. Сколько памяти использует сервер бд
- 7.6.3. Сколько свободного места имеется у сервера бд
- 7.7. Достижение требуемой производительности
- 7.7.1. Как узнать, что ждет некоторый запрос
- 7.7.2. Как выяснять причины падения производительности
- 2. Общие принципы предлагаемой технологии
- 3. Как портировать приложение