Проектирование базы данных Celesta в DBSchema

Материал из Course Orchestra
Перейти к: навигация, поиск

1. Справочник Celesta

1.1 Введение и основные понятия
1.2 Запуск и авто-обновление
1.3 Базовая настройка
1.4 Системные таблицы
1.5 CelestaSQL
1.6 CelestaDoc
1.7 Контексты сессии и вызова
1.8 Курсоры
1.9 BLOB-поля
1.10 Option-поля
1.11 Защита от потерянных обновлений
1.12 Метаданные Celesta
1.13 CelestaUnit

2. Celesta и базы данных

2.1 Особенности работы Celesta с поддерживаемыми типами СУБД
2.2 Проектирование базы данных Celesta в DBSchema

3. Создание решений с использованием Celesta для ShowCase

3.1 Программа обучения Celesta
3.2 Подготовка рабочего места для работы с Celesta
3.2.1 Для разработчиков платформы
3.2.2 Для разработчиков решений
3.3 Системные гранулы Celesta
3.3.1 common
3.3.1.1 Экспорт/импорт данных
3.3.1.2 Навигатор
3.3.1.3 Серии номеров
3.3.1.4 Иерархия Дьюи
3.3.1.5 Системные функции
3.3.1.6 Реестр настроек
3.3.1.7 Mailsender
3.3.1.8 Common.filter
3.3.2 common.api
3.3.4 security
3.3.3 lyra
3.4 Стандартные гранулы Celesta
3.4.1 dirusing
3.4.2 workflow
3.4.3 File repository
3.5 Отрисовка элементов Showcase при помощи Celesta
3.5.1 Конвертер XML-JSON
3.5.2 Навигатор (Navigator)
3.5.3 Информационная панель (Datapanel)
3.5.4 Серверное действие (Server activity)
3.5.5 Вебтекст (WebText)
3.5.6 Грид (Grid)
3.5.6.1 Панель инструментов (ToolBar)
3.5.7 XForms
3.5.7.1 Селекторы
3.5.7.2 Submission
3.5.7.3 Загрузка/Выгрузка файлов (Upload/Download)

5. Решение проблем

5.1 Проблемы с кодировкой jython-файлов

Синхронизация метаданных Celesta и проекта DBSchema

Система DBSchema представляет собой удобный инструмент визуального моделирования структуры базы данных. Имеется возможность полностью замоделировать в DBSchema всю информацию Celesta о структуре БД (таблицы, поля, ключи, индексы), а также наоборот — превратить существующий Score в проект DBSchema.

Dbschemascreen.png

Настройка системы

Для работы вам понадобится:

  1. DBSchema (программа проприетарная, для работы необходимо приобретать лицензию).
  2. Утилита schemasync.jar.
  3. Папка с настройками Celesta для DBSchema, которую надо поместить в %userprofile%\.DbSchema\config\rdbms\. В настройках прописаны шесть типов данных, доступных в Celesta.

Актуальную версию утилиты schemasync.jar и папки с настройками для DBSchema (dbschemasync.zip) следует брать с Jenkins: http://jenkins.curs.ru:1111/job/dbschemasync-maven/.

Запуск синхронизации

Утилита schemasync.jar принимает два параметра:

  • Score path
  • имя DBS-файла (проекта DBSchema)

Направление синхронизации определяется последовательностью аргументов: если первым аргументом идёт Score Path, то синхронизация идёт от Score к проекту DBSchema, если же первым аргументом идёт имя проекта DBSchema, то синхронизация идёт от DBSchema к Score.

Так как в процессе работы синхронизация запускается часто, для облегчения работы рекомендуется завести два cmd-файла, в которых прописать необходимые аргументы.

Пример файла score2schema.cmd:

java -jar schemasync.jar "c:/temp/dbschema/score/" "c:/temp/dbschema/schema.dbs"

Пример файла schema2score.cmd:

java -jar schemasync.jar "c:/temp/dbschema/schema.dbs" "c:/temp/dbschema/score/" 

Особенности работы при дизайне структуры БД

1. Всё, что находится в CelestaDoc, переводится в Documentation-поля DBSchema, и наоборот.

Dbschemascreen3.png

2. Опции таблицы (WITH (NO) VERSION CHECK, WITH READ ONLY...) находятся на вкладке Storage:

Dbschemascreen4.png


3. В DBSchema, чтобы задать версию гранулы, необходимо модифицировать мнимую "хранимую процедуру", имеющую то же название, что и гранула (сами хранимые процедуры для Celesta в DBSchema, естественно, не моделируются):

Dbschemascreen2.png

Создание CelestaSQL-скриптов на основе структуры существующей БД

Эта технология рекомендована всем, у кого возникнет задача создания CelestaSQL-скриптов для уже существующей базы данных. Использование каких-либо иных путей (например, выгрузка SQL-скрипта из базы данных и ручная его "вычистка") по опыту является гораздо более трудоёмким занятияем!

Для этого требуется программа DBSchema с установленной поддержкой Celesta. Шаги следующие:

  1. Присоединяем DBSchema к нужной базе данных и методом Reverse Engineering закачиваем всю нужную нам структуру (на этом этапе можно ограничиться только теми таблицами и связями, которые нас интересуют в celesta). Убедитесь, что "забрали" все нужные таблицы, т. к. на следущих шагах проект придётся "отсоединить" от базы данных и автоматически получить сведения о таблицах уже не получится.
  2. Отключаем DBSchema от базы данных (offline) и меняем тип базы с SQL Server на Celesta через меню Project-->Project Settings (естественно, предполагается, что к этому моменту в DBSchema установлена надстройка для синхронизации с Celesta из файла dbschemasetup.zip). Откроется окно, в котором DBSchema предложит сопоставить типы. Здесь надо всё правильно сделать: например, для SQL Server decimal(10,3) перевести в REAL, varchar(max) — в TEXT, uuid в varchar(36) и так далее.
  3. После нажатия на OK мы получаем DBSchema-проект, ориентированный на Челесту (в этот момент его уместно сохранить в отдельном месте: он больше не привязан к исходной базе данных). Однако это — некорректный проект, т. к. нет деления на гранулы, гранулам не даны объявления, и, что главное — в нём ещё много фич, нехарактерных для Челесты. На этом этапе мы вручную должны создать гранулы (схемы) и разложить по ним таблицы.
  4. Если теперь воспользоваться утилитой schemasync.jar, то мы, скорее всего, получим сообщения об ошибках, т. к. проект остаётся некорректным. Поэтому следует воспользоваться командой Schema-->Generate Schema Script для выгрузки всех таблиц в один sql-файл. Получившийся скрипт будет очень хорошим приближением к Celesta-скрипту, и вот это приближение уже удобно доделать вручную: убрать неподдерживаемые фичи, раздробить на разные файлы, что-то сделать с названиями длиннее 30 символов и т. д.
  5. Настало время пробовать запускать Celesta с вашими скриптами.
  6. Если вы дальше желаете использовать DBSchema, то лишь после того, как Celesta "согласится" работать с вашими скриптами, имеет смысл воспользоваться утилитой schemasync.jar для связи с абсолютно пустым проектом dbschema ("промежуточный" проект DBSchema вы можете удалить). Это связано с тем, что в schemasync.jar встроен "челестовский" парсер SQL-скриптов, и он не сможет работать с тем, с чем не может работать сама Celesta.

Выгрузка в PlantUML

Третья опция командной строки -adoc в режиме конвертации из DBSchema в score параллельно формирует диаграммы в формате PlantUML для каждой из диаграмм DBSchema. Имена файлов диаграмм соответствуют названиям листов DBSchema с диаграммами.