powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Совместная разработка
19 сообщений из 19, страница 1 из 1
Совместная разработка
    #38622455
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Камрады, расскажите, как у вас организована совместная работа нескольких разработчиков БД под Firebird. Если с исходниками на Delphi все очевидно (TortoiseSVN), то как организовать в случае метаданных БД - непонятно.
...
Рейтинг: 0 / 0
Совместная разработка
    #38622576
Oliph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня "исходники" базы данных - набор скритов в текстовых файлах, как модули Delphi.
Вся база "компилируется" батником. Даже несколько батников, потому что у меня разные базы для филиалов и для головного офиса и прочие. Базы по сути разные, а большинство модулей из которых они строятся - общие.

Также батником накатываю апдейты, либо Ctrl-F12 в IBExpert.
Незначительные изменения метаданных могу делать ручками в IBExpert, синхронизируя их с "исходниками".
Работаю так уже второй десяток лет. Не вижу проблем, только преимущества
...
Рейтинг: 0 / 0
Совместная разработка
    #38622608
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, CyberMax!
You wrote on 23 апреля 2014 г. 10:53:46:

CyberMax> Если с исходниками на Delphi все очевидно (TortoiseSVN), то как
> организовать в случае метаданных БД - непонятно.
всё аналогично.

зы: а Tortoise - говно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Совместная разработка
    #38622618
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийзы: а Tortoise - говно.
Чем тогда пользоваться? Подружить XE3 с SVN-сервером встроенными средствами так и не удалось - среда либо выдает невразумительные ошибки, либо просто валится. Если у кого есть опыт подобной настройки - расскажите, буду признателен.
...
Рейтинг: 0 / 0
Совместная разработка
    #38622626
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отделяй мух.
от котлет.

среде не нужна система контроля версий.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Совместная разработка
    #38622633
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

Не понимаю. Какой среде и почему не нужна? И что тогда использовать?
...
Рейтинг: 0 / 0
Совместная разработка
    #38622654
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, CyberMax!
You wrote on 23 апреля 2014 г. 11:19:44:

CyberMax> Не понимаю. Какой среде и почему не нужна?
никакой среде не нужна.
CyberMax> И что тогда использовать? то что тебе нравится.
я высказал свою личную точку зрения.

как только какая-то левая хрень пытается внедриться в шелл винды,
хочется взять и уебать. (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Совместная разработка
    #38622714
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версируем метаданные только на этапе выпуска очередного релиза. И то просто для порядка.
Никакой функциональной нагрузки этот процесс фиксации метаданных нового релиза не несёт.
До выпуска релиза команда работает на общей базе без промежуточных фиксаций версий метаданных и без разделения авторства. У нас разработчики чётко делят "сферы влияния", так что вопрос об авторстве изменений в тех или иных объектах базы не стоит.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Совместная разработка
    #39037677
FedorinoFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, решил поделиться своим решением!
Описание решения
Давно осознал, что использование 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 использует для работы текущую директорию, из которой открыт скрипт, но можно все перенастроить на уровне скриптов и использовать жестко прошитые пути (для создаваемой БД он и так есть).

Может и баян, но не видел решений/отзывов по теме, может кому-то это будет полезно, может появятся советы по улучшению. ну и т.п.
...
Рейтинг: 0 / 0
Совместная разработка
    #39037686
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FedorinoFFМожет и баян, но не видел решений/отзывов по теме, может кому-то это будет полезно, может появятся советы по улучшению.
Тынц .

FedorinoFFОсновная сложность - сборка БД из скриптов (зависимости между Procedure, Trigger, View).
isql -x / isql -i
...
Рейтинг: 0 / 0
Совместная разработка
    #39037690
FedorinoFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonline,

это что получается, все уже украдено придумано до нас?
:-)))))))))))
...
Рейтинг: 0 / 0
Совместная разработка
    #39037699
FedorinoFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineFedorinoFFОсновная сложность - сборка БД из скриптов (зависимости между Procedure, Trigger, View).
isql -x / isql -i

я говорил об организации хранения метаданных в некой VCS.
это все нужно для того, чтобы получить эталонную БД, из которой можно сделать
isql -x - extract metadata
или какими-то средствами получить скрипт выравнивания баз (например через IBExpert или DBComparer).
Но это уже немного другая тема и не очень автоматизируемая.
...
Рейтинг: 0 / 0
Совместная разработка
    #39037736
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FedorinoFFэто все нужно для того, чтобы получить эталонную БД
Для получения эталонной БД isql-ю скармливается скрипт создания эталонной БД, написанный
разработчиком БД и хранящийся в VCS.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Совместная разработка
    #39037791
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FedorinoFFэто что получается, все уже украдено придумано до нас?
Ну, более чем странным было бы считать, что никто за 15 лет существования FB или ±30 лет существования IB не сталкивался с похожей задачей.

FedorinoFFя говорил об организации хранения метаданных в некой VCS.
это все нужно для того, чтобы получить эталонную БД
В циритуемом абзаце речь идет о том, что дескать весьма сложно создать метаданные в правильном порядке. Это ложное утверждение, потому что либо
1) есть уже готовая БД, созданная в IBExpert/FlameRobin/whatever. Тогда isql -x создает полностью работоспособный скрипт из этой базы, а isql -і из этого скрипта создает не менее работоспособную новую (эталонную) базу. Сложностей (в том числе с автоматизацией) - никаких
2) есть скрипт (набор скриптов), созданные программистом, которые создают работоспособную базу. Если при этом возникают проблемы и база не создается или неработоспособна - значит разработчик(и) недостаточно компетентны, но это ни разу не проблема FB.

О скрипте выравнивания. Если разработка ведется так, как описано в моем тынце, скрипт выравнивания не нужен, так как последовательное выполнение скриптов из VCS дает всегда одинаковую базу данных и две разные базы данных одинаковой версии будут иметь одинаковую структуру. Естесственно, если в приложении не предусмотрена правка метаданных пользователем. Но как раз это уже совсем другая тема. Хотя и автоматизируемая :)
...
Рейтинг: 0 / 0
Совместная разработка
    #39037865
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineisql -x создает полностью работоспособный скрипт из этой базы, а isql -і из этого скрипта создает не менее работоспособную новую (эталонную) базу. Сложностей (в том числе с автоматизацией) - никаких.Я бы не был столь категоричен. Ибо вот вам раз , и вот - два-с
...
Рейтинг: 0 / 0
Совместная разработка
    #39037900
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineдескать весьма сложно создать метаданные в правильном порядке. Это ложное утверждение, потому что либо
К "раз" и "два" Таблоида я еще добавлю "три":
- создаем процедуру
- создаем view, вызывающую эту процедуру

в результате isql -x имеем скрипт, в котором forward-декларации процедур (create procedure) идут ПОСЛЕ create view, что вызывает проблему, т.к. при создании view упомянутой процедуры еще нет. Надо поменять местами. Т.е. блок forward-declaration процедур (create procedure) должен идти раньше create view.
...
Рейтинг: 0 / 0
Совместная разработка
    #39037998
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv- создаем процедуру
- создаем view, вызывающую эту процедуру

в результате isql -x имеем скрипт, в котором forward-декларации процедур (create procedure) идут ПОСЛЕ create viewЭто так в 2.5. В трёшке пофиксили:
Код: plaintext
1.
2.
3.
4.
5.
SQL> set term ^; create procedure sp_test returns(n int) as begin for select rand()*100 from rdb$types rows 10 into n do suspend;
end^
SQL> commit^
SQL> create view v_test as select * from sp_test^
SQL> commit^
SQL> exit^

Вывод 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.
SET SQL DIALECT 3; 

/* CREATE DATABASE '/3255:e25' PAGE_SIZE 4096 DEFAULT CHARACTER SET NONE */

/* View: V_TEST, Owner: SYSDBA */
CREATE VIEW V_TEST (N) AS
 select * from sp_test;
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

/* Stored procedures */
CREATE PROCEDURE SP_TEST RETURNS (N INTEGER)
AS 
BEGIN SUSPEND; END ^

ALTER PROCEDURE SP_TEST RETURNS (N INTEGER)
AS 
 begin for select rand()*100 from rdb$types rows 10 into n do suspend; end ^
SET TERM ; ^
COMMIT WORK ;
SET AUTODDL ON;
Вывод isql -x в 3.0 :
Код: 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.
SET SQL DIALECT 3; 

/* CREATE DATABASE '/3333:e30' PAGE_SIZE 4096 DEFAULT CHARACTER SET NONE; */

COMMIT WORK;

COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

/* Stored procedures  headers  */
CREATE OR ALTER PROCEDURE SP_TEST RETURNS (N INTEGER)
AS 
 BEGIN SUSPEND; END  ^

SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;

/* View: V_TEST, Owner: SYSDBA */
CREATE VIEW V_TEST (N) AS
select * from sp_test;

COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

/* Stored procedures  bodies  */

 ALTER  PROCEDURE SP_TEST RETURNS (N INTEGER)
AS 
begin for select rand()*100 from rdb$types rows 10 into n do suspend; end ^

SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
...
Рейтинг: 0 / 0
Совместная разработка
    #39038004
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидВ трёшке пофиксили:


Есть еще засада с использованием доменов/столбцов таблиц в определении типов входных/выходных параметров. В тройке еще и в заголовках пакетов такое может быть.
...
Рейтинг: 0 / 0
Совместная разработка
    #39038447
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertТаблоидВ трёшке пофиксили:


Есть еще засада с использованием доменов/столбцов таблиц в определении типов входных/выходных параметров. В тройке еще и в заголовках пакетов такое может быть.
off: Сама по себе фича - жёсткое зло. Много зависимостей разгребается при рефакторигне БД, так ещё можно себя же к себе гвоздомётом прибить.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Совместная разработка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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