LINUX.ORG.RU

Создание начальной схемы БД

 


0

1

Есть прога требующая тотальной переработки, которая в процессе работы создает проекты, которые оформляются в БД в виде отдельной схемы/юзера. Сейчас создание всей структуры идет тупо в коде, хотелось бы переписать его на более кошерный вариант, в связи с чем вопрос. Как лучше создавать схему/юзера бд:

  1. вызовом скрипта, положенного в бд (всегда есть основная схема с настройками и прочим). Скрипт в файле не пройдет из-за требований безопасности;

  2. создание копированием пустой эталонной схемы;

  3. ваш вариант.

Ответ на: комментарий от man-from-36

язык разработки не позволит

Там совсем нет никаних структур данных, чтобы по ним сделать create table? Что за недоязычок? Брейнфак?

crutch_master
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от man-from-36

тоже в коде создавать

А в чём проблема? Описываешь структуру, по ней всё это делаешь. Можешь хоть тупо sql файл таскать, можешь генерить его по структуре.

crutch_master
()

liquibase. Серьезно, лучшая тулза для миграций бд. Там не только xml-dsl, еще другие форматы + поддерживает чистый sql в чейнжсетах. Версионирование, роллбеки - все это есть. Из минусов - java. Если не знаком с liquibase - это не только либа, но и standalone приложение, главное нужно ему в его либы подкинуть нужный драйвер бд.

matroskin
()
Ответ на: комментарий от vvn_black

5. Повзрослеть и выкинуть это нестабильное дерьмо, воткнуть liquibase или аналог и радоваться (нет)

izzholtik
()
Ответ на: комментарий от man-from-36

Вообще говоря, да.

@Entity
@Table(name = "users", uniqueConstraints = {@UniqueConstraint(columnNames = {"login", "deleted"})})

ORM из этих метаданных всё, что ей нужно, сгенерирует. Не делайте так на проде, офк.

izzholtik
()

Вообще, по такой постановке задачи тебе никто ничего не даст, кроме общих советов.

izzholtik
()

Мой вариант - создание пакета файлов для БД. Иногда кладу в отдельную папку, иногда в корневую. Файлы разделяю на: DDL, DML, шелл-скрипты для автоматизации задач БД.

Если нельзя файлы - ложи запросы в BLOB или TEXT. Вместо шелл-файлов напиши хранимые процедуры. Create, Update, Delete, Insert test data.

Оформи это всё в отдельную схему или используй префиксы в названии.

pup_kin
()

вызовом скрипта, положенного в бд

это, если в файле нельзя.

Каждый стейтмент в отдельной записи и парсить ненадо.

Psilocybe 👍👍
()
Последнее исправление: Psilocybe (всего исправлений: 2)

Думаю стоит посмотреть на этот вопрос от организации команды разработки. Если есть отдельный дба, который занимается разработкой структуры данных, то наверное лучше сделать в виде хранимой процедуры(набора процедур разных версий). Если структуру данных и код работающий с ней пишут одни и те же люди, то имеет смысл держать в коде определение схемы

cobold ☕☕☕☕☕
()
Ответ на: комментарий от matroskin

Версионирование, роллбеки - все это есть.

В платной версии.

anonymous
()
Ответ на: комментарий от izzholtik

из ORM под freepascal есть только mORMot, который так не умеет (но это не точно, посмотрел по диагонали). и язык сменить нельзя. и это один фиг будет захардкоживание кучи SQL-кода в приложении, от чего как раз и хочется уйти

man-from-36
() автор топика
Последнее исправление: man-from-36 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.