|
Совместная разработка
|
|||
---|---|---|---|
#18+
Камрады, расскажите, как у вас организована совместная работа нескольких разработчиков БД под Firebird. Если с исходниками на Delphi все очевидно (TortoiseSVN), то как организовать в случае метаданных БД - непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 09:00 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
У меня "исходники" базы данных - набор скритов в текстовых файлах, как модули Delphi. Вся база "компилируется" батником. Даже несколько батников, потому что у меня разные базы для филиалов и для головного офиса и прочие. Базы по сути разные, а большинство модулей из которых они строятся - общие. Также батником накатываю апдейты, либо Ctrl-F12 в IBExpert. Незначительные изменения метаданных могу делать ручками в IBExpert, синхронизируя их с "исходниками". Работаю так уже второй десяток лет. Не вижу проблем, только преимущества ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 10:36 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
Hello, CyberMax! You wrote on 23 апреля 2014 г. 10:53:46: CyberMax> Если с исходниками на Delphi все очевидно (TortoiseSVN), то как > организовать в случае метаданных БД - непонятно. всё аналогично. зы: а Tortoise - говно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 10:54 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
Мимопроходящийзы: а Tortoise - говно. Чем тогда пользоваться? Подружить XE3 с SVN-сервером встроенными средствами так и не удалось - среда либо выдает невразумительные ошибки, либо просто валится. Если у кого есть опыт подобной настройки - расскажите, буду признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 11:03 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
отделяй мух. от котлет. среде не нужна система контроля версий. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 11:09 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
Мимопроходящий, Не понимаю. Какой среде и почему не нужна? И что тогда использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 11:12 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
Hello, CyberMax! You wrote on 23 апреля 2014 г. 11:19:44: CyberMax> Не понимаю. Какой среде и почему не нужна? никакой среде не нужна. CyberMax> И что тогда использовать? то что тебе нравится. я высказал свою личную точку зрения. как только какая-то левая хрень пытается внедриться в шелл винды, хочется взять и уебать. (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 11:23 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
Версируем метаданные только на этапе выпуска очередного релиза. И то просто для порядка. Никакой функциональной нагрузки этот процесс фиксации метаданных нового релиза не несёт. До выпуска релиза команда работает на общей базе без промежуточных фиксаций версий метаданных и без разделения авторства. У нас разработчики чётко делят "сферы влияния", так что вопрос об авторстве изменений в тех или иных объектах базы не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2014, 11:46 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
Коллеги, решил поделиться своим решением! Описание решения Давно осознал, что использование VCS (version control system) для хранения метаданных БД при разработке, однопользовательской или многопользовательской, просто необходимо. Технология примерно такая: 1. На сервере VCS хранятся файлы скриптов: - Создание таблиц, индексов (наиболее статическая информация) - файлы процедур (каждая процедура в своем файле). Все процедуры в отдельной папке - файлы триггеров (каждый триггер в своем файле). Все триггеры в отдельной папке. - файлы представлений (View, каждое в своем файле). Все представления в отдельной папке. 2. редактируем/создаем, погружаем в VCS 3. Собираем БД из скриптов и получаем модель (эталон) Основная сложность - сборка БД из скриптов (зависимости между Procedure, Trigger, View). Можно создать какой-то свой сборщик. Но есть IBExpert. Можно генерить как непосредственно файл БД, так и общий файл скрипта (не принципиально, можно и то и то). Разрешение зависимостей на этапе сборки БД производится с использования конструкции CREATE or ALTER procedure. Скрипт создания БД сначала генерит "пустые" процедуры, Потом создаются View (с учетом зависимостей между собой, у нас их нет, но вдруг появятся), Потом создаются Triggers, И в завершение – полные тела процедур. Размещение процедур, триггеров и представлений по отдельным папкам поможет исключить дополнительные усилия по анализу очередности обработки каждого файла, по сравнению с решением, при котором бы все файлы лежали в общей папке. Разделение объектов по файлам облегчит сравнение версий, уменьшит трафик при синхронизации, и имеет естественное восприятие, т.к. объекты являются атомарными на уровне БД. Все файлы хранятся в кодировке WIN1251: Конвертация WIN1251 -> UTF8 будет произведена самим сервером FB. В любом менеджере для работы с БД в настройках подключения можно указать WIN1251. Применительно к IBExpert, использование WIN1251 при подключении приводит к нормальному отображению текстов Exception (есть особенности их хранения на сервере) и автоматическому формату сохраняемых файлов как ANSI. Подтверждение оправданности предлагаемого решения: 1. «PLSQL Standards Developed for the PLSQL Starter Framework» в главе «Source Code Control» (Copyright © 1997 - 2010 by Bill Coulam of DBArtisans.com): Remember to never modify the PL/SQL stored in the database. Work from the source code file instead. Yes, modifying the compiled code inside the database is technically feasible, but a really bad idea. It is comparable in some ways to modifying Java bytecode or C object files. 2. http://blog.codinghorror.com/get-your-database-under-version-control/ (кратко и в самую точку) опытного буржуина https://en.wikipedia.org/wiki/Jeff_Atwood Во вложении все скрипты. Перед запуском, произвести правку путей в файле "create_database.sql". Главный скрипт "0.prepare_DB.sql" открывается и запускается из окна Script Executive (CTRL+F12). По умолчанию, IBExpert использует для работы текущую директорию, из которой открыт скрипт, но можно все перенастроить на уровне скриптов и использовать жестко прошитые пути (для создаваемой БД он и так есть). Может и баян, но не видел решений/отзывов по теме, может кому-то это будет полезно, может появятся советы по улучшению. ну и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 16:31 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
FedorinoFFМожет и баян, но не видел решений/отзывов по теме, может кому-то это будет полезно, может появятся советы по улучшению. Тынц . FedorinoFFОсновная сложность - сборка БД из скриптов (зависимости между Procedure, Trigger, View). isql -x / isql -i ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 16:50 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
miwaonline, это что получается, все уже украдено придумано до нас? :-))))))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 16:58 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
miwaonlineFedorinoFFОсновная сложность - сборка БД из скриптов (зависимости между Procedure, Trigger, View). isql -x / isql -i я говорил об организации хранения метаданных в некой VCS. это все нужно для того, чтобы получить эталонную БД, из которой можно сделать isql -x - extract metadata или какими-то средствами получить скрипт выравнивания баз (например через IBExpert или DBComparer). Но это уже немного другая тема и не очень автоматизируемая. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 17:15 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
FedorinoFFэто все нужно для того, чтобы получить эталонную БД Для получения эталонной БД isql-ю скармливается скрипт создания эталонной БД, написанный разработчиком БД и хранящийся в VCS. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 17:52 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
FedorinoFFэто что получается, все уже украдено придумано до нас? Ну, более чем странным было бы считать, что никто за 15 лет существования FB или ±30 лет существования IB не сталкивался с похожей задачей. FedorinoFFя говорил об организации хранения метаданных в некой VCS. это все нужно для того, чтобы получить эталонную БД В циритуемом абзаце речь идет о том, что дескать весьма сложно создать метаданные в правильном порядке. Это ложное утверждение, потому что либо 1) есть уже готовая БД, созданная в IBExpert/FlameRobin/whatever. Тогда isql -x создает полностью работоспособный скрипт из этой базы, а isql -і из этого скрипта создает не менее работоспособную новую (эталонную) базу. Сложностей (в том числе с автоматизацией) - никаких 2) есть скрипт (набор скриптов), созданные программистом, которые создают работоспособную базу. Если при этом возникают проблемы и база не создается или неработоспособна - значит разработчик(и) недостаточно компетентны, но это ни разу не проблема FB. О скрипте выравнивания. Если разработка ведется так, как описано в моем тынце, скрипт выравнивания не нужен, так как последовательное выполнение скриптов из VCS дает всегда одинаковую базу данных и две разные базы данных одинаковой версии будут иметь одинаковую структуру. Естесственно, если в приложении не предусмотрена правка метаданных пользователем. Но как раз это уже совсем другая тема. Хотя и автоматизируемая :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 18:46 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
miwaonlineisql -x создает полностью работоспособный скрипт из этой базы, а isql -і из этого скрипта создает не менее работоспособную новую (эталонную) базу. Сложностей (в том числе с автоматизацией) - никаких.Я бы не был столь категоричен. Ибо вот вам раз , и вот - два-с ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 21:57 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
miwaonlineдескать весьма сложно создать метаданные в правильном порядке. Это ложное утверждение, потому что либо К "раз" и "два" Таблоида я еще добавлю "три": - создаем процедуру - создаем view, вызывающую эту процедуру в результате isql -x имеем скрипт, в котором forward-декларации процедур (create procedure) идут ПОСЛЕ create view, что вызывает проблему, т.к. при создании view упомянутой процедуры еще нет. Надо поменять местами. Т.е. блок forward-declaration процедур (create procedure) должен идти раньше create view. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 23:29 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
kdv- создаем процедуру - создаем view, вызывающую эту процедуру в результате isql -x имеем скрипт, в котором forward-декларации процедур (create procedure) идут ПОСЛЕ create viewЭто так в 2.5. В трёшке пофиксили: Код: plaintext 1. 2. 3. 4. 5.
Вывод isql -x в 2.5 : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2015, 07:37 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
ТаблоидВ трёшке пофиксили: Есть еще засада с использованием доменов/столбцов таблиц в определении типов входных/выходных параметров. В тройке еще и в заголовках пакетов такое может быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2015, 07:46 |
|
Совместная разработка
|
|||
---|---|---|---|
#18+
IBExpertТаблоидВ трёшке пофиксили: Есть еще засада с использованием доменов/столбцов таблиц в определении типов входных/выходных параметров. В тройке еще и в заголовках пакетов такое может быть. off: Сама по себе фича - жёсткое зло. Много зависимостей разгребается при рефакторигне БД, так ещё можно себя же к себе гвоздомётом прибить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2015, 13:44 |
|
|
start [/forum/topic.php?fid=40&fpage=72&tid=1562656]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 143ms |
0 / 0 |