Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Первичный и внешний ключ в разных базах данных  [new]
kudatsky
Member

Откуда:
Сообщений: 20
Нужно, что бы таблица с первичным ключом
находилась в одной БД, а таблица с внешним
ключом - в другой. И что бы обеспечивалась
ссылочная целостность.
26 сен 17, 07:30    [20822356]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4381
Изучай http://firebirdsql.su/doku.php?id=execute_statement, конкретно ON EXTERNAL DATA SOURCE.
В принципе задача решаемая, но зачем непонятно.
26 сен 17, 08:18    [20822395]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
kudatsky
Member

Откуда:
Сообщений: 20
>Gallemar
Спасибо !
Зачем это ?
Основная БД имеет размер 1.5 Гб, с ней интенсивно
работают и каждую ночь делается бэкап. Сейчас
готовится справочная информация и она займёт до
100 Гб. Меняться она будет раз в несколько лет.
Если её поместить в основную БД то бэкапы быстро
забьют сервер. Поэтому рассматриваются разные
варианты размещения в отдельном файле.
26 сен 17, 08:43    [20822421]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
pastor
Member

Откуда: Калуга
Сообщений: 892
kudatsky
Нужно, что бы таблица с первичным ключом
находилась в одной БД, а таблица с внешним
ключом - в другой. И что бы обеспечивалась
ссылочная целостность.


копию мастер-таблицы во все БД
26 сен 17, 08:49    [20822427]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4381
kudatsky
Поэтому рассматриваются разные варианты размещения в отдельном файле.

Тут нет ответа "зачем нужны внешние ключи в другой бд".
26 сен 17, 09:16    [20822510]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7427
Gallemar
В принципе задача решаемая, но зачем непонятно.


не решаемая. Не обеспечишь ты контроль целостности никакими триггерами так как это делают FK
26 сен 17, 09:24    [20822532]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4381
Симонов Денис
Gallemar
В принципе задача решаемая, но зачем непонятно.


не решаемая. Не обеспечишь ты контроль целостности никакими триггерами так как это делают FK

Думаешь? Надо попробовать сделать. Вообще главной проблемой вижу реализацию каскадности.
26 сен 17, 09:30    [20822551]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7427
Gallemar,

для начала придумай как это в одной БД триггерами сделать. А потом про разные подумаешь. Уверен что обломишься ещё на первом этапе
26 сен 17, 09:32    [20822554]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1204
kudatsky
Основная БД имеет размер 1.5 Гб, с ней интенсивно
работают и каждую ночь делается бэкап. Сейчас
готовится справочная информация и она займёт до
100 Гб. Меняться она будет раз в несколько лет.
Если её поместить в основную БД то бэкапы быстро
забьют сервер. Поэтому рассматриваются разные
варианты размещения в отдельном файле.


Проблему именно бэкапов такой единой базы можно частично решить применением nbackup.
Первый бэкап будет размером с саму БД, но последующие инкременты уже не будут включать в себя неизменяемые данные.
Начиная с FB3, насколько я в курсе, существенно ускорился nbackup т.к. он читает только те страницы которые были изменены.
На FB2.5 такой оптимизации не было и для инкрементного бэкапа приходилось читать все страницы.
26 сен 17, 09:32    [20822558]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 12930
Симонов Денис
для начала придумай как это в одной БД триггерами сделать.
Да не ходи вокруг да около, сразу проблему обозначь.
А то ведь сейчас проверит в своей тестовой базе, и даже не подумает, что это только монопольно работает.
26 сен 17, 09:50    [20822618]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26721
kudatsky,

проблема со справочниками известная. В текущий момент целостность между двумя БД не решается никак. Для этого можно было бы использовать tablespace, но этого в ФБ пока нет. Частичный бэкап есть, но он не официальный, и будет геморрой при восстановлении БД из бэкапа.

p.s. мне тоже не нравится, например, что у 1С 8 кладр всегда в базе. Раньше хоть отдельные файлы были, а теперь все в одном...
26 сен 17, 10:32    [20822794]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
pastor
Member

Откуда: Калуга
Сообщений: 892
kudatsky,

1. подойдет ли вариант с исключением таблиц из бакапа?
в тройке вроде как такой ключик есть и для ранних версий есть сборки.

восстановление делать с отключенными констрейнтами, переливать в БД с уже готовой структурой и справочником.

2. таки репликация вместо бакапа
26 сен 17, 10:48    [20822901]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
hvlad
Member

Откуда:
Сообщений: 9318
Симонов Денис
Не обеспечишь ты контроль целостности никакими триггерами так как это делают FK
Если обеспечить отсутствие удалений и изменений PK, то юзерских триггеров вполне достаточно.
Есс-но, работать это будет совсем не быстро...

PS Ссылочную целостность между таблицами разных БД не обеспечивает ни одна СУБД, на сколько мне известно.
Подумайте хотя бы о том, что разные БД имеют право быть восстановленными из бекапа независимо друг от друга -
о какой ссылочной целостности тут может идти речь ?
26 сен 17, 10:54    [20822933]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7427
pastor,

этот ключик есть и в финальной версии. Вот только насчёт него много ограничений. Совсем не понятно как слить два разных бекапа в одну БД: один в которой была исключена эта таблица и второй в котором она присутствует
26 сен 17, 11:06    [20822981]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
pastor
Member

Откуда: Калуга
Сообщений: 892
Симонов Денис
pastor,

этот ключик есть и в финальной версии. Вот только насчёт него много ограничений. Совсем не понятно как слить два разных бекапа в одну БД: один в которой была исключена эта таблица и второй в котором она присутствует


per anus ad astrum

в три этапа

1. восстановление эталонной БД только со справочником
2. восстановление калечной БД БД без справочника и констрейнтов
3. перенос данных из калечной в эталонную

эталонную можно заготовить загодя. превентивно тксть.
26 сен 17, 11:18    [20823074]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7427
pastor,

в принципе если полный бекап делать раз в месяц, а частичный каждый день, то может и ничего.
Но если та исключённая таблица присутствует в одной ХП/триггере, то жопа
26 сен 17, 11:21    [20823096]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43944

kudatsky
Основная БД имеет размер 1.5 Гб, с ней интенсивно
работают и каждую ночь делается бэкап. Сейчас
готовится справочная информация и она займёт до
100 Гб. Меняться она будет раз в несколько лет.
Если её поместить в основную БД то бэкапы быстро
забьют сервер.

Во-первых, бэкап, делающийся на тот же сервер, может вообще не делаться, ибо бесполезен.
Во-вторых, пара-тройка террабайтных винтов в бэкап-сервере решит эту проблему.
В-третьих, как уже сказали, ничто не мешает поместить основную БД в справочную, которую не
бэкапить вообще.

Posted via ActualForum NNTP Server 1.5

26 сен 17, 11:45    [20823249]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
kudatsky
Member

Откуда:
Сообщений: 20
Возможен ещё вот какой вариант:
Доп. БД не делать. Всё разместить в одной БД.
Всё сделать в четыре прохода.
1. Backup.
2. Restore во временный FDB-файл
3. Во временном файле лишнее удалить.
4. Bacup из временного файла.
Должно работать, но как-то громоздко.
26 сен 17, 15:06    [20824146]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43944

kudatsky
3. Во временном файле лишнее удалить.
4. Bacup из временного файла.

Зачем? Неужели в самом деле экономия места на носителе с бэкапами?..

Posted via ActualForum NNTP Server 1.5

26 сен 17, 15:59    [20824354]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Arioch
Member

Откуда:
Сообщений: 9144
kudatsky
3. Во временном файле лишнее удалить.


....и тут у тебя foreign key с опцией cascade вслед за справочником снесут всю БД
26 сен 17, 16:00    [20824356]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
pastor
Member

Откуда: Калуга
Сообщений: 892
kudatsky
Возможен ещё вот какой вариант:
Доп. БД не делать. Всё разместить в одной БД.
Всё сделать в четыре прохода.
1. Backup.
2. Restore во временный FDB-файл
3. Во временном файле лишнее удалить.
4. Bacup из временного файла.
Должно работать, но как-то громоздко.


если цель отлична от СКОРОСТИ (читай частоты) создания бакапа/восстановления, то делать это бессмысленно

есть и другие м-е-е-дленные, но рабочие варианты
26 сен 17, 16:28    [20824447]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
kudatsky
Member

Откуда:
Сообщений: 20
Pastor>
Для меня это вопрос не скорости, а сохранности данных.
Сервер нормальный, ночью за час-другой упакует.
Просто, некрасиво как-то...
26 сен 17, 18:06    [20824736]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 269
kudatsky
Pastor>
Для меня это вопрос не скорости, а сохранности данных.
Сервер нормальный, ночью за час-другой упакует.
Просто, некрасиво как-то...


Перенаправляй вывод gbak в gzip на том же сервере и гони результат по ftp в хранилище. Пакуется хорошо.
26 сен 17, 18:42    [20824828]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
pastor
Member

Откуда: Калуга
Сообщений: 892
kudatsky
Pastor>
Для меня это вопрос не скорости, а сохранности данных.
Сервер нормальный, ночью за час-другой упакует.
Просто, некрасиво как-то...


Если укладываешься в СВОИ требования по ТЗ (с учетом N лет эксплуатации) - оставляешь как есть. Нет - доводишь до заявленных параметров



+ Примерно так
ГОСТ 34.602-89 Техническое задание на создание информационных систем

4.3.2.7. Требования к защите данных от разрушений при авариях и сбоях в электропитании системы
Информация в базе данных системы должна сохраняться при возникновении аварийных ситуаций, связанных со сбоями электропитания.
Система должна иметь бесперебойное электропитание, обеспечивающее её нормальное функционирование в течение 15 минут в случае отсутствия внешнего энергоснабжения, и 5 минут дополнительно для корректного завершения всех процессов.
Резервное копирование данных должно осуществляться на регулярной основе, в объёмах, достаточных для восстановления информации в подсистеме хранения данных.
26 сен 17, 19:39    [20824931]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26721
Старый плюшевый мишка,

100 гиг паковать? да ну нафиг. nbackup здесь нужен. а обычный гбак - пару-тройку раз в месяц, и то для проверки базы данных на отсутствие дефектов.
26 сен 17, 19:57    [20824958]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 269
kdv
Старый плюшевый мишка,

100 гиг паковать? да ну нафиг. nbackup здесь нужен. а обычный гбак - пару-тройку раз в месяц, и то для проверки базы данных на отсутствие дефектов.


Какбэ еженощно. На протяжении 20 лет. Вру конечно. Около сотни гигов - это последние 2-3 года, росло как гуляют на Дерибасовской, постепенно. Рестор заканчивается когда офис уже вовсю пашет, но кого это того-этого. Хранится 7 баз за неделю и по одной месячной в течение года. Раз в месяц случается ошибка на ресторе. Разбор полёта, принятие мер. День восстановить не так чтоб не проблема, но в текущей ситуации роста экономики на пол-шестого в целом приемлемо.
26 сен 17, 20:10    [20824972]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
sonkz
Member

Откуда:
Сообщений: 51
Старый плюшевый мишка
Раз в месяц случается ошибка на ресторе. Разбор полёта, принятие мер.

Можно поподробнее? Какие ошибки на ресторе?
А то у меня 250Гб..
Еженощная файловая копия, для иногдашного контрольного backup/restore
и четырехуровневый nbackup: месяц, неделя, сутки, 2часа
28 сен 17, 08:45    [20828126]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4381
sonkz
четырехуровневый nbackup: месяц, неделя, сутки, 2часа

Жесть
28 сен 17, 08:55    [20828146]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
sonkz
Member

Откуда:
Сообщений: 51
Gallemar
sonkz
четырехуровневый nbackup: месяц, неделя, сутки, 2часа

Жесть

Почему?
28 сен 17, 09:10    [20828174]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4381
sonkz
Gallemar
пропущено...

Жесть

Почему?

зачем так частить*
28 сен 17, 09:17    [20828183]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 12930
Gallemar
зачем так частить*
Не надо всё по себе мерять.
Кому-то и ещё чаще нужно. Или вообще критична потеря даже небольших кусков, тогда уже на "онлайн-репликацию" переходят.
28 сен 17, 09:34    [20828229]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4381
WildSery
вообще критична потеря даже небольших кусков, тогда уже на "онлайн-репликацию" переходят.

Вот и вопрос - почему тогда не реплика? У меня nbackup - 0 раз в неделю, 1 - каждый день, чаще делать - будет подвисать в процессе выполнения.
28 сен 17, 09:46    [20828263]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 12930
Gallemar
Вот и вопрос - почему тогда не реплика?
Это уже пусть автор ответит. Может, даже не думали, или ресурсов почему-то на реализацию/покупку не выделено.
28 сен 17, 09:55    [20828300]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
sonkz
Member

Откуда:
Сообщений: 51
Gallemar
Вот и вопрос - почему тогда не реплика? У меня nbackup - 0 раз в неделю, 1 - каждый день, чаще делать - будет подвисать в процессе выполнения.


Раз в два часа - подтормаживаем конечно, но на нашем железе абсолютно не критично.
Вот только, после того, как однажды "сорвали джекпот" - жесткий крах через 7 минут после завершения nbaka 3 уровня - никто даже не жужжит.

Про реплику очень думаем - Hqbird уже купили. Даже тестировали на кроликах, но ушел ведущий сисадмин и пока все повисло.
28 сен 17, 11:57    [20828723]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
hvlad
Member

Откуда:
Сообщений: 9318
sonkz
Еженощная файловая копия, для иногдашного контрольного backup/restore
и четырехуровневый nbackup: месяц, неделя, сутки, 2часа
Схема бекапа вполне рабочая.
Вот только не понятно с файловой копией - вы останавливаете все коннекты при этом ?
В любом случае - если делать её еженощно - почему не делать бекап нулевого уровня ?
Ведь тогда можно уменьшить кол-во уровней бекапа и сами инкременты будут меньшего размера.

Кстати, это на какой версии FB ? И есть ли проблемы со стабильностью nbackup ?
28 сен 17, 12:04    [20828740]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
sonkz
Member

Откуда:
Сообщений: 51
hvlad,

файловая копия, конечно с nbackup -L, 24х7 как-никак :)
А не 0 бакап, потому, что нужно иметь возможность восстановить на любую дату за последние 3 месяца. Уровни 0 + 1 + 2 хранятся на отдельном сервере. Терабайты дисков нынче не слишком дороги
28 сен 17, 12:20    [20828779]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
sonkz
Member

Откуда:
Сообщений: 51
hvlad,
64 битный FirebirdCS-2.5.7.27050 - косяков с nbackup не замечали.
28 сен 17, 12:23    [20828787]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
hvlad
Member

Откуда:
Сообщений: 9318
sonkz,

спасибо за инф-цию
28 сен 17, 12:57    [20828852]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
shiliaev
Member

Откуда:
Сообщений: 21
Всем привет.
Для статистики:
FB2.5.3 x64 CS (планируется переход сразу на 4)
база ~10Гб + ~200Гб блобы (хранятся в файловой системе сервера, читаются и пишутся UDF), 130 коннектов в пике.
nbackup 0 уровня: раз в неделю;
nbackup 1 уровня: раз в день;
nbackup 2 уровня: раз в час;
nbackup 3 уровня: раз в 5 минут.

База целиком находится в файловом кеше ОС. Nbackup делается БЕЗ ключа L. Время снятия nbackap 3-4 уровня 2,5 - 3,5 минуты.

Примерно раз в полгода-год база не переводится "нормальный" режим работы после окончания работы nbackup (дельта при этом остается). Лечится командой alter database end backup.
28 сен 17, 13:47    [20828980]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4381
shiliaev

Примерно раз в полгода-год база не переводится "нормальный" режим работы после окончания работы nbackup (дельта при этом остается). Лечится командой alter database end backup.

Обновишься и будет тебе счастье. Это проблема версии фб.
28 сен 17, 14:57    [20829154]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
shiliaev
Member

Откуда:
Сообщений: 21
Gallemar
Это проблема версии фб.


Не могу CORE-4959. Как появилось в 2.5.4 так и тянется...
28 сен 17, 15:27    [20829275]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4381
Добро пожаловать в наш клуб. Аналогично на 2.5 3. Надеюсь в этом году перейду на трешку.
28 сен 17, 15:33    [20829315]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
shiliaev
Member

Откуда:
Сообщений: 21
Gallemar, в клубе давно:

Database dialect 3
Creation date Nov 15, 2012 0:23:00
Attributes force write, backup lock

Жду 4-ку с репликацией из коробки..

ЗЫ: Это я любителям еженощьного б/р набросил :)
28 сен 17, 15:41    [20829357]     Ответить | Цитировать Сообщить модератору
 Re: Первичный и внешний ключ в разных базах данных  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 269
sonkz
Старый плюшевый мишка
Раз в месяц случается ошибка на ресторе. Разбор полёта, принятие мер.

Можно поподробнее? Какие ошибки на ресторе?
А то у меня 250Гб.


Причины наши, программерские. Функционал стараниями правительства в целом и фискальных органов в частности растёт, в условиях падения рынка изыскиваются дополнительные сферы деятельности, примыкающие к основной, ни дня без DDL. А человек таки не машина, что-то да сделает не так или забудет доделать до конца время от времени.
28 сен 17, 16:30    [20829532]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Firebird, InterBase Ответить