powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Синхронизация (репликация) БД Firebird
16 сообщений из 66, страница 3 из 3
Синхронизация (репликация) БД Firebird
    #39698521
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikeDD,

ну да, так и собирался делать...
а вы предлагаете создать таблицу логов со структурой (имя_таблицы, имя_поля, тип_поля, значение)?
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39698526
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

по вашему примеру хотел сделать

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=843731&msg=10516083
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39698596
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchikпо вашему примеру хотел сделать

"Мопед не мой."
Мой мопед не имеет проблем с блобами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39698809
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

я просто взял его для примера...
а как тогда? переделывать его в base64?
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39698938
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchikа как тогда? переделывать его в base64?

признаться, что задача тебе не по зубам и использовать готовые продукты.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699115
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стояла когда-то такая задача. Или подобная.
Большое кол-во объектов. Уровней объектов доходило до 6.
И с каждого объекта нужно было отправлять инфу очень хитро.
1.Часть инфы должна была идти на верхний уровень, часть на нижний, часть - на свой уровень, а еще некоторая инфа должна была попадать на нижний уровень через верхний.
2.Часть инфы должна была рассылаться по условиям согласно п.1

Т.е. очень хитрая репликация.

3. Проблему с уникальностью первичных ключей решили следующим образом.
Каждый объект автоматизации имел свой уникальный ID, который генерился на головном серваке.
Первичный ключ состоял из ID объекта, даты создания ключа и значения циклической последовательности для данной таблицы.
Все это делалось на ORACLE. В нем в NUMBER влазило 24 цифирьки. Дату обрезали до часов.

т.е. имели ID типа IIIIYYYYMMDDHHХХХХХХХХХХХХ.

4.Пробовали работать с GUID. Но в патчах ORACLE постоянно видели что GUID ихний имеет свойство повторяться и исправления по нему.
5. Такая система идентификации первичных ключей позволяла даже безболезненно восстанавливать упавшие объекты с верхнего уровня.
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699117
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
06.09.2018 15:31, bsa1959 пишет:
> т.е. имели ID типа IIIIYYYYMMDDHHХХХХХХХХХХХХ.

не на много лучше составных ключей
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699121
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящийне на много лучше составных ключей

Я ж конечно не гуру в SQL. Но такой подход позволил решить огромное кол-во задач. Стандартная репликация ORACLE всего этого делать не могла. Или мы не смогли ей воспользоваться под свои нужды......
В том числе и рассылкой инфы по объектам как Бог на душу положит.
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699208
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bsa19594.Пробовали работать с GUID. Но в патчах ORACLE постоянно видели что GUID ихний имеет свойство повторяться и исправления по нему.
надеюсь, в FB такой засады нет?
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699310
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Докнадеюсь, в FB такой засады нет?
Это вопрос,скорее к разработчикам. Проверяется очень легко. Создаешь таблицу с первичным ключом GUID и запускаешь вставку записей на несколько дней..... У нас через 2-3 дня выскакивало нарушение уникальности..... Поприменяли патчи ORACLE, вроде все хорошо. А после загрузки другого патча или переходе на след.версию могло все повториться. Поэтму бросили мысли про GUID.
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699314
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати...
Тоже самое было у ORACLE с двухфазным commit через DBLINK. На плохих каналах связи или при пропадании канала этот двухфазный COMMIT уходил в такие дебри, что для восстановления обмена приходилось лезть глубоко внутрь системных таблиц. И на одной и второй БД, участвующих в обмене. Патчи помогали, но через какое-то время все могло вернуться. Мы все время грешили на индусов - разработчиков........
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699616
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bsa1959Поприменяли патчи ORACLE, вроде все хорошо. А после загрузки другого патча или переходе на
след.версию могло все повториться. Поэтму бросили мысли про GUID.

Прелесть GUID же в том, что его можно генерить прямо на клиентах, не грузя лишний раз
сервер. UuidCreateSequentional() - сильная вещь в винде, за линухи не скажу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699760
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bsa1959Докнадеюсь, в FB такой засады нет?
Это вопрос,скорее к разработчикам.
в надежде на них и спросил
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699790
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
void GenerateGuid(Guid* guid)
{
	const HRESULT error = CoCreateGuid((GUID*) guid);
	if (!SUCCEEDED(error))
		Firebird::system_call_failed::raise("CoCreateGuid", error);
}


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void GenerateGuid(Guid* guid)
{
	GenerateRandomBytes(guid, sizeof(Guid));

	Win32GUID* wg = (Win32GUID*) guid;
	wg->data3 = (4 << 12) | (wg->data3 & 0xFFF);	// version 4
	wg->data4[0] = 0x80 | (wg->data4[0] & 0x3F);	// variant
}


Как видно, под виндой засады нет, под линухом все вопросы к /dev/urandom.
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39699890
bsa1959
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovКак видно, под виндой засады нет, под линухом все вопросы к /dev/urandom.

Сервак у нас как раз под линухом был..... О как все через много лет прояснилось.....
А ответ конечно великолепный. Типа - мопед не мой.
...
Рейтинг: 0 / 0
Синхронизация (репликация) БД Firebird
    #39701204
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем я сделал так:
1. Добавил в таблицу логирования столбец DAT с типом BLOB
2. На таблицы с blob-полями навесил отдельные триггеры, изменения по BLOB-полям вставляются в таблицу логов отдельной записью.
3. При синхронизации на передатчике делаю селект из таблицы логов в Dataset
4. Сохраня Dataset в файл
5. На приемнике восстанавливаю датасет из файла
6. Пробегаюсь по датасету и вставляю все в таблицу логов приемника, а потом уже прогоняю sql-выражения.

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


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