powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Version Control для pl/sql
25 сообщений из 67, страница 2 из 3
Version Control для pl/sql
    #39528928
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, важную вещь вспомнил

есть такой класс таблиц (термина не знаю), которые крайне редко меняются и содержимое которых как бы захардкорено. Типа
1 - файл
2 - папка
3 - диск
4 - ссылка

так вот, содержимое таких таблиц жизненно важно для правильного функционирования приложений, т.к. в их код "вкомпилировано", что 1 это файл, 2 это папка и т.д. Получается, что эти данные так же важны для целостности базы+приложений, как и сами сущности в базе, хоть они и описываются не DDL a DML

К чему я веду? Если содержимое этих таблиц (в виде INSERTов) не вести в специальном файле, то никакая автоматическая система не поможет. Потому что автоматическая система же не знает, какие таблицы заполнены обычными данными, а какие вот такими "захардкоренными"
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529020
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadМеня интересует не столько вопрос ведения версий БД в СКВ в плане хранения PL/SQL кода, сколько вопрос согласованного наката изменений схемы на Dev-Test-Prod контура.Набросал пример использования liquibase для наката sample-схемы HR. Любой желающий может скачать его и поиграться. Вот ссылки на репозиторий и пояснительную записку . Для того, чтобы понять пример, нужно хотя бы бегло ознакомиться описанием продукта .
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529038
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadПусть у нас есть два последовательных изменения, которые согласно скрипту наката должны довести систему до состояния STATE1.
STATE0 -> DDL1 -> DDL2 -> STATE1
Но в результате первого запуска первый упал, но удачно выполнился второй. Мы устранили причину падения первого и перенакатили. В результате имеем:
STATE0 -> DDL2 -> DDL1 -> STATE1'.
Задумался, есть ли такие DDL1 и DDL2, при которых STATE1 != STATE1'? Что-то не могу придумать, если кто знает, поделитесь идеей.
Код: plsql
1.
2.
alter table set unused ...;
alter table ... drop unused columns;


Хотя пример не такой критичный, так как на бизнес-логику и приложение повлиять не должен.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529063
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

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

То есть вместо того, чтобы каждый разработчик поддерживал свой DDL вручную сначала, все они "натворили", а потом пришел главный и собрал все в релиз.

Ну так для этого в основных инструментах разработчика (toad, pl/sql dev, etc) есть инструменты сравнения схем.
Генерируешь скрипт, допиливаешь руками . Здесь есть много примеров почему.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529097
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

Как собрать изменения в целостный пакет - это вопрос, к которому можно подойти с разных сторон. Можно, как ты предлагаешь, делать diff перед релизом и пилить его руками, а можно сразу класть изменения в нужном формате. Второй подход мне ближе.

Но после этого, их еще надо накатить. Тут тоже разные подходы.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529104
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Ну так мне тоже ближе писать DDL вручную.
Не совсем понятно зачем дополнительные приблуды в дополнение к системе контроля версий.

Видимо для того, чтобы автоматически генерировать релиз по изменениям, ну в таком случае я предложил бы потратить некоторое время и написать это самому.
Будь то на powershell, perl, visual basic, да хоть pure command line.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529105
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopНе совсем понятно зачем дополнительные приблуды в дополнение к системе контроля версий.Если б ты посмотрел мой пример, и те вопросы, которые я поднимал в отношении gitora, то наверное можно было бы говорить предметно.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529107
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKaddbms_photoshopНе совсем понятно зачем дополнительные приблуды в дополнение к системе контроля версий.Если б ты посмотрел мой пример, и те вопросы, которые я поднимал в отношении gitora, то наверное можно было бы говорить предметно.Если убрать эмоциональный окрас из того поста - он бы стал раза в три короче.
Но я таки напрягся и прочел его перед тем как писать предыдущее сообщение, но так и не понял твои трудности и причины использовать левые приблуды.
Для логгирования проблема добавить whenever sqlerror и spool или что?

Изменения состоят из изменений хранимого кода и DML + DDL.
Ключевой момент, что DDL + DML имеет смысл делать re-runnable. То есть при повторном выполнении чтоб не было ошибок.
Но без фанатизма - все 100500 причин по которым предыдущий скрипт упал учитывать не стоит.
re-runnable нужен для упрощения разработки, а релиз будет накатываться однократно.

Попытки применять изменения из разных веток на один environment? Тут Элик уже ответил.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529109
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

Ты смотрел мой пример с liquibase? Понял, чем он отличается от простого логгирования, whenever sqlerror, spool и как там решается вопрос re-runnable?
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529287
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Если бы мне было интересно получить фидбек по интересующему вопросу - я бы несколько иначе разговаривал.
Больше не лезу. Хорошего дня. :))
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529337
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopAmKad,

Если бы мне было интересно получить фидбек по интересующему вопросу - я бы несколько иначе разговаривал.Была тема СУБД. История изменений , где мы в дискутивной форме обсуждали этот вопрос. Правда она длинная, не уверен, станешь ли ты ее читать.
dbms_photoshopБольше не лезу. Хорошего дня. :))Спасибо, и тебе успехов.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39529741
reql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKadAmKadМеня интересует не столько вопрос ведения версий БД в СКВ в плане хранения PL/SQL кода, сколько вопрос согласованного наката изменений схемы на Dev-Test-Prod контура.Набросал пример использования liquibase для наката sample-схемы HR. Любой желающий может скачать его и поиграться. Вот ссылки на репозиторий и пояснительную записку . Для того, чтобы понять пример, нужно хотя бы бегло ознакомиться описанием продукта .
Спасибо, интересно
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39623539
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

Привет! Посмотрел ваш пример, - спасибо!
А как предполагается вносить изменения в исходные определения? тех же таблиц, к примеру.
К примеру, в одном бранче через миграцию добавилась колонка, в другом изменилась длина поля и т.д.

Если я эти изменения вношу в исходные файлы, то Liquibase ругается на изменение суммы.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39623839
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все последующие изменения схемы данных проносятся как отдельные chageset-ы. На изменение суммы LB ругается, чтобы никто задним числом после наката их не менял.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39624092
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Если я эти изменения вношу в исходные файлы, то Liquibase ругается на изменение суммы.

если ты отдаешь отчет своим действиям, то можешь обновить контрольную сумму в DatabaseChangeLog на ожидаемую. Таким обычно страдают перфекционисты, глаза которых не могут видеть 20 changeSet-ов c альтерами.

Но при таком говноподходе, можешь нажить себе врагов.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39624156
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,
Понятно, спасибо.

merch,
20 Changeset-ов видеть не проблема. Получается, чтобы где-то развернуть копию (версию), нужно будет все изменения всегда хранить/применять.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39625485
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,
Как тогда, посмотрев в SVN, увидеть актуальную версию таблицы? С кодом понятно - он в файле, которые runOnChange.
пока только видится только костыль: хранить каталог с миграциями, с "замороженным" первичным DDL, и отдельно каталог с первичным DDL+все изменения в нем,но не отслеживаемый LB..
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39625517
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Как тогда, посмотрев в SVN, увидеть актуальную версию таблицы?Снимай метаданные с БД после наката. Либо веди модель в CASE-инструменте.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39625570
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKadrun09Как тогда, посмотрев в SVN, увидеть актуальную версию таблицы?Снимай метаданные с БД после наката.
Эти метаданные ведь все равно должны лежать отдельно от LB. по сути это примерно то же что и вести изменения в нем. Спасибо!
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39625574
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Эти метаданные ведь все равно должны лежать отдельно от LB.Да.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39627838
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Как тогда, посмотрев в SVN, увидеть актуальную версию таблицы?Посмотри на DBDoc , может это то, что тебе нужно. Там и пример какой-то есть. Сам я пока не разбирался.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39630752
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

Спасибо. Пока решил административно разделить установку и миграции. Изменения вносить везде
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39630758
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Спасибо. Пока решил административно разделить установку и миграции. Изменения вносить вездеБез регулярной сверки метаданных "установка" и "миграции" гарантированно разъедутся. Инфа 146%. На мой скромный вкус вносить руками изменения в два места - это лишняя работа.
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39630799
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

С одной стороны да, двойная работа, с другой, я хотел бы регулярно поднимать "пустую" схему из "установки" . Я так понимаю, в случае только с одной "миграцией", мне нужно будет последовательно накатывать все изменения... Возможно, это и не проблема.... нужно подумать еще
...
Рейтинг: 0 / 0
Version Control для pl/sql
    #39630816
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run09Я так понимаю, в случае только с одной "миграцией", мне нужно будет последовательно накатывать все изменения...Это не так страшно, как может показаться на первый взгляд. Для тестирования времени наката с нуля я извратился следующим образом: снял метаданные с работающей БД в полторы сотни таблиц и сгенерил xml-файлы наката, в которых каждая таблица создается с одним полем. А далее все отдельные составляющие, такие как остальные поля (alter-ы), индексы + констраинты, комменты, засунул в отдельные changeset-ы. На каждый changeset один SQL-оператор и только один. Плюс recreatable-объекты: вьюхи, пакеты-процедуры и т.д.
Полный накат с нуля на чистую схему составил чуть более 1 минуты. Повторный перезапуск выполнился за несколько секунд - при совпадении хешей changeset повторно не выполняется.
...
Рейтинг: 0 / 0
25 сообщений из 67, страница 2 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Version Control для pl/sql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]