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)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.