Методы создания баз данных
Мы подошли к более интересной части этого урока – к созданию баз данных. Для создания баз данных OpenEdge используются утилиты:
- prodb – самый простой и быстрый способ создания баз данных OpenEdge. Утилита обычно используется разработчиками для создания баз данных с целью тестирования приложений.
- prostrct create – эта утилита предоставляет администратору полный контроль над процессом создания базы данных согласно вашим требованиям.
Какой бы метод вы не использовали для создания баз данных, будет необходима исходная база данных, о чём мы и поговорим далее.
Исходная база данных
Исходная база данных может быть двух видов:
- Существующая база данных – содержит мета-схему (системные таблицы), схему (объекты базы данных) и прикладные данные. Если вы хотите, чтобы новая база данных содержала мета-схему, схему и прикладные данные уже имеющейся у вас базы данных, то вы просто копируете существующую базу.
Пустая (empty) база данных – содержит только мета-схему и не имеет схемы и прикладных данных. Такая база применяется тогда, когда необходимо создать базу данных «с нуля», либо если необходимо изменить размер блока базы данных, либо если вы мигрируете с одной операционной системы на другую. Существует 5 вариантов empty-баз данных, различия которых заключаются в размере блока баз данных, который они используют.
База данных |
Размер блока базы данных |
empty | Соответствует размеру страницы операционной системы. |
empty1 | 1Кб |
empty2 | 2Кб |
empty4 | 4Кб |
empty8 | 8Кб |
Когда вы используете UNIX, вы должны создавать базу данных с размером блока 8Кб. Если вы используете LINUX или WINDOWS, то размер блока базы данных должен быть 4Кб.
Создание базы данных с помощью PRODB
Создание базы данных утилитой prodb – это наиболее простой и быстрый способ. Утилита создаёт новую базу данных, используя структуру исходной, размещая все экстенты в текущей рабочей директории, после чего копирует прикладные данные исходной базы данных в новую базу.
Если вы хотите создать пустую базу данных, то в качестве источника необходимо использовать empty-базы, которые предоставляет СУБД OpenEdge, по умолчанию они размещены в инсталляционном каталоге СУБД OpenEdge.
Для использования утилиты prodb необходимо запустить командную строку proenv. Синтаксис prodb следующий:
prodb target-db [DLC]source-db
Здесь,
target-db – имя создаваемой базы данных. Имя должно начинаться с буквы и состоять из комбинации букв и цифр. Нельзя использовать ключевые слова языка ABL и специальные символы.
DLC –переменная среды окружения (необязательно). В Windows используется %DLC%, в UNIX используется $DLC.
source-db – имя существующей базы данных или имя empty-базы данных, на основании которой будет создана новая база данных.
Этапы процесса создания новой базы данных утилитой prodb зависят от того, какой вид исходной базы данных вы используете:
Создание новой базы из существующей:
- Создаётся новая база данных.
- Создаются экстенты базы данных.
- Файлы базы данных заполняются информацией из мета-схемы и схемы существующей базы.
- Файлы базы данных заполняются прикладными данными из существующей базы.
Создание новой базы из empty-базы:
- Создаётся новая база данных.
- Создаются файлы базы данных.
- Файлы базы данных заполняются информацией из мета-схемы empty-базы.
Пример команды для создания новой базы данных с именем appdb из существующей базы данных с именем empty8:
prodb appdb empty8
Создание базы данных с помощью PROSTRCT CREATE
Создание базы данных с помощью утилиты prostrct create предоставляет полный контроль над созданием областей хранения и их экстентов. Вы можете контролировать:
- Размер блока базы данных.
- Количество записей в блоке в каждой области (RPB).
- Количество блоков в кластере каждой области (BPC).
- Тип области.
- Размещение экстентов в файловой системе.
Процесс создания базы данных с использованием PROSTRCT CREATE:
- Создать структурный файл (.st).
- Проверить ST-файл.
- Создать пустую базу данных.
- Заполнить пустую базу данных мета-схемой, схемой и прикладными данными.
- Проверить экстенты новой базы данных.
Рассмотрим этот процесс подробнее.
Создание структурного файла
Файл описания структуры базы данных (.st) представляет собой план будущей базы и содержит информацию для создания всех физических файлов базы данных. В этом файле вы можете указать все характеристики областей хранения, из которых база будет состоять. Структурно ST-файл состоит из трёх основных элементов:
- Блоки (Block) – это одна или более строк, используемых для описания конкретной области хранения.
- Строки (Lines) – каждая строка описывает отдельный экстент области хранения.
- Элементы строки (Tokens) – используются для описания характеристик экстента.
Вы можете создавать ST-файл в любом текстовом редакторе, при этом не забудьте сохранить его с расширением «.st». Имя структурного файла должно соответствовать названию новой базы данных.
Элементы строки
Элементы строки или «токены» – это важные строительные блоки структурного файла. Существует восемь (8) типов «токенов», но не все их обязательно использовать в каждой строке.
Area type – определяет тип области хранения. Допустимые значения:
- b – Before-Image;
- t – Two-phase commit;
- d – Schema Area и области хранения прикладных данных;
- a – After-Image;
- e – Transparent Data Encryption.
Area name – имя области хранения в двойных кавычках.
Area number – порядковый номер области хранения.
Records per block – количество записей в каждом блоке базы данных:
- Можно изменять только для областей с номерами от 7 до 32 000.
Допустимые значения: 1, 2, 4, 8, 16, 32, 64, 128 и 256. - RPB для Schema Area зафиксирован и зависит от размера блока базы данных:
- 1К, 2К, 4К = 32;
- 8К = 64.
Blocks per cluster – количество блоков в кластере для областей хранения второго типа (Type II):
- Применяется только для областей с 7 по 32 000.
Допустимые значения: 8, 64, 512. - Для создания области первого типа (Type I) не указывайте этот «токен» или установите 1 (значение по умолчанию для Type I).
- Schema Area не использует кластеры, так как всегда является областью хранения первого типа. По этой причине не рекомендуется хранить в этой области прикладные данные.
Extent pathname – абсолютный или относительный путь к файлу каждого экстента:
- Здесь необязательно указывать имя файла базы данных. Указываете только директорию. СУБД OpenEdge автоматически присвоит имя файлу.
- Допустимо использовать точку (.) для индикации относительного пути, который начинается с текущей рабочей директории.
Extent type – тип экстента, допустимы следующие значения:
- f – экстенты фиксированного размера;
- v – переменный экстент с предопределённым максимально допустимым размером;
- [blank] – переменный экстент без ограничений по размеру (ограничения накладывает операционная системы, либо пока не закончится место на диске).
Extent size – максимальный размер фиксированного экстента в килобайтах.
Правила создания структурного файла
При создании структурного файла следуйте правилам:
- Не используйте пробелы при описании имени области, номера области, RPB, BPC.
- Используйте двоеточие (:) в качестве разделителя между именем и номером области.
- Используйте запятую (,) для разделения номера области и RPB.
- Используйте точку с запятой (;) для разделения RPB и BPC.
- Используйте одинаковое значение BPC для всех экстентов области хранения, или укажите его один раз только для первого экстента. По умолчанию, если BPC указан только для первого экстента, то последующие экстенты в той же области хранения наследуют это значение.
- Если вы хотите разместить экстенты в текущем каталоге, то используйте точку (.) в качестве относительного пути. СУБД OpenEdge автоматически поместит экстент в текущий рабочий каталог.
- В Windows для задания пути к экстенту вы можете использовать либо косую черту (/), либо обратную косую черту (\). В UNIX допускается использование только косой черты (/).
Пример структурного файла:
#test.st file b . # d "Schema Area":6,32;1. # d "Employee":7,32;64 . f 320 d "Employee":7,32;64 . # a . f 320 ...
Проверка структурного файла
После создания структурного файла рекомендуется проверить корректность синтаксиса и правильность его содержимого. Если процесс проверки выявит какие-либо ошибки, структурный файл следует исправить. Такой подход защитит вас от возможных ошибок, которые могут произойти из-за некорректного структурного файла непосредственно в процессе создания базы данных. Для проверки структурного файла используется утилита prostrct create с ключом –validate.
Утилита выполняет следующие действия:
- Проверяет синтаксис и правильность содержимого файла.
- Проверяет, что размер каждого экстента кратен 16 размерам блока и больше 32.
- Проверяет, что размер экстента областей второго типа (Type II) достаточно большой, чтобы вместить по крайней мере один кластер.
- Проверяет, что директории для размещения экстентов существуют.
- Проверяет, что база данных с таким же именем не существует в указанных директориях.
- Определяет наличие свободного пространства на дисках для создания экстентов.
- Выводит отчёт о найденных ошибках.
Примечание: команда prostrct create –validate не создаёт базу данных!
Пример проверки структурного файла для базы данных test:
prostrct create test test.st -validate
Если проверка структурного файла выдала какие-либо предупреждения о размерах экстентов (например, размер экстента не кратен 16 размерам блока), то измените структурный файл согласно предложенным утилитой рекомендациям и повторите проверку.
В тоже время, если вы не сделаете указанные изменения размеров файлов, то prostrct create в момент реального создания базы данных автоматически отрегулирует размер, сделав его кратным 16 размерам блока. Но это не означает, что автоматическая корректировка отразится в структурном файле. Вы можете использовать команду prostrct list, чтобы привести .st-файл в соответствие .db-файлу базы данных после её создания.
Создание пустой базы данных
После проверки структурного файла используйте prostrct create без –validate для создания пустой базы данных. Утилита прочитает информацию об экстентах базы данных из .st-файла и создаст файлы базы данных согласно полученным описаниям.
Синтаксис команды:
prostrct create db–name .st-file -blocksize size-in-bytes
Здесь
size-in-bytes – размер блока базы данных в байтах. Допустимые значения:
- 1024
- 2048
- 4096
- 8192
Рекомендуется для UNIX использовать 8192, для Linux/Windows – 4096.
Примечание: если размер блока не будет указан, то СУБД OpenEdge использует размер страницы операционной системы.
Пример создания базы TEST с размером блока 4К:
prostrct create test test.st -blocksize 4096
Наполнение пустой базы данных
Пустая база данных содержит все экстенты, описанные в структурном файле, но не содержит информации о мета-схеме OpenEdge. Следовательно, пустая база данных не может быть использована и практически бесполезна в качестве базы данных. Чтобы заполнить такую базу мета-схемой, необходимо использовать утилиту procopy и существующую исходную базу данных. Вы можете использовать предопределённые empty-базы из инсталляционного каталога DLC, которые содержат только мета-схему, и затем создавать с нуля таблицы и индексы в базе. Единственное условие: размер блока пустой базы и empty-базы данных должны совпадать.
Но если вы используете существующую «рабочую» базу, то procopy скопирует не только мета-схему, но и описание всех объектов исходной базы (схему) и прикладные данные в новую базу данных. В этом случае пустая база данных должна полностью соответствовать структуре исходной, то есть должны быть одинаковым количество и тип областей хранения, размер блока баз данных, RPB и BPC каждой области хранения. Тем не менее целевая база данных может иметь больше областей хранения чем исходная.
Синтаксис команды proсopy:
procopy [DLC]source-db target-db
Пример копирования мета-схемы в ранее созданную базу данных test из предопределённой empty базы данных из каталога DLC, имеющей размер блока 4Кб (база test была создана с размером блока 4Кб).
procopy $DLC/empty4 test
Проверка экстентов новой базы данных
После создания базы данных рекомендуется проверить правильность создания экстентов новой базы данных утилитой prostrct list. Она выводит на экран текущую информацию об экстентах базы данных, такую как имена областей и их тип, RPB и BPC, а также имена экстентов и их размеры. Дополнительно, основываясь на полученной информации из .db-файла, будет сгенерирован новый структурный файл, которому будет присвоено имя, состоящее из имени базы данных и расширения «.st». Поэтому если вы хотите сохранить существующий структурный файл, то необходимо сделать его копию или переименовать перед выполнением команды prostrct list. Кроме того, вы можете указать имя генерируемого структурного файла, отличного от имени .st-файла базы данных, в этом случае prostrct list запишет всю информацию в указанный файл.
prostrct list db-name [.st-file]
Утилита prostrct list может работать как в офлайн, так и в онлайн.
Утилиту особенно полезно использовать сразу после добавления или удаления экстентов областей хранения. Это позволит поддерживать структурный файл в актуальном состоянии. Кроме того, если по каким-то причинам вами был удалён текущий .st-файл, то вы легко можете его восстановить, использовав утилиту prostrct list.
Перед внесением изменений в файловую структуру базы данных (добавление/удаление областей или экстентов) всегда обновляйте структурный файл утилитой prostrct list.