powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ведение проектов Firebird средствами эмбакадеры.
13 сообщений из 13, страница 1 из 1
Ведение проектов Firebird средствами эмбакадеры.
    #40097780
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток,

в своё время в Visual Studio был тип проекта - база данных. Студия могла импортировать метаданные из базы в проект в виде текстовых скриптов итп. Далее при внесении изменений в базу достаточно было изменить эти скрипты и сказать студии накатить изменения. С одной стороны все изменения было удобно отслеживать в системе контроля версий, с другой стороны централизованно отслешивать изменения структуры базы и хранимок. Я активно пользовался этим в купе с C# и было очень удобно.
Есть ли что то подобное у эмбакадеры для Firebird/interBase? IB Expert хорош но не имеет интеграции с системами хранения версий а также как таковой идеи проекта базы данных, отслеживания её версий, изменений метаданных итп.
Насколько подходит под эти хотелки ER/Studio от эбаркадеры?

Спасибо.

Хороший программист знает как задавать вопросы, не раздражая окружающих, а выдающийся программист знает как отвечать на них без заносчивости © Стивен Хирлстон
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097781
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скрипт, полученный путём реверс-инженеринга обычно не очень хорош. Лучше хранить
мастер-скрипт создания БД с нуля, написанный руками.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097791
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

а дальше хранить полный скрипт БД (isql -x) вместе с очередным бэкапом. И уже эти скрипты можно загружать в систему контроля версий, и там формировать диффы, и прочее.
И в ИБЕ есть сравнение метаданных, по скриптам или базам, вполне нормальное. Главное только скрипты генерить чем-то одним, не мешать скрипты из isql и ИБЕ или еще чего-то другого.
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097792
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail TchervonenkoНасколько подходит под эти хотелки ER/Studio от эбаркадеры?
я думаю, там "грусть-тоска". Они там специфику InterBase с трудом поддерживают, а уж возможности DDL Firebird - это вряд-ли. Так что оттуда скрипты модификации будут неполноценными.
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097805
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"isql -x" лепит один огромный скрипт, который неудобно читать, тяжело изучать и
модифицировать. Удобнее таки в СКВ иметь скрипты для создания групп объектов в
отдельных файлах, вызываемых из главного.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097807
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

ok, спасибо.

Тогда остаётся IBExpert (благо 20 лицензий купили в этом году) и руки.
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097813
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko,

Для контроля версий использую bat и IBEScript + ibeblock

Код: sql
1.
    ibec_ExtractMetadata(db, fn, 'VCSFiles;GenerateCreate;IncludeCharset;ExtractPrivileges;ExtractDescriptions','');


Указываю папку, БД. В результате набор файлов (для каждого объекта свой)

bat-файл
Код: pascal
1.
..\..\IBEXpert\IBEScript.exe ExtractMetadata.sql -Galias=%1 -Gproject=%2 -Gpath=%3 


ExtractMetadata.sql
Код: sql
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
execute ibeblock
as
begin
  alias = ibec_GetGlobalVar('alias', '');
  project = ibec_GetGlobalVar('project', '');
  path = ibec_GetGlobalVar('path', '');
  if (path = '') then path = alias||'_db';
  l = ibec_chr(92);

  DB_Name = '';
  reg = ibec_reg_Open(__HKEY_CURRENT_USER, 0);
  try
    if (ibec_reg_OpenKey(reg, 'Software\FIBC_Software\Aliases'||l||Alias, FALSE)) then
      DB_Name = ibec_reg_ReadString(reg, 'Database Name');
  finally
    ibec_reg_Close(reg);
  end;

  if (DB_Name = '') then
  begin
    ibec_ShowMessage('Ошибка: alias '||alias||' не существует');
    exit;
  end;

  fn = '..\project'||l||project||l||path;

  ibec_progress('Удаление старых файлов');
  if (ibec_getfiles(files_list, fn||l, '*.*',  __gfFullName) > 0) then
  begin
    i = 0;
    while (i <= ibec_high(files_list)) do
    begin
      ibec_DeleteFile(files_list[i]);
      i = i + 1;
    end
  end;

  ibec_progress('Создание отображения БД в '||fn);
  DB = ibec_CreateConnection(__ctFirebird, 'DBName="'||DB_NAME||'";user=SYSDBA; password=masterkey; clientlib=fbclient.dll');
  try
    ibec_UseConnection(DB);
    ibec_ExtractMetadata(db, fn, 'VCSFiles;GenerateCreate;IncludeCharset;ExtractPrivileges;ExtractDescriptions','');

    fs = ibec_fs_OpenFile(alias||'.data', __fmOpenRead);
    if (fs is not null) then
    begin
      ibec_progress('Создание данных БД в '||fn);

      while (not ibec_fs_Eof(fs)) do
      begin
        TableN = '';
        wh = '';

        s = ibec_fs_Readln(fs);
        ValCount = ibec_ParseCSVLine(Vals, s, '"', ibec_Chr(9), 0);
        if (Vals[0] is not null) then
          TableN = Vals[0]; else TableN = '';

        if (Vals[1] is not null) then
          wh = Vals[1]; else wh = '';

        cnt = 0;

        for select trim(r.rdb$field_name), trim(case when f.rdb$field_type in (14, 37, 40, 261, 45) then '''' else '' end), coalesce(trim(both '''' from nullif(trim(leading 'DEFAULT ' from upper(substring(coalesce(r.rdb$default_source, f.rdb$default_source) from 1 for 80))), 'NULL')), '')
            from rdb$relation_fields r
            join rdb$fields f on f.rdb$field_name = r.rdb$field_source
            where r.rdb$relation_name = :TableN
            order by r.rdb$field_position
        into n, tp, defv do
        begin
          f[cnt] = n;
          d[cnt] = defv;
          y[cnt] = tp;
          cnt = cnt + 1;
        end

        if (cnt = 0) then exit;

        s = ''; w = '';
       
        if (wh > '') then 
          w = ' where '||wh;

        k = 0;
        q = 'select * from '||TableN||W||'  order by '||f[0];
        for execute statement :q into vals do
        begin
          k = k + 1;
          i = 0;
          while (i < cnt) do
          begin
            v = vals[i];
            v = coalesce(v, '');
            r = d[i];
            if (v <> '' and v <> r) then
            begin
              s=s||f[i]||'='||y[i]||vals[i]||y[i]||ibec_CRLF();
            end
            i = i + 1;
          end;
          s=s||'---------------------------------------------------'||ibec_CRLF();
        end
        ibec_SaveToFile(fn||l||TableN||'.data', s, 1);

        ibec_progress('   '||TableN||'   '||k);
      end
      ibec_fs_CloseFile(fs);
    end
  finally
    ibec_CloseConnection(DB);
  end

  ibec_SaveToFile(fn||l||alias||'_alias.txt', DB_NAME, 0);

  ibec_progress('Отображение БД создано');
end;

...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097815
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели в 21 веке кому-то еще нужен этот убогий ИБ ???
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097822
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Неужели в 21 веке кому-то еще нужен этот убогий ИБ ???
К сожалению, да, т.к. выбора нет.
P.S. По сравнению с любой альтернативой - он далеко не убогий. Вполне удобный инструмент.
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097823
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Лучше хранить мастер-скрипт создания БД с нуля, написанный руками.

+1.

А при изменении этого скрипта - добавлять еще файлики-апдейты по версиям, чтоб удобно было их накатывать более или менее автоматизировано.

И всё это лежит в гите каком-нибудь. Зачем тут эмбаркадера, isql или ib-эксперт - не знаю.
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40097854
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
Dimitry Sibiryakov
Лучше хранить мастер-скрипт создания БД с нуля, написанный руками.

+1.

А при изменении этого скрипта - добавлять еще файлики-апдейты по версиям, чтоб удобно было их накатывать более или менее автоматизировано.

И всё это лежит в гите каком-нибудь. Зачем тут эмбаркадера, isql или ib-эксперт - не знаю.

+ 1 !
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40098286
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoНеужели в 21 веке кому-то еще нужен этот убогий ИБ ???
Даже ИБ не убогий, а ФБ уж тем более. Если не в теме, то лучше было промолчать.
...
Рейтинг: 0 / 0
Ведение проектов Firebird средствами эмбакадеры.
    #40098334
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

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


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