|
|
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
ZalmПриветствую! Кто какими средствами пользуется для обеспечения разработки пакетов/процедур и тд, и как кто разграничивает доступность объектов для программистов?) Интересуют какие-то программные решения, а не "мы с Васей договорились что я работаю над этим, а Степа над этим") http://www.dbmaestro.com/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 22:31 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
Максим Н http://www.dbmaestro.com/ +1 Рекомендую - очень достойный инструмент. Мы когда себе выбирали систему контроля версий для БД - он был у нас на первом месте. Не прижился по политическим причинам. Он умеет делать check-in/check-out объектов прямо в базе данных - т.е. работает для случая когда Вася с Петей не могут/не хотят договориться. Разработчики достаточно хорошо понимают что такое версионная разработка - и достаточно отзывчивы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:25 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
кое-кто2Он умеет делать check-in/check-out объектов прямо в базеблокировку псевдообъекта в базе умеют делать тоад и, посредством плагина свцо, plsql и sql developerы. как пользовать всеми конкретный инструмент для получения кода из бд, так никто не мешает договориться в качестве источника редактирования использовать файлы для хранимого plsql со всем функционалом системы контроля версий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:32 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
[quot скв]кое-кто2 так никто не мешает договориться в качестве источника редактирования использовать файлы для хранимого plsql со всем функционалом системы контроля версий. с PLSQL все понятно - там единица деплоймента - целый файл (самодостаточный)- т.e. CREATE OR REPLACE PROCEDURE .... END; как быть с DDL на таблицы, к примеру ? и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:48 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
кое-кто2как быть с DDL на таблицы, к примеру ? и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов.А как dbmestro определяет, что ты решил править таблицу? В случае с таблицами держится эталонный файл c ddl создания. Система патчей - это уже скрипты с альтерами, которые сами по себе версионировать бессмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 17:05 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
ддляторА как dbmestro определяет, что ты решил править таблицу? а структура таблицы заблокирована. чтобы изменить структуру таблицы тебе надо сделать ей check-out сначала. ддляторВ случае с таблицами держится эталонный файл c ddl создания. Система патчей - это уже скрипты с альтерами, которые сами по себе версионировать бессмысленно. глобально есть два способа версионности базы данных - держать DDL create table и вычислять разницу чтобы сгенерировать патч (как делает dbmaestro) - держать под контролем именно все ALTER - как делают, например, Liquibase/dbup/roundhouse/... . есть плюсы и минусы у каждого подхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 20:29 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
кое-кто2ддляторА как dbmestro определяет, что ты решил править таблицу? а структура таблицы заблокирована. чтобы изменить структуру таблицы тебе надо сделать ей check-out сначала.Заблокирована при правке через форму правки? Что делать с правками, недоступными через интерфейс или, если генерируемый формой код не устроил. Например, create or replace view грохает констрейнты и комменты на нее. кое-кто2глобально есть два способа версионности базы данных - держать DDL create table и вычислять разницу чтобы сгенерировать патч (как делает dbmaestro) - держать под контролем именно все ALTER - как делают, например, Liquibase/dbup/roundhouse/... . есть плюсы и минусы у каждого подхода.Первый вариант применим только для крайне узкого круга правок структуры. Сохранить ддл в процессе разработки не составляет труда, в отличие от разгребания явных и неявных зависимостей результата сравнения объектов. ddl-diff пригоден только для контроля последствий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 21:49 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
ренамекое-кто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 скриптов для патча? Чем это отличается от "разгребания явных и неявных зависимостей" но которые известны и правила не меняются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 06:15 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
кое-кто2Как насчет того, чтобы выстроить последовательнось выполнения 17000 скриптов для патча? Чем это отличается от "разгребания явных и неявных зависимостей" но которые известны и правила не меняются?Каждый выбирает себе свой вид сексуальной веры в автоматы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 07:48 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
AlexGubinZalmпропущено... Копец))) такой ответ аж читать глаза болят))) Русские слова не известны?))) У нас похожая система. Каждый девелопер имеет свою схему в которой и ведет разработку. Для каждой команды создается свой бранч в гите, после завершения разработки, все сливается в релизный бранч и накатывается на отдельный сервак. После прохождения тестинга, все накатывается на продакшен. База поди пару гигов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 11:57 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
ZalmКто какими средствами пользуется для обеспечения разработки пакетов/процедур и тд, и как кто разграничивает доступность объектов для программистов?) Имеется: - DEV база одна на всех; - репозиторий SVN; - установленный на каждой рабочей станции клиент SVN; Перед началом изменений выполняется Lock в SVN файла объекта, изменяется на DEV-базе до нужной кондиции, после этого выполняется Commit в SVN и Deploy на TEST-сервер. Принято соглашение, что если объект залочен - никто другой в это время работать с ним не может (ни на DEV-базе, ни с файлом в SVN). Нужно либо договариваться об Unlock, либо вести разработку в отдельной копии пакета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 16:36 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
кое-кто2как быть с DDL на таблицы, к примеру ? и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов. Возможно, не совсем понял проблему, но что мешает в системе контроля версий завести файлик DDL_{имя_таблицы}.sql. В первой ревизии будет CREATE_TABLE, во второй и всех последующих: необходимые ALTER. И в случае необходимости накатывать эти ревизии последовательно до нужной кондиции... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 16:44 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
ZalmПриветствую! Кто какими средствами пользуется для обеспечения разработки пакетов/процедур и тд, и как кто разграничивает доступность объектов для программистов?) Интересуют какие-то программные решения, а не "мы с Васей договорились что я работаю над этим, а Степа над этим") Из моего опыта разных организаций оптимальным видится такой подход: 1. Делается "эталон" - регулярно обновляемая схема с некоторым набором данных- типичные ситуации. 2. Для разработки используется схемы на усмотрения разработчиков. Хотят- одну на несколько человек, хотят- одну на каждого, 10 на каждого. 3. Для тестирования тоже может подниматься нужное количество схем. Тестировщики могу вести свои схемы с привычными им данными. Как- решают сами. 4. Есть большая схема данных для тестирования производительности. Архитектор решает, когда и что на ней тестировать. 5. Есть схема для тестирования релизов (если они есть и их тестируют). Код хранится в системе контроля версий. VSS - уродство и кошмар, лучше svn/git/hg. Чтобы разработчики не мешали друг другу, надо иметь разработчиков с мозгами. Безмозглые находятся и удаляются. Разделение кода- именно что "мы с Васей договорились", т.к. формализация разработки только тормозит разработку. Это я говорю как человек, потративший немало сил на замену VSS (где файлы блокируются монопольно) на SVN (где всё решается мержем потом). git/hg лучше, т.к. merge там умнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 16:51 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
AmberitПеред началом изменений выполняется Lock в SVN файла объектачто есть файл объекта? Один меняет тип поля таблицы, другой view с использованием синонима на эту таблицу, третий триггер на эту вью, четвертый меняет сигнатуру функции, используемой этим триггером. ZalmAlexGubinУ нас похожая система. Каждый девелопер имеет свою схему в которой и ведет разработку. Для каждой команды создается свой бранч в гите, после завершения разработки, все сливается в релизный бранч и накатывается на отдельный сервак. После прохождения тестинга, все накатывается на продакшен.База поди пару гигов?Не так много систем, где разработчики сидят на проде, где есть полный объем БД. А неполнота (или переполнота) может быть выбрана исходя из возможностей и целей решаемых разработчиком задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 16:54 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
Amberitкое-кто2как быть с DDL на таблицы, к примеру ? и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов. Возможно, не совсем понял проблему, но что мешает в системе контроля версий завести файлик DDL_{имя_таблицы}.sql. В первой ревизии будет CREATE_TABLE, во второй и всех последующих: необходимые ALTER. И в случае необходимости накатывать эти ревизии последовательно до нужной кондиции... Только не таблицы, а всей схемы. Иначе будут проблемы, когда надо обновить данные в нескольких таблицах при изменении структур. У нас ещё был самописный софт, который при мерже кода брал последний номер и создавал файл DDL_1234.sql в котором делалось всё, что нужно для этой ветки. Точнее всё было не так, т.к. использовалось VSS, но это неважно :D Соответственно взяв эталонный дамп последнего релиза и выполнив сотню скриптов, получали эталон следующего релиза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 17:03 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
Де Пендантчто есть файл объекта? Один меняет тип поля таблицы, другой view с использованием синонима на эту таблицу, третий триггер на эту вью, четвертый меняет сигнатуру функции, используемой этим триггером. В описанном Вами случае это будет: - изменения файла таблицы ddl_table.sql; - изменение файла представления vw_1.viw; - изменение файла триггера table_biud.trg; - изменение файла функции func_1.fnc; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 17:07 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
AmberitДе Пендантчто есть файл объекта? Один меняет тип поля таблицы, другой view с использованием синонима на эту таблицу, третий триггер на эту вью, четвертый меняет сигнатуру функции, используемой этим триггером. В описанном Вами случае это будет: - изменения файла таблицы ddl_table.sql; - изменение файла представления vw_1.viw; - изменение файла триггера table_biud.trg; - изменение файла функции func_1.fnc;То есть, на уровне файлов каждый имеет свой лок, а на уровне базы ждут друг от друга реализации зависимостей или получают постоянные инвалидации. Все равно общаться напрямую и договариваться о работах. Неленивый архитектор поможет нетупому менеджеру разбить проект на подзадачи, выстроить зависимости, запланировать реализацию, включая зависимости БД с аналитикой, админами, прикладниками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 17:55 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
Бардак усамаТо есть, на уровне файлов каждый имеет свой лок, а на уровне базы ждут друг от друга реализации зависимостей или получают постоянные инвалидации. Да, так и есть. Обычно решается организационно, т.е. тот разработчик, кот. добавляет новое поле в таблицу, также дорабатывает соответствующий функционал, использующий это новое поле, и т.д. Бардак усамаВсе равно общаться напрямую и договариваться о работах. Только в том случае, когда необходимый файл залочен в SVN. При нормальной декомпозиции системы и распределении работ такое у нас случается достаточно редко. Бардак усамаНеленивый архитектор поможет нетупому менеджеру... Если мы имеем ленивого архитектора, тупого менеджера и просто кодера то, к сожалению, слово СЧАСТЬЕ из этих букв не складывается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 19:02 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
Amberitкое-кто2как быть с DDL на таблицы, к примеру ? и еще учесть то что эти DDL строго инкрементальные - нельзя пропустить ни одной версии. Этого требования нет в хранении версий файлов. Возможно, не совсем понял проблему, но что мешает в системе контроля версий завести файлик DDL_{имя_таблицы}.sql. В первой ревизии будет CREATE_TABLE, во второй и всех последующих: необходимые ALTER. И в случае необходимости накатывать эти ревизии последовательно до нужной кондиции... КАК накатывать ? Ручками копировать нужную команду в sql plus ? На самом деле Liquibase практически это и делает. :) Только ему нужно указать имя (changeset id) для каждого alter table - и он будет пропускать то, что уже было выполнено в прошлый раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 10:50 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
Кое-кто2КАК накатывать ? Ручками копировать нужную команду в sql plus ? Сделать .sql из Код: sql 1. 2. 3. Несложно. ZalmAlexGubinпропущено... У нас похожая система. Каждый девелопер имеет свою схему в которой и ведет разработку. Для каждой команды создается свой бранч в гите, после завершения разработки, все сливается в релизный бранч и накатывается на отдельный сервак. После прохождения тестинга, все накатывается на продакшен. База поди пару гигов? А зачем _разработчику_ больше? У него небольшой набор данных, часть- общее (типа КЛАДР и базовых своих справочников) часть- под его задачу. Вот я разрабатывал софт, работающий у филиалов Ростелекома. Что мне, делать это на БД с 10 млн абонентов и соответствующим количеством услуг и звонков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 11:07 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
Alexey TominЭто я говорю как человек, потративший немало сил на замену VSS Никак не могу у себя в отделе продавить идею "блокировок" на этапе разбора задачи и решения конфликтов при помощи merge. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 15:51 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
CasufiAlexey TominЭто я говорю как человек, потративший немало сил на замену VSS Никак не могу у себя в отделе продавить идею "блокировок" на этапе разбора задачи и решения конфликтов при помощи merge. Надо. 1. Чтобы была задача, когда НАДО коллективно менять код. 2. Заменить все самописные скрипты, если они есть. У меня 2 было малореальным, поэтому заменил только для некоторых проектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 15:57 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
Alexey TominА зачем _разработчику_ больше?ну банально - сделать бенчмарк двух подходов на объемах, близких к реальным. понять, какой быстрее. разобраться почему. учесть в работе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 16:42 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
кит северных морейAlexey TominА зачем _разработчику_ больше?ну банально - сделать бенчмарк двух подходов на объемах, близких к реальным. понять, какой быстрее. разобраться почему. учесть в работе.Возвращаясь к начальному посылу про подход с копией для каждого разработчика. Полноценный тест сравнения производительности предполагает идентичное начальное состояние, а не все тесты оставляют БД неизменной. При групповом насиловании БД результаты теста могут быть неадекватными. Посему эталонная база так или иначе требует клонирования или рестора к начальной точке и эксклюзивного владения. Неполноценный тест вполне можно провести нагенерив данные скриптиком поверх компактного разработческого клона. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 16:53 |
|
||
|
Коллективная разработка в pl/sql
|
|||
|---|---|---|---|
|
#18+
датапумп схем внутри бдНеполноценный тест вполне можно провести нагенерив данные скриптиком поверх компактного разработческого клона.ок. вот недавняя задача из практики. две таблички, не очень маленькие, не очень большие - по 300М строк, 50 и 150гб без индексов. нужно отфильтровать ту, что поменьше, той, что побольше, и обновить несколько полей в отфильтрованном наборе на некоторые рассчитанные значения. задача не разовая. я рассматриваю два варианта - один сложный dml или несколько простых dml по цепочке временных таблиц (вопрос консистентности для ясности вынесем за скобки). мне не нужен полноценный тест, мне нужно оценить, будут ли они сопоставимы, или один окажется на порядок/порядки быстрее другого. с какого процента от реального объема можно начинать такую оценку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 17:28 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=38896067&tid=1886635]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
161ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 513ms |

| 0 / 0 |
