Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Асинхронная двухсторонняя репликация / 22 сообщений из 22, страница 1 из 1
27.02.2008, 12:03
    #35157438
pg_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Всем привет!
Начальство "сказало" переходить на бесплатную СУБД, сейчас все крутится на MS SQL 2000. Рассматриваем FireBird и PostgreSQL. Напарник ищет плюсы/минусы FireBird, я соотвественно PostgreSQL. Все нравилось пока не нашел ничего по поводу асинхронной двухсторонней репликации, напарник говорит, что в FB есть. Плохо искал или действительного ничего нет?
slonyII - мертв?
PGCluster - синхронная
pgpool-II - ничего не нашел про асинхронность, значит нету.

У нас 8 филиалов и документы изменяются на разных узлах.
...
Рейтинг: 0 / 0
27.02.2008, 12:33
    #35157535
Thamerlan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Асинхронный master<->master? Как вы себе это представляете?
...
Рейтинг: 0 / 0
27.02.2008, 12:42
    #35157559
pg_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Как merge в MS SQL. Один и тот же документ может исправляться на любом узле. Способ разрешения конфликтов на усмотрение разработчика.
...
Рейтинг: 0 / 0
27.02.2008, 12:54
    #35157599
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Готового решения асинхронного мультимастера с мануальным разрешением конфликтов в PostgreSQL не существует -- нужно делать самому. Помочь в этом могут, например, SkyTools, смотреть в сторону Londiste (движок для организации потабличной репликации с возможностью двухстороннего сравнения таблиц) и PgQ (обобщенная очередь в PostgreSQL). https://developer.skype.com/SkypeGarage/DbProjects/SkyTools .
...
Рейтинг: 0 / 0
27.02.2008, 13:09
    #35157655
pg_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
izнужно делать самомуГрустно:-(. Не подскажите, разрабатываются такие продукты ,если да, то как скоро их можно пощупать? Боюсь, что написание своей репликации может занять больше времени, чем перевод БД с MS SQL->PostgreSQL.
...
Рейтинг: 0 / 0
27.02.2008, 13:57
    #35157827
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Мультимастер в постгресе большая идеологическая проблема, поскольку постгрес версионник. Представьте, что на каждом сервере один и тот же документ существует в нескольких версиях (в незафиксированных транзациях), да еще нужно выполнить синхронизацию между серверами. Даже в теории выполнить синхронизацию можно только тогда, когда ни на одном из серверов нет ни одной модифицирующей транзакции на таблице документов или связанных таблицах.

Резюме - для создания распределенной системы используйте блокировочные СУБД, а не версионники. Если же хотите открытый движок с очень высокой производительностью, гляньте на berkeley db и sqlite, хотя разработка на них будет посложнее.
...
Рейтинг: 0 / 0
27.02.2008, 14:10
    #35157875
pg_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
MBGРезюме - для создания распределенной системы используйте блокировочные СУБД, а не версионники. Если же хотите открытый движок с очень высокой производительностью, гляньте на berkeley db и sqlite, хотя разработка на них будет посложнее.
Короче, если писать распределенную систему на PostgreSQL надо изобретать навороченный велосипед под названием "Репликация" или создавать на другой СУБД, где это уже реализовано.
Всем спасибо.
...
Рейтинг: 0 / 0
27.02.2008, 14:48
    #35158016
Thamerlan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
pg_man MBGРезюме - для создания распределенной системы используйте блокировочные СУБД, а не версионники. Если же хотите открытый движок с очень высокой производительностью, гляньте на berkeley db и sqlite, хотя разработка на них будет посложнее.
Короче, если писать распределенную систему на PostgreSQL надо изобретать навороченный велосипед под названием "Репликация" или создавать на другой СУБД, где это уже реализовано.
Всем спасибо.

Ну если есть интерес к синхронной мультимастер репликации, то можете посмотреть на Cybercluster .
Cybertec is a PostgreSQL replication solution which makes sure that the database cluster is consistent at every point in time. We rely on a shared-nothing architecture which is perfectly suitable for synchronous multimaster replication.

Сам не пробовал и услышал про такое довольно недавно.
...
Рейтинг: 0 / 0
27.02.2008, 15:04
    #35158071
pg_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
ThamerlanНу если есть интерес к синхронной мультимастер репликации, то можете посмотреть на Cybercluster А если связи не будет, потом подымать бэкапы, синхронизировать...и все практически вручную. Хотя если все это автоматизировать получится асинхронная репликация:-)
...
Рейтинг: 0 / 0
27.02.2008, 15:43
    #35158245
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
pg_man ThamerlanНу если есть интерес к синхронной мультимастер репликации, то можете посмотреть на Cybercluster А если связи не будет, потом подымать бэкапы, синхронизировать...и все практически вручную. Хотя если все это автоматизировать получится асинхронная репликация:-)

Допилить не получится. Синхронная репликация работает на двухфазном коммите транзакций, т.е. каждая транзакция выполняется _на всех_ узлах кластера. Соответственно, не удастся распределить нагрузку между серверами или сделать этот процесс асинхронным. Смысл названного решения в создании серверов горячего резерва (притом необходимо наличие надежного канала между всеми серверами, что требует установки всех серверов в одном дата-центре). Предполагается, что можно запросы select выполнять на любом из серверов, но в случае, когда используются обращения к хранимым процедурам, не получится и это, поскольку хранимая процедура может не только возвращать наборы данных, но и модифицировать хранимые данные и структуру БД.
...
Рейтинг: 0 / 0
27.02.2008, 17:00
    #35158619
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
MBGМультимастер в постгресе большая идеологическая проблема, поскольку постгрес версионник. Представьте, что на каждом сервере один и тот же документ существует в нескольких версиях (в незафиксированных транзациях), да еще нужно выполнить синхронизацию между серверами. Даже в теории выполнить синхронизацию можно только тогда, когда ни на одном из серверов нет ни одной модифицирующей транзакции на таблице документов или связанных таблицах.почему идеологическая проблема ? %) документ существует только в зафиксированном виде и синхронизировать нужно именно его, документы в незафиксированных транзациях - не существуют.

ps: хотя я может быть просто не понимаю о чём идёт речь %)
...
Рейтинг: 0 / 0
27.02.2008, 17:22
    #35158726
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Ёш MBGМультимастер в постгресе большая идеологическая проблема, поскольку постгрес версионник. Представьте, что на каждом сервере один и тот же документ существует в нескольких версиях (в незафиксированных транзациях), да еще нужно выполнить синхронизацию между серверами. Даже в теории выполнить синхронизацию можно только тогда, когда ни на одном из серверов нет ни одной модифицирующей транзакции на таблице документов или связанных таблицах.почему идеологическая проблема ? %) документ существует только в зафиксированном виде и синхронизировать нужно именно его, документы в незафиксированных транзациях - не существуют.

ps: хотя я может быть просто не понимаю о чём идёт речь %)

Транзакция, которая будет выполнять синхронизацию, тоже до коммита не существует. Например, в 11:59 начинаем транзакцию сохранения новой версии документа, а в 12:00 начинаем транзакцию синхронизации. В 12:01 на сервер сохраняется новая версия документа, но транзакция синхронизации эту новую версию не видит, поскольку внутри транзакции состояние базы "заморожено" на момент начала транзакции. В 12:02 завершается транзакция синхронизации. Вот вам и принципиальная проблема - непонятно даже, как идеологически решать, то ли надо откатывать транзакцию синхронизации, то ли подтверждать. В любом случае сложно предсказать, какая же версия документа окажется на каждом из серверов после их синхронизации. Даже на момент начала синхронизации не удастся точно определить, какая версия документа находится на сервере, так как могут существовать транзакции, изменяющие этот документ, а предсказать заранее, будут ли эти транзакции зафиксированы, нельзя.

Конечно, можно накладывать блокировки разных уровней на синхронизируемые таблицы, но это нарушит нормальную работу системы, да к тому же не поможет разобраться с уже начатыми транзакциями, которые на время блокировки приостановят выполнение.
...
Рейтинг: 0 / 0
27.02.2008, 17:44
    #35158821
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
MBG
Транзакция, которая будет выполнять синхронизацию, тоже до коммита не существует. Например, в 11:59 начинаем транзакцию сохранения новой версии документа, а в 12:00 начинаем транзакцию синхронизации. В 12:01 на сервер сохраняется новая версия документа, но транзакция синхронизации эту новую версию не видит, поскольку внутри транзакции состояние базы "заморожено" на момент начала транзакции. В 12:02 завершается транзакция синхронизации. Вот вам и принципиальная проблема - непонятно даже, как идеологически решать, то ли надо откатывать транзакцию синхронизации, то ли подтверждать. В любом случае сложно предсказать, какая же версия документа окажется на каждом из серверов после их синхронизации. Даже на момент начала синхронизации не удастся точно определить, какая версия документа находится на сервере, так как могут существовать транзакции, изменяющие этот документ, а предсказать заранее, будут ли эти транзакции зафиксированы, нельзя.

Конечно, можно накладывать блокировки разных уровней на синхронизируемые таблицы, но это нарушит нормальную работу системы, да к тому же не поможет разобраться с уже начатыми транзакциями, которые на время блокировки приостановят выполнение.
Че-то странное Вы пишете, уважаемый. А какая нам фтопку разницо?
Есть изменения - должны быть реплицированы на все базы, есть удаления - аналогично, есть вставки - та же фигня.

У нас работает на Оракле (тоже вроде не блокировщик) асинхронная мультимастер репликация и не жужжит. Нормально работает. Хуже с софтом - там много заморочек, например FK, или триггера, коороые зависят от последовательности выполнений... в общем, проблем очень много, но совершенно в другой области.
...
Рейтинг: 0 / 0
27.02.2008, 18:03
    #35158923
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Andrey Daeron
Че-то странное Вы пишете, уважаемый. А какая нам фтопку разницо?
Есть изменения - должны быть реплицированы на все базы, есть удаления - аналогично, есть вставки - та же фигня.

Если вы пишете свою систему репликации, разница есть. Если берете готовую, тогда дело совести - разбираться, как работает или "на авось".

Andrey Daeron
У нас работает на Оракле (тоже вроде не блокировщик) асинхронная мультимастер репликация и не жужжит. Нормально работает. Хуже с софтом - там много заморочек, например FK, или триггера, коороые зависят от последовательности выполнений... в общем, проблем очень много, но совершенно в другой области.

И как написанную без учета репликации БД в оракл запустить на мультимастере? Даже не стоит обсуждать. В блокировочнике проще. Раз уж вы упомянули оракл, то в качестве примера назову недавно ими купленную berkeleydb - там подобных заморочек с репликацией нет и быть не может. Насколько мне известно, mysql использует подобную низкоуровневую систему. А в оракле это реализуется намного сложнее, и необходимо переписывать базу (функции, триггеры и т.п.).
...
Рейтинг: 0 / 0
28.02.2008, 07:39
    #35159545
darkpiper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Извиняюсь немного не в тему....
У FB с репликацией еще хуже чем у PostgreSQL
у FB нет никаких встроенных средств, существуют только костыли внешние
PS Или я плохо искал
...
Рейтинг: 0 / 0
28.02.2008, 07:57
    #35159561
непонимайу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
darkpiperPS Или я плохо искал плохо
...
Рейтинг: 0 / 0
28.02.2008, 09:15
    #35159636
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
MBG
И как написанную без учета репликации БД в оракл запустить на мультимастере? Даже не стоит обсуждать. В блокировочнике проще. Раз уж вы упомянули оракл, то в качестве примера назову недавно ими купленную berkeleydb - там подобных заморочек с репликацией нет и быть не может. Насколько мне известно, mysql использует подобную низкоуровневую систему. А в оракле это реализуется намного сложнее, и необходимо переписывать базу (функции, триггеры и т.п.).
Еще раз. Я не вижу принципиальных различий между блокировочником и версионником в данном контексте. Если БД не расчитана на мультимастер, то будь-то Оракл, Постгрес или MS SQL и BDB - будут проблемы, при решении которых структура БД изменится. Если репликация встроена в БД или являются синхронной - тогда всё гораздо проще, тогда механизмы репликации просто скрыты от глаз программиста/пользователя.
...
Рейтинг: 0 / 0
28.02.2008, 09:51
    #35159712
alex212
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
А как насчет этого ?
...
Рейтинг: 0 / 0
28.02.2008, 12:16
    #35160249
pg_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
alex212А как насчет этого ?Кто нибудь пробывал? Как поставить под Windows, а то *nix-ов боюсь?
...
Рейтинг: 0 / 0
28.02.2008, 22:44
    #35161903
Nick Gazaloff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Bucardo Limitations

Bucardo, like all replication systems, has limitations, including:

* Requires Postgres 8.1 or better, with Pl/Perl and Pl/pgsql. Version 8.2 or better is recommended.
* Requires recent versions of Perl and DBD::Pg.
* Replicates tables only, not the entire database.
* Does not replicate DDL.
* Cannot handle more than two master nodes at a time (no master-master-master replication yet).
* Requires a primary key on each table to be replicated.
* Step by step data changes are not tracked, so busy sites with large network disconnect times may require expensive locking to "catch back up"
...
Рейтинг: 0 / 0
29.02.2008, 07:52
    #35162105
pg_man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
Bucardo Limitations
* Cannot handle more than two master nodes at a time (no master-master-master replication yet).
Что мешает назначить "главный" сервер и по очереди синхронизировать данные?
Bucardo Limitations
* Step by step data changes are not tracked, so busy sites with large network disconnect times may require expensive locking to "catch back up"Вот это не понял, объясните пожалуйста.
...
Рейтинг: 0 / 0
29.02.2008, 10:33
    #35162395
Nick Gazaloff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронная двухсторонняя репликация
pg_man alex212А как насчет этого ?Кто нибудь пробывал? Как поставить под Windows, а то *nix-ов боюсь?

Документацию читать уже не модно?

Currently, Bucardo has only been tested on Linux distributions. In theory, it should work fine on most other unix-like systems. It will not run on Windows without some minor modifications to code involving system calls.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Асинхронная двухсторонняя репликация / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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