powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Коллективная разработка в pl/sql
25 сообщений из 63, страница 2 из 3
Коллективная разработка в pl/sql
    #38895208
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZalmПриветствую!
Кто какими средствами пользуется для обеспечения разработки пакетов/процедур и тд, и как кто разграничивает доступность объектов для программистов?)
Интересуют какие-то программные решения, а не "мы с Васей договорились что я работаю над этим, а Степа над этим")

http://www.dbmaestro.com/
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38895888
кое-кто2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Максим Н http://www.dbmaestro.com/

+1 Рекомендую - очень достойный инструмент. Мы когда себе выбирали систему контроля версий для БД - он был у нас на первом месте. Не прижился по политическим причинам. Он умеет делать check-in/check-out объектов прямо в базе данных - т.е. работает для случая когда Вася с Петей не могут/не хотят договориться.

Разработчики достаточно хорошо понимают что такое версионная разработка - и достаточно отзывчивы.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38896035
скв
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кое-кто2Он умеет делать check-in/check-out объектов прямо в базеблокировку псевдообъекта в базе умеют делать тоад и, посредством плагина свцо, plsql и sql developerы. как пользовать всеми конкретный инструмент для получения кода из бд, так никто не мешает договориться в качестве источника редактирования использовать файлы для хранимого plsql со всем функционалом системы контроля версий.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38896067
кое-кто2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot скв]кое-кто2 так никто не мешает договориться в качестве источника редактирования использовать файлы для хранимого plsql со всем функционалом системы контроля версий.

с PLSQL все понятно - там единица деплоймента - целый файл (самодостаточный)-
т.e.

CREATE OR REPLACE PROCEDURE ....
END;


как быть с DDL на таблицы, к примеру ?
и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38896332
ддлятор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кое-кто2как быть с DDL на таблицы, к примеру ?
и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов.А как dbmestro определяет, что ты решил править таблицу?
В случае с таблицами держится эталонный файл c ddl создания. Система патчей - это уже скрипты с альтерами, которые сами по себе версионировать бессмысленно.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38896562
кое-кто2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ддляторА как dbmestro определяет, что ты решил править таблицу?
а структура таблицы заблокирована. чтобы изменить структуру таблицы тебе надо сделать ей check-out сначала.
ддляторВ случае с таблицами держится эталонный файл c ddl создания.
Система патчей - это уже скрипты с альтерами, которые сами по себе версионировать бессмысленно.
глобально есть два способа версионности базы данных
- держать DDL create table и вычислять разницу чтобы сгенерировать патч (как делает dbmaestro)
- держать под контролем именно все ALTER - как делают, например, Liquibase/dbup/roundhouse/... .

есть плюсы и минусы у каждого подхода.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38896629
ренаме
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кое-кто2ддляторА как dbmestro определяет, что ты решил править таблицу?
а структура таблицы заблокирована. чтобы изменить структуру таблицы тебе надо сделать ей check-out сначала.Заблокирована при правке через форму правки? Что делать с правками, недоступными через интерфейс или, если генерируемый формой код не устроил. Например, create or replace view грохает констрейнты и комменты на нее.

кое-кто2глобально есть два способа версионности базы данных
- держать DDL create table и вычислять разницу чтобы сгенерировать патч (как делает dbmaestro)
- держать под контролем именно все ALTER - как делают, например, Liquibase/dbup/roundhouse/... .

есть плюсы и минусы у каждого подхода.Первый вариант применим только для крайне узкого круга правок структуры. Сохранить ддл в процессе разработки не составляет труда, в отличие от разгребания явных и неявных зависимостей результата сравнения объектов. ddl-diff пригоден только для контроля последствий.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38896741
кое-кто2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ренамекое-кто2пропущено...

а структура таблицы заблокирована. чтобы изменить структуру таблицы тебе надо сделать ей check-out сначала.Заблокирована при правке через форму правки? Что делать с правками, недоступными через интерфейс или, если генерируемый формой код не устроил. Например, create or replace view грохает констрейнты и комменты на нее.

Заблокирована прямо в базе. Не имеет значения какой софт использовать чтобы сделать изменения в базе. Нужно только с помощью
dbMaestro сделать checkout объекта - иначе все alter table упадут с ошибкой что изменения невозможны. Если ты сказал в базе create or replace view - ты и убил констрейнты и комменты - это твое дело их воссоздать. А как только ты воссоздал, dbMaestro повторит это (с точностью до багов, если они есть в этом месте :) )

ренамекое-кто2глобально есть два способа версионности базы данных
- держать DDL create table и вычислять разницу чтобы сгенерировать патч (как делает dbmaestro)
- держать под контролем именно все ALTER - как делают, например, Liquibase/dbup/roundhouse/... .

есть плюсы и минусы у каждого подхода.Первый вариант применим только для крайне узкого круга правок структуры. Сохранить ддл в процессе разработки не составляет труда, в отличие от разгребания явных и неявных зависимостей результата сравнения объектов. ddl-diff пригоден только для контроля последствий.
1. CREATE TABLE ddl устаревает в момент первого исполнения. Чтобы изменить таблицу потом - он уже не поможет.
2.авторесть плюсы и минусы у каждого подхода
3. Как насчет того, чтобы выстроить последовательнось выполнения 17000 скриптов для патча? Чем это отличается от "разгребания явных и неявных зависимостей" но которые известны и правила не меняются?
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38896772
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кое-кто2Как насчет того, чтобы выстроить последовательнось выполнения 17000 скриптов для патча? Чем это отличается от "разгребания явных и неявных зависимостей" но которые известны и правила не меняются?Каждый выбирает себе свой вид сексуальной веры в автоматы.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38897003
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexGubinZalmпропущено...


Копец))) такой ответ аж читать глаза болят))) Русские слова не известны?)))

У нас похожая система. Каждый девелопер имеет свою схему в которой и ведет разработку.
Для каждой команды создается свой бранч в гите, после завершения разработки, все сливается в релизный бранч и накатывается на отдельный сервак. После прохождения тестинга, все накатывается на продакшен.

База поди пару гигов?
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900247
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZalmКто какими средствами пользуется для обеспечения разработки пакетов/процедур и тд, и как кто разграничивает доступность объектов для программистов?)

Имеется:
- DEV база одна на всех;
- репозиторий SVN;
- установленный на каждой рабочей станции клиент SVN;

Перед началом изменений выполняется Lock в SVN файла объекта, изменяется на DEV-базе до нужной кондиции, после этого выполняется Commit в SVN и Deploy на TEST-сервер.

Принято соглашение, что если объект залочен - никто другой в это время работать с ним не может (ни на DEV-базе, ни с файлом в SVN). Нужно либо договариваться об Unlock, либо вести разработку в отдельной копии пакета.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900260
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кое-кто2как быть с DDL на таблицы, к примеру ?
и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов.

Возможно, не совсем понял проблему, но что мешает в системе контроля версий завести файлик DDL_{имя_таблицы}.sql. В первой ревизии будет CREATE_TABLE, во второй и всех последующих: необходимые ALTER. И в случае необходимости накатывать эти ревизии последовательно до нужной кондиции...
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900277
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZalmПриветствую!
Кто какими средствами пользуется для обеспечения разработки пакетов/процедур и тд, и как кто разграничивает доступность объектов для программистов?)
Интересуют какие-то программные решения, а не "мы с Васей договорились что я работаю над этим, а Степа над этим")

Из моего опыта разных организаций оптимальным видится такой подход:

1. Делается "эталон" - регулярно обновляемая схема с некоторым набором данных- типичные ситуации.
2. Для разработки используется схемы на усмотрения разработчиков. Хотят- одну на несколько человек, хотят- одну на каждого, 10 на каждого.
3. Для тестирования тоже может подниматься нужное количество схем. Тестировщики могу вести свои схемы с привычными им данными. Как- решают сами.
4. Есть большая схема данных для тестирования производительности. Архитектор решает, когда и что на ней тестировать.
5. Есть схема для тестирования релизов (если они есть и их тестируют).

Код хранится в системе контроля версий. VSS - уродство и кошмар, лучше svn/git/hg. Чтобы разработчики не мешали друг другу, надо иметь разработчиков с мозгами. Безмозглые находятся и удаляются. Разделение кода- именно что "мы с Васей договорились", т.к. формализация разработки только тормозит разработку. Это я говорю как человек, потративший немало сил на замену VSS (где файлы блокируются монопольно) на SVN (где всё решается мержем потом). git/hg лучше, т.к. merge там умнее.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900282
Де Пендант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmberitПеред началом изменений выполняется Lock в SVN файла объектачто есть файл объекта?
Один меняет тип поля таблицы, другой view с использованием синонима на эту таблицу, третий триггер на эту вью, четвертый меняет сигнатуру функции, используемой этим триггером.

ZalmAlexGubinУ нас похожая система. Каждый девелопер имеет свою схему в которой и ведет разработку.
Для каждой команды создается свой бранч в гите, после завершения разработки, все сливается в релизный бранч и накатывается на отдельный сервак. После прохождения тестинга, все накатывается на продакшен.База поди пару гигов?Не так много систем, где разработчики сидят на проде, где есть полный объем БД. А неполнота (или переполнота) может быть выбрана исходя из возможностей и целей решаемых разработчиком задач.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900305
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amberitкое-кто2как быть с DDL на таблицы, к примеру ?
и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов.

Возможно, не совсем понял проблему, но что мешает в системе контроля версий завести файлик DDL_{имя_таблицы}.sql. В первой ревизии будет CREATE_TABLE, во второй и всех последующих: необходимые ALTER. И в случае необходимости накатывать эти ревизии последовательно до нужной кондиции...

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

У нас ещё был самописный софт, который при мерже кода брал последний номер и создавал файл DDL_1234.sql в котором делалось всё, что нужно для этой ветки. Точнее всё было не так, т.к. использовалось VSS, но это неважно :D
Соответственно взяв эталонный дамп последнего релиза и выполнив сотню скриптов, получали эталон следующего релиза.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900311
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Де Пендантчто есть файл объекта?
Один меняет тип поля таблицы, другой view с использованием синонима на эту таблицу, третий триггер на эту вью, четвертый меняет сигнатуру функции, используемой этим триггером.
В описанном Вами случае это будет:
- изменения файла таблицы ddl_table.sql;
- изменение файла представления vw_1.viw;
- изменение файла триггера table_biud.trg;
- изменение файла функции func_1.fnc;
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900388
AmberitДе Пендантчто есть файл объекта?
Один меняет тип поля таблицы, другой view с использованием синонима на эту таблицу, третий триггер на эту вью, четвертый меняет сигнатуру функции, используемой этим триггером.
В описанном Вами случае это будет:
- изменения файла таблицы ddl_table.sql;
- изменение файла представления vw_1.viw;
- изменение файла триггера table_biud.trg;
- изменение файла функции func_1.fnc;То есть, на уровне файлов каждый имеет свой лок, а на уровне базы ждут друг от друга реализации зависимостей или получают постоянные инвалидации. Все равно общаться напрямую и договариваться о работах. Неленивый архитектор поможет нетупому менеджеру разбить проект на подзадачи, выстроить зависимости, запланировать реализацию, включая зависимости БД с аналитикой, админами, прикладниками.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900446
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бардак усамаТо есть, на уровне файлов каждый имеет свой лок, а на уровне базы ждут друг от друга реализации зависимостей или получают постоянные инвалидации.


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

Бардак усамаВсе равно общаться напрямую и договариваться о работах.
Только в том случае, когда необходимый файл залочен в SVN. При нормальной декомпозиции системы и распределении работ такое у нас случается достаточно редко.

Бардак усамаНеленивый архитектор поможет нетупому менеджеру...
Если мы имеем ленивого архитектора, тупого менеджера и просто кодера то, к сожалению, слово СЧАСТЬЕ из этих букв не складывается...
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900869
Кое-кто2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Amberitкое-кто2как быть с DDL на таблицы, к примеру ?
и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов.

Возможно, не совсем понял проблему, но что мешает в системе контроля версий завести файлик DDL_{имя_таблицы}.sql. В первой ревизии будет CREATE_TABLE, во второй и всех последующих: необходимые ALTER. И в случае необходимости накатывать эти ревизии последовательно до нужной кондиции...

КАК накатывать ? Ручками копировать нужную команду в sql plus ?
На самом деле Liquibase практически это и делает. :) Только ему нужно указать имя (changeset id) для каждого alter table - и он будет пропускать то, что уже было выполнено в прошлый раз.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38900906
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кое-кто2КАК накатывать ? Ручками копировать нужную команду в sql plus ?

Сделать .sql из
Код: sql
1.
2.
3.
@patch00001.sql
...
@patch02546.sql


Несложно.

ZalmAlexGubinпропущено...


У нас похожая система. Каждый девелопер имеет свою схему в которой и ведет разработку.
Для каждой команды создается свой бранч в гите, после завершения разработки, все сливается в релизный бранч и накатывается на отдельный сервак. После прохождения тестинга, все накатывается на продакшен.

База поди пару гигов?

А зачем _разработчику_ больше? У него небольшой набор данных, часть- общее (типа КЛАДР и базовых своих справочников) часть- под его задачу.
Вот я разрабатывал софт, работающий у филиалов Ростелекома. Что мне, делать это на БД с 10 млн абонентов и соответствующим количеством услуг и звонков?
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38901513
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominЭто я говорю как человек, потративший немало сил на замену VSS
Никак не могу у себя в отделе продавить идею "блокировок" на этапе разбора задачи и решения конфликтов при помощи merge.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38901525
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CasufiAlexey TominЭто я говорю как человек, потративший немало сил на замену VSS
Никак не могу у себя в отделе продавить идею "блокировок" на этапе разбора задачи и решения конфликтов при помощи merge.

Надо.
1. Чтобы была задача, когда НАДО коллективно менять код.
2. Заменить все самописные скрипты, если они есть.

У меня 2 было малореальным, поэтому заменил только для некоторых проектов.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38901585
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominА зачем _разработчику_ больше?ну банально - сделать бенчмарк двух подходов на объемах, близких к реальным. понять, какой быстрее. разобраться почему. учесть в работе.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38901597
кит северных морейAlexey TominА зачем _разработчику_ больше?ну банально - сделать бенчмарк двух подходов на объемах, близких к реальным. понять, какой быстрее. разобраться почему. учесть в работе.Возвращаясь к начальному посылу про подход с копией для каждого разработчика. Полноценный тест сравнения производительности предполагает идентичное начальное состояние, а не все тесты оставляют БД неизменной. При групповом насиловании БД результаты теста могут быть неадекватными. Посему эталонная база так или иначе требует клонирования или рестора к начальной точке и эксклюзивного владения.
Неполноценный тест вполне можно провести нагенерив данные скриптиком поверх компактного разработческого клона.
...
Рейтинг: 0 / 0
Коллективная разработка в pl/sql
    #38901642
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
датапумп схем внутри бдНеполноценный тест вполне можно провести нагенерив данные скриптиком поверх компактного разработческого клона.ок. вот недавняя задача из практики. две таблички, не очень маленькие, не очень большие - по 300М строк, 50 и 150гб без индексов. нужно отфильтровать ту, что поменьше, той, что побольше, и обновить несколько полей в отфильтрованном наборе на некоторые рассчитанные значения. задача не разовая. я рассматриваю два варианта - один сложный dml или несколько простых dml по цепочке временных таблиц (вопрос консистентности для ясности вынесем за скобки). мне не нужен полноценный тест, мне нужно оценить, будут ли они сопоставимы, или один окажется на порядок/порядки быстрее другого. с какого процента от реального объема можно начинать такую оценку?
...
Рейтинг: 0 / 0
25 сообщений из 63, страница 2 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Коллективная разработка в pl/sql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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