|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Всем привет! Имеется проект на Firebird 2.5, по учету товаров в магазине. Возникла хотелка у пользователей - видеть, что происходит на торговых точках. А т.к. с интернетом обычно проблема, связь если и есть, то она часто отваливается и вообще качество не очень. Задумался над синхронизацией баз через файлы - надо сливать информацию с торговых точек/складов в одну главную базу, где пользователь уже может просматривать все данные, переключаясь между складами (в программе можно завести несколько складов). Естественно данные по каждому складу должны падать в главную базу под ID этого склада. В главной базе могут оформлять приход товаров, который тоже должен выгружаться в торговые точки. Порыскал и нашел пару вариантов: 1) Через триггеры записывать каждое изменение 2) С помощью IBReplicator. Вот только подойдет ли он для такой ситуации? И насколько я понял, он платный, могу ли я потом ставить его вместе спрограммой пользователям? Если кто-то может помочь, делал такое, или имеет большой опыт в Firebird и репликации - прошу помощи, об оплате можем договориться. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 09:53 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchik, IBReplicator точно также создаёт триггеры для ведения логов изменений. Про лицензирование это у Dimitry Sibiryakov спроси. авторЕсли кто-то может помочь, делал такое? Тут много таких. Я и сам изобретал свой велосипед. Он даже работает до сих пор. Если решишь идти по трудному пути, т.е. самостоятельно делать логирующие триггеры и применять изменения на главной БД, то спрашивай, поможем советами. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 10:11 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchik, Думаю у всех репликация сделана на тригерах (у меня в том числе) но долгое это дело... Я все баги лет 10 выдавливал. Наверное купить готовое будет дешевле. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 10:38 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Шавлюк Евгенийaidynchik, Думаю у всех репликация сделана на тригерах (у меня в том числе) но долгое это дело... Я все баги лет 10 выдавливал. Наверное купить готовое будет дешевле. Не надо грязи :) У меня есть варианты с перекрытием. Маленькие таблицы-справочники - построчное сравнение. (execute statement on external) Это из центра на периферию. Специальные денормализованные таблицы для передачи данных допускают только вставку в коротких транзакциях. Мерджу(?) через (execute statement on external), удаляю в исходнике. В приемнике триггера раскидают по нужным табличкам. Запускается по шедульке. Одно время тянуло 4 вокзала Аэроэкспресса :) Сейчас живет на парковках. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 11:15 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
pastor, Мы говорим про общий принцип, когда передаются только изменения. Он подходит в большинстве случаев. Бывают конечно разные вариации, но это сильно зависит от специфики задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 11:37 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Шавлюк Евгенийaidynchik, Наверное купить готовое будет дешевле. да, я и хочу купить готовое, а что покупать-то? IBReplicator? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 11:43 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Симонов Денисaidynchik, Про лицензирование это у Dimitry Sibiryakov спроси. как с ним связаться? тут на форуме нет сообщений ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 11:44 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchik, для начала следует хорошенько допросить клиента что именно он хочет видеть. Вполне возможно что на деле можно будет обойтись созданием робота по отправке отчетов с удаленных баз либо просто пересылкой неких данных за период. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 11:45 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Симонов Денисaidynchik, Если решишь идти по трудному пути, т.е. самостоятельно делать логирующие триггеры и применять изменения на главной БД, то спрашивай, поможем советами. главный вопрос по ID, что сделать чтобы они не пересекались? У каждой торговой точки задать диапазон конкретных IDшек? Как вы это решили. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 11:45 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
MikeDDaidynchik, для начала следует хорошенько допросить клиента что именно он хочет видеть. Вполне возможно что на деле можно будет обойтись созданием робота по отправке отчетов с удаленных баз либо просто пересылкой неких данных за период. не всех устраивает, хотят прям видеть все ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 11:46 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchikнадо сливать информацию с торговых точек/складов в одну главную базу, где пользователь уже может просматривать все данные, переключаясь между складами Тут хорошо бы уточнить что такое "пользователи" и каково твоё место в этой системе. Если это единая система и ты в ней разработчик всего - это одно. Если это тиражируемый продукт и ты админ одной из его копий - совсем другое. aidynchikглавный вопрос по ID, что сделать чтобы они не пересекались? Есть три основных способа: www.ibphoenix.com/ibpr_devel/fireswarm/documentation/dbdesign.html Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 11:57 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchikглавный вопрос по ID, что сделать чтобы они не пересекались? У каждой торговой точки задать диапазон конкретных IDшек? Как вы это решили. тут может быть много решений. Можно использовать в качестве ID guid, тогда они гарантировано не будут пересекаться, но это не очень удобно. Можно использовать диапазоны. Лично я использовал таблицы перекодировок. Но у меня вообще разные БД. Код: sql 1. 2. 3. 4. 5. 6. 7.
Репликация оффлайновая. Обмен идёт через REST_API в формате JSON ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 12:09 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЕсли это тиражируемый продукт и ты админ одной из его копий - совсем другое. это тиражируемый продукт, а я разработчик ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 12:14 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
если использовать диапазоны, ведь нет гарантий, что ID не перевалит за диапазон ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 12:14 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchik, ну это смотря какие диапазоны выбирать. Тип bigint может вмещать 10 18 значений. Если у тебя каждый диапазон отличается на 10 12 , то вероятность что он переполнится почти нулевая ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 12:20 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchikэто тиражируемый продукт, а я разработчик Тогда ты просто покупаешь пачки лицензий на репликатор со скидкой и включаешь их цену в цену своего продукта. aidynchikесли использовать диапазоны, ведь нет гарантий, что ID не перевалит за диапазон Диапазоны могут быть достаточно большие если ID 64-х разрядный, а диапазон, скажем, 48-ми разрядный. Но лично я рекомендую-таки GUID. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 12:22 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchikчто ID не перевалит за диапазон есть твой клиент РАЗУМЕЕТСЯ должен отказываться от перехода через диапазон и должен всегда получать от сервера два диапазона: текущий и следующий "double buffering" и "Page flipping" - это же реально основы! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 15:24 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНо лично я рекомендую-таки GUID. типовая ошибка 90-х: звуковые драйвера кажется Opti не встают на компьютер, накотором стоит fineReader таки да, они заняли одинаковый GUID ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 15:25 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Я, наверное, слишком примитивен, до деления диапазонов не дорос, всё как-то по-лапотному думаю, насчёт композитных PK типа (ID_Point, ID_In_Table)... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2018, 22:10 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
всем спасибо за советы! Вариант с IBReplicator мне не подходит, буду делать свой велосипед. будут вопросы - напишу ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 07:37 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Ariochтвой клиент РАЗУМЕЕТСЯ должен отказываться от перехода через диапазон и должен всегда получать от сервера два диапазона: текущий и следующий "double buffering" и "Page flipping" - это же реально основы! если не сложно - можно этот момент поподробнее, я не могу сказать, что я прогер от бога ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 07:45 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
да я собственно уже написал все выше любая работа, которая должна идти без задержек, делается минимум в ДВА выходный буфера что ты музыку слушаешь, что кино смотришь, что в стрелялку играешь у тебя есть один буфер, который пошёл в работу (показывается на экране, играет в наушниках/колонках и т.д.), и второй буфер, которой наполняют (распаковывают mp3, строят сцену из полигонов, ...). в тот момент когда пора (буфер построен И пришло время закончить первый буфер) делается переключение, буфера меняются местами (нужно всего лишь два указателя местами поменять). Теперь второй буфер идёт в работу (на экран, колонки, etc), а первый очищается и начинает заполняться данными. Потом они снова меняются местами и т.д. раньше на "пузатых" мониторах переключение буферов подгадывали к V-Sync, естественной паузе в работе любого ЭЛТ-монитора, так эта настройка до сих пор сохранилась ---------------------- ещё частный случай - сохранение любого файла, например посмотри как zip/7-zip/rar изменяют архивы. Они старый файл не убивают, они рядом создают временный файл и начинают в нём создавтаь новый, исправленный архив. И только если это получилось - тогда они делают переключение (переименование двух файлов, а ПОСЛЕ успешного переименования - удаление старого архива). пример школьного подхода, с одним буфером, - S.T.A.L.K.E.R. - если игра крэшилась во время сохранения (а это было часто), то у тебя старого сейва УЖЕ нет, а нового ЕЩЁ нет ----------------- ты спрашиваешь про диапазоны ID - так в твоём случае диапазон - тот же буфер и тоже нуждно иметь два. По одному ты уже работаешь, а другой стоит готовый и ждёт мгновенного включения в работу по исчерпанию первого, потом делаешь "переключение буферов" - заполненный диапазон сливаешь на сервер, а с сервера получаешь новый чистый диапазон на завтра ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 11:50 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Ariochты спрашиваешь про диапазоны ID - так в твоём случае диапазон - тот же буфер и тоже нуждно иметь два. По одному ты уже работаешь, а другой стоит готовый и ждёт мгновенного включения в работу по исчерпанию первого, потом делаешь "переключение буферов" - заполненный диапазон сливаешь на сервер, а с сервера получаешь новый чистый диапазон на завтра спасибо, понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 11:54 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, ну мне этот подход тоже больше делается, например в нём точка в принципе независит от сервера, даже если они год сихнронизироваться не могут. Т.е. точку можно продавать отдельно, а много-точку уже потом продать кому надо. но минус этого подхода - что делать если точки сливаются/делятся, как историчность соблюсти ? Надо где-то хранить историю связей разных ID_Point? а чем это отличается от хранения историй диапазонов? Как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 11:55 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Ariochбольше делается ээээ, нравится, конечно же ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 11:55 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
минус диапазонов - нужно организовать вне-транзакционный "прыжок генератора" со старого диапазона на новый. можно пытаться предугадать время и прыгнуть заранее, оставив десяток-другой последних ID незаполненными или брать не напрямую из генератора, а из UDF с межпоточной и межпроцессной блокировкой но КМК естественней всего диапазоны ложатся на трёхзвенку, а не на клиент-сервер ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 11:59 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
еще такая мысль - чтобы узнавать с какой торговой точки пришел файл, ей нужен ID. То есть пользователь должен забить свой уникальный ID каждой базе, причем так чтобы они не пересеклись, задача несложная конечно, но все же, люди разные бывают... Как это немного упростить? Мне на ум только приходит следующая схема: 1) Берется эталонная база, ставится на главный комп, там пользователь забивает все торговые точки какие есть. 2) Программа присваивает текущей базе ID = 1, затем надо как-то тиражировать базы с другими ID под каждую точку. 3) Раскидать готовые базы по точкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 12:00 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchik, а если я плохой мальчик, где-то умыкну твой софт точки, поставлю у себя дома и буду изображать фейковыую, несуществующую программную точку - тогда что? или я - плохая девочка, где-то умыкнул твой софт центра, поставил фейковый сервер, а потом подкупил уборщиц на точке, чтобы они её перенастроили с моим сервером общаться вместо настоящего? продумывай схему, как именно ты будешь распространять точки и сервера так, чтобы они с гарантией и находили и аутентифицировали(проверяли) друг друга. ID будет всего лишь естественной частью аутентификации, получишь его автоматически ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 12:04 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Ariochaidynchik, а если я плохой мальчик, где-то умыкну твой софт точки, поставлю у себя дома и буду изображать фейковыую, несуществующую программную точку - тогда что? или я - плохая девочка, где-то умыкнул твой софт центра, поставил фейковый сервер, а потом подкупил уборщиц на точке, чтобы они её перенастроили с моим сервером общаться вместо настоящего? продумывай схему, как именно ты будешь распространять точки и сервера так, чтобы они с гарантией и находили и аутентифицировали(проверяли) друг друга. ID будет всего лишь естественной частью аутентификации, получишь его автоматически ну это мне кажется что-то из ряда фантастики :) но защиту поставлю разумеется ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 12:07 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Отдельный монстры даже программу хранять в БД в блобах, чтобы обновлять автоматически. IMHO изврат, но тогда правильной точке ты высылаешь загрузчик с данными по аутентификации загрузчик цепляется к серверу, предъявляет свой "паспорт", проверяет "паспорт" сервера, и если всё хорошо - цепляется к БД и выкачивает программу. Впрочем, выставлять Firebird напрямую в сеть считается вродеж плохим тоном, так что думай о 3-звёнке :-) Или о виртуальной сети проброшенной через интернет www.ibase.ru/zebedee/ www.sql.ru/forum/130264/zebedee ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 12:08 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchikно защиту поставлю разумеется тогда и вопрос с ID решится автоматически, как часть защиты ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 12:08 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Arioch, если будет 3-х звенка то не фиг парится по поводу подмены БД, путь этим заморачивается промежуточное звено. Ariochминус диапазонов - нужно организовать вне-транзакционный "прыжок генератора" со старого диапазона на новый. нафига? Задаёшь диапазоны большими в 1 триллион например и не паришься. Причём сами диапазоны пущай вычисляются на принимающей стороне, а сами БД будут неизменными. Если параноик проверяй что id < триллиона. aidynchik, в общем случае алгоритм такой лог изменений -> трасформация -> применение изменений Как раз на этапе трансформации можно например прибавлять к id константы для источника данных. И да трансформация не обязательный этап. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 12:18 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
17.08.2018 12:08, Arioch пишет: > Или о виртуальной сети проброшенной через интернет > www.ibase.ru/zebedee/ > www.sql.ru/forum/130264/zebedee зачем вам эта дохлая зе-бе-дя? закопайте уже таки стюардессу. OpenVPN давно уже мейнстрим. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 12:21 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchikВариант с IBReplicator мне не подходит Чисто из любопытства: чем именно? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 12:43 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, www.ibase.ru/openvpn/ -> 404 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 13:41 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Симонов Денисесли будет 3-х звенка то не фиг парится по поводу подмены БД, путь этим заморачивается промежуточное звено я имею в виду 3-звенку _внутри_ каждой оконечной точки а вопрос подмены - это _между_ точкой и центром ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 13:43 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЧисто из любопытства: чем именно? цену на продукт надо будет увеличивать ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 13:47 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Симонов ДенисПричём сами диапазоны пущай вычисляются на принимающей стороне на сервере в любом случае тоже надо имет список диапазонов, проверять валидность ID ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 13:50 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
17.08.2018 13:41, Arioch пишет: > www.ibase.ru/openvpn/ -> 404 да наверное и не надо. никакой особенной специфики в настройке OpenVPN именно под Firebird не требуется. да и во всех репозитариях он есть. ставится стандартно, настраивается тоже не особо хитромудро. зы: у нас на нём в основном Oracle и местами Firebird (на той же железяке). разбросано от Минска до Владивостока. особых проблем не замечено. если у кого-то иная статистика - высказывайтесь, плс. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 14:07 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, насколько понимаю, плюс и минус зибиди - это туннельной точка-точка шифрование конкретного соединения а VPN - это всё же склеивание обеих LAN, более сложная и мощная схема. иногда это минус, когда я хочу именно пробросить один конкретный канал, типа port forwarding, а не настроить раутинг для всех программ во всей подсети ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 14:36 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Arioch, ну алгоритмов аутентификации много. После того как принимающая сторона точно убедится, что отправляет именно тот кто надо, из спецтаблицы выбирается диапазон. В общем ничего супер сложного тут нет. Да и говорим мы пока абстрактно, а не о конкртетной реализации. Это так сказать идеи. Вот начнёт ТС делать свой репликатор возникнут у него вопрос, тогда и будем думать о недостатках его подхода. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 15:49 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
17.08.2018 14:36, Arioch пишет: > а VPN - это всё же склеивание обеих LAN, более сложная и мощная схема. > иногда это минус, когда я хочу именно пробросить один конкретный канал, типа port forwarding, > а не настроить раутинг для всех программ во всей подсети всё конфигурируется. а зебедя почила в бозе - её никто не саппортит, уже давно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 16:00 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
AriochСтарый плюшевый мишка, но минус этого подхода - что делать если точки сливаются/делятся, как историчность соблюсти ? Надо где-то хранить историю связей разных ID_Point? а чем это отличается от хранения историй диапазонов? Как-то так. Твоя проблема - неустанные попытки объять необъятное, выискивая немыслимые ситуации. У мну в топе количество пойнтов доходило до 180. Директора менялись, названия менялись, из одного подчинения в другое переходили (там звезда с иерархией), дохли, переезжали, а вот чтоб сливались - не было ни разу. И во всех перечисленных случаях с точки зрения кто кому что должен и фискальной отчётности слияние с утратой истории именно точки как раз недопустимо. А консолидировать в обобщённой статистике можно что и с чем угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2018, 16:35 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаа вот чтоб сливались - не было ни разу.А у нас было. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2018, 13:09 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
fraksСтарый плюшевый мишкаа вот чтоб сливались - не было ни разу.А у нас было. И как решались вопросы переходящих принятых ранее обязательств и мат ответственности? Неужто заменой ID? Я тут вижу два варианта. 1. Именно слияние. Конгломерат - это новый пойнт. Родители доживают до закрытия своих обязательств. 2. Слияние поглощением. Поглотивший принимает обязательства поглощённого, грубо говоря, покупает его дебиторку-кредиторку и запасы, что регистрируется соответствующими операциями. Ну или помесь 1 и 2. Никаких изменений ID не нужно. И даже вредно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2018, 13:21 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Я проблему ID решал так: все генераторы инкрементируются не на 1, а на 1000. А самое первое значение в каждом филиале задается вручную. Получаются все идентификаторы имеют постфикс в виде номера филиала. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2018, 14:52 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Соискатель С++, А чего так слабо? На более тысячи филиалов не надеетесь? Я бы на миллион инкрементировал. Конторы сразу поднимаются, когда видят такой масштаб. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2018, 15:11 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Всем доброго дня! Только дошли руки, начал по-тихоньку реализацию, и столкнулся с таким вопросом - а как реплицировать BLOB-поля? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 13:08 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchikи столкнулся с таким вопросом - а как реплицировать BLOB-поля? Так же как и любые другие. В чём проблема-то?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 13:11 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchik, дай угадаю: ты собираешься на БД-источнике формировать sql-выражения, в тексте? А потом полученный скрипт затягивать в БД-приемник? Не надо так делать. Передавай сами данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 13:31 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
MikeDD, ну да, так и собирался делать... а вы предлагаете создать таблицу логов со структурой (имя_таблицы, имя_поля, тип_поля, значение)? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 14:38 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, по вашему примеру хотел сделать http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=843731&msg=10516083 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 14:40 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchikпо вашему примеру хотел сделать "Мопед не мой." Мой мопед не имеет проблем с блобами. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 15:55 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, я просто взял его для примера... а как тогда? переделывать его в base64? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 06:48 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
aidynchikа как тогда? переделывать его в base64? признаться, что задача тебе не по зубам и использовать готовые продукты. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 12:20 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Стояла когда-то такая задача. Или подобная. Большое кол-во объектов. Уровней объектов доходило до 6. И с каждого объекта нужно было отправлять инфу очень хитро. 1.Часть инфы должна была идти на верхний уровень, часть на нижний, часть - на свой уровень, а еще некоторая инфа должна была попадать на нижний уровень через верхний. 2.Часть инфы должна была рассылаться по условиям согласно п.1 Т.е. очень хитрая репликация. 3. Проблему с уникальностью первичных ключей решили следующим образом. Каждый объект автоматизации имел свой уникальный ID, который генерился на головном серваке. Первичный ключ состоял из ID объекта, даты создания ключа и значения циклической последовательности для данной таблицы. Все это делалось на ORACLE. В нем в NUMBER влазило 24 цифирьки. Дату обрезали до часов. т.е. имели ID типа IIIIYYYYMMDDHHХХХХХХХХХХХХ. 4.Пробовали работать с GUID. Но в патчах ORACLE постоянно видели что GUID ихний имеет свойство повторяться и исправления по нему. 5. Такая система идентификации первичных ключей позволяла даже безболезненно восстанавливать упавшие объекты с верхнего уровня. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 15:31 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
06.09.2018 15:31, bsa1959 пишет: > т.е. имели ID типа IIIIYYYYMMDDHHХХХХХХХХХХХХ. не на много лучше составных ключей Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 15:36 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящийне на много лучше составных ключей Я ж конечно не гуру в SQL. Но такой подход позволил решить огромное кол-во задач. Стандартная репликация ORACLE всего этого делать не могла. Или мы не смогли ей воспользоваться под свои нужды...... В том числе и рассылкой инфы по объектам как Бог на душу положит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 15:45 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
bsa19594.Пробовали работать с GUID. Но в патчах ORACLE постоянно видели что GUID ихний имеет свойство повторяться и исправления по нему. надеюсь, в FB такой засады нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2018, 17:56 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Докнадеюсь, в FB такой засады нет? Это вопрос,скорее к разработчикам. Проверяется очень легко. Создаешь таблицу с первичным ключом GUID и запускаешь вставку записей на несколько дней..... У нас через 2-3 дня выскакивало нарушение уникальности..... Поприменяли патчи ORACLE, вроде все хорошо. А после загрузки другого патча или переходе на след.версию могло все повториться. Поэтму бросили мысли про GUID. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 07:49 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Кстати... Тоже самое было у ORACLE с двухфазным commit через DBLINK. На плохих каналах связи или при пропадании канала этот двухфазный COMMIT уходил в такие дебри, что для восстановления обмена приходилось лезть глубоко внутрь системных таблиц. И на одной и второй БД, участвующих в обмене. Патчи помогали, но через какое-то время все могло вернуться. Мы все время грешили на индусов - разработчиков........ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 08:10 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
bsa1959Поприменяли патчи ORACLE, вроде все хорошо. А после загрузки другого патча или переходе на след.версию могло все повториться. Поэтму бросили мысли про GUID. Прелесть GUID же в том, что его можно генерить прямо на клиентах, не грузя лишний раз сервер. UuidCreateSequentional() - сильная вещь в винде, за линухи не скажу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 13:47 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
bsa1959Докнадеюсь, в FB такой засады нет? Это вопрос,скорее к разработчикам. в надежде на них и спросил ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 16:18 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Как видно, под виндой засады нет, под линухом все вопросы к /dev/urandom. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 17:12 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovКак видно, под виндой засады нет, под линухом все вопросы к /dev/urandom. Сервак у нас как раз под линухом был..... О как все через много лет прояснилось..... А ответ конечно великолепный. Типа - мопед не мой. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2018, 09:53 |
|
Синхронизация (репликация) БД Firebird
|
|||
---|---|---|---|
#18+
в общем я сделал так: 1. Добавил в таблицу логирования столбец DAT с типом BLOB 2. На таблицы с blob-полями навесил отдельные триггеры, изменения по BLOB-полям вставляются в таблицу логов отдельной записью. 3. При синхронизации на передатчике делаю селект из таблицы логов в Dataset 4. Сохраня Dataset в файл 5. На приемнике восстанавливаю датасет из файла 6. Пробегаюсь по датасету и вставляю все в таблицу логов приемника, а потом уже прогоняю sql-выражения. Таким боком не надо ничего придумывать с BLOB-полями, они передаются как есть. Возможно это колхоз, но работает ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2018, 07:10 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560987]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
others: | 300ms |
total: | 490ms |
0 / 0 |