Синхронизация и репликация ДБ по многим частям света
-
- Уже с Приветом
- Posts: 18906
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
Синхронизация и репликация ДБ по многим частям света
Встала след. задача - сделать DB solution с примерно следующими характеристиками
1. требуется репликация всех данных целиком на разные регионы - Сев. Америка, Зап. Европа и Азия
2. адекватная синхронизация данных между регионами за приемлемое время (суперскорость в силу определенных причин не критична), но хотелось бы чтобы write/update в одном месте доходили до других не через часы.
3. максимальная пропускная способность при чтении (имеют место пиковые часы по нагрузке)
4. желательно бесплатно, можно как SQL based, так и NoSQL - данные легко утрамбуются и туда и туда.
В настоящее время имеется одна база в одном месте и скорость доступа к оной из удаленных мест при пиковой нагрузке становится очень конкретной pain in the ass, и первое, что приходит в голову - сдублировать данные поближе к местам потребления, при этом текущее решение можно полностью похерить. Собсно отсюда и сабж.
Мысли - советы - велкам!
1. требуется репликация всех данных целиком на разные регионы - Сев. Америка, Зап. Европа и Азия
2. адекватная синхронизация данных между регионами за приемлемое время (суперскорость в силу определенных причин не критична), но хотелось бы чтобы write/update в одном месте доходили до других не через часы.
3. максимальная пропускная способность при чтении (имеют место пиковые часы по нагрузке)
4. желательно бесплатно, можно как SQL based, так и NoSQL - данные легко утрамбуются и туда и туда.
В настоящее время имеется одна база в одном месте и скорость доступа к оной из удаленных мест при пиковой нагрузке становится очень конкретной pain in the ass, и первое, что приходит в голову - сдублировать данные поближе к местам потребления, при этом текущее решение можно полностью похерить. Собсно отсюда и сабж.
Мысли - советы - велкам!
Тупизна как Энтропия. Неумолимо растет.
-
- Уже с Приветом
- Posts: 13722
- Joined: 16 Jan 2001 10:01
Re: Синхронизация и репликация ДБ по многим частям света
Я много лет назад пытался добиться такого на OpenLDAP
Вроде почти получилось, но потом вышла новая версия, а приложение у меня отняли...
Сейчас мы тоже ищем что-то подобное.
Вроде на MySQL можно разные комбинации сделать, но как оно реально работает - непонятно...
Вроде почти получилось, но потом вышла новая версия, а приложение у меня отняли...
Сейчас мы тоже ищем что-то подобное.
Вроде на MySQL можно разные комбинации сделать, но как оно реально работает - непонятно...
-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Синхронизация и репликация ДБ по многим частям света
AWS так и просится..
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 18906
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
Re: Синхронизация и репликация ДБ по многим частям света
Текущее решение сбацано на Postgres и к оному можно прикрутить варианты репликации, hot standby и так далее, но конечная эффективность всего этого выглядит не гарантированной даже без учета сопутствующего головняка на тему физической реализации замысла.
Сам амазон пользовать низзя, тк все должно быть внутри корпоративной сети, внутренний эквивалент AWS есть, но заточен на веб-аппс и (микро)сервисы, с поддержкой продвинутых фич для реляционных баз данных из коробки - голяк.
Поглядываю на Кассандру, коя целиком и полностью поддерживается, по описанию выглядит как возможный кандидат, но есть сомнения на тему скорости чтения из базы - насколько быстро оно читает...
Сам амазон пользовать низзя, тк все должно быть внутри корпоративной сети, внутренний эквивалент AWS есть, но заточен на веб-аппс и (микро)сервисы, с поддержкой продвинутых фич для реляционных баз данных из коробки - голяк.
Поглядываю на Кассандру, коя целиком и полностью поддерживается, по описанию выглядит как возможный кандидат, но есть сомнения на тему скорости чтения из базы - насколько быстро оно читает...
Тупизна как Энтропия. Неумолимо растет.
-
- Уже с Приветом
- Posts: 5691
- Joined: 01 Mar 2004 10:57
- Location: Сибирь -> Aotearoa
Re: Синхронизация и репликация ДБ по многим частям света
И чем это отличается от редактирования данных многими пользователями в локальной базе?Lazy444 wrote: 24 Apr 2018 22:58Если же правил нет, или данные меняют по принципу "кто первый успел, того и тапочки", то имхо задача решения не имеет.
-
- Уже с Приветом
- Posts: 5691
- Joined: 01 Mar 2004 10:57
- Location: Сибирь -> Aotearoa
Re: Синхронизация и репликация ДБ по многим частям света
А вот не надо менять условия задачи чтобы подогнать под ответ который у вас естьLazy444 wrote: 25 Apr 2018 01:58Как пример: в локальной базе одновременно можно предотвратить изменение одной и той же строчки в таблице с первичным ключом равным 1 разными пользователями. В распределенной базе изменить одну и ту же строчку в таблице с первичным ключом равным 1 как два пальца об асфальт. Внимание вопрос : запись в какой из баз будет "правильная" ?
![No-No! :nono#:](./images/smilies/nono.gif)
"предотвратить изменение одной и той же строчки в таблице с первичным ключом равным 1 разными пользователями" никак не отменяет возможность изменения этой же записи другим пользователем минутой позже.
"кто первый успел, того и тапочки" в чистом виде
-
- Уже с Приветом
- Posts: 7723
- Joined: 29 Mar 2000 10:01
- Location: Kirkland,WA
Re: Синхронизация и репликация ДБ по многим частям света
Я надеюсь что ваш лоад какой нибудь очень специальный. Просто то что глобально работает и при этом не дохнёт под реальной нагрузкой можно пересчитать на пальцах одного архитекта. А самые работающие (спаннер, dynamodb global tables) только в клауде.
-
- Уже с Приветом
- Posts: 1494
- Joined: 08 Mar 2002 10:01
- Location: NJ
Re: Синхронизация и репликация ДБ по многим частям света
У каждой приличной RDBMS есть штатный механизм репликации. Посмотрите доки как ее настраивать. Самое главное, нужно определиться со стратегией.
Насчет NoSQL, если нет биг даты, то нафиг она нужна? Там есть серьезные ограничения по функциональности, например, нет джойнов. Ну и вообще эта технология сырая и часто на коленке деланная, тогда как RDBMS все зрелые.
Насчет NoSQL, если нет биг даты, то нафиг она нужна? Там есть серьезные ограничения по функциональности, например, нет джойнов. Ну и вообще эта технология сырая и часто на коленке деланная, тогда как RDBMS все зрелые.
-
- Уже с Приветом
- Posts: 18906
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
Re: Синхронизация и репликация ДБ по многим частям света
Почти оно. Почти - бо есть кое какие тонкости, но в целом картина практически такая, поэтому собственно вопрос о репликации и встал. Если б был полный зоопарк - то репликация была бы как мертвому припарки.Lazy444 wrote: 24 Apr 2018 22:58 Если данные можно поделить так, что каждое location может менять только свою часть данных, а остальные у себя только читатели, то тоже можно делать.
![Search :Search:](./images/smilies/search.gif)
Тупизна как Энтропия. Неумолимо растет.
-
- Уже с Приветом
- Posts: 18906
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
Re: Синхронизация и репликация ДБ по многим частям света
RTFM совет канэшн хорошийALV00 wrote: 25 Apr 2018 04:40 У каждой приличной RDBMS есть штатный механизм репликации. Посмотрите доки как ее настраивать. Самое главное, нужно определиться со стратегией.
![Wink :wink:](./images/smilies/wink.gif)
Ну мало ли, может окажется, что телескопом определенной модели очень удобно гвозди забивать. Особенно если телескоп все время на облачке и под рукой.Насчет NoSQL, если нет биг даты, то нафиг она нужна? Там есть серьезные ограничения по функциональности, например, нет джойнов. Ну и вообще эта технология сырая и часто на коленке деланная, тогда как RDBMS все зрелые.
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
Тупизна как Энтропия. Неумолимо растет.
-
- Уже с Приветом
- Posts: 18906
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
Re: Синхронизация и репликация ДБ по многим частям света
Чтоб не наводить тень на плетень - этот вариант возможен и разрешается путем присуждения победы первому откоммитевшему.Lazy444 wrote: 25 Apr 2018 03:56 Если два пользователя изменили одну и ту же запись с интервалом в одну минуту, и первое изменение не успело в другую базу до того, как там произошло второе изменение, то какое изменение, по вашему, оставляем ? Первое или второе ? и почему ?
Тупизна как Энтропия. Неумолимо растет.
-
- Уже с Приветом
- Posts: 549
- Joined: 07 Jan 2016 13:04
Re: Синхронизация и репликация ДБ по многим частям света
Решали подобную задачу. Пришли к выводу, что конкретная база роли не играет, можно брать ту, к которой больше душа лежит. Мы все сделали через Single Master & Multiple Slaves. В мастер данные только пишутся. Мастер ничего не знает о репликах и конфликты решаются по принципу "кто последний, тот и папа", т.е. если из разных стран прилетят апдэйты по одному ключу, то будет принят последний. Разумеется, декриминализируется убийство разработчиков, кто апдейтит всю запись, а не отдельные поля. Ну и мастер воспринимается как Single source of true. Если какая либо реплика становится неконсистентной, то ее восстанавливают из мастера. Хотя такое бывало только в самом начале, до того как были подняты очереди между базами.
Если единственного мастера окажется мало, например по причини миллионов пользователей, то боюсь, что тут уже никто вам не даст готового рецепта.
З.Ы. Делали на Оракле. Просто он набрал больше голосов и не было особых причин "почему нет".
Если единственного мастера окажется мало, например по причини миллионов пользователей, то боюсь, что тут уже никто вам не даст готового рецепта.
З.Ы. Делали на Оракле. Просто он набрал больше голосов и не было особых причин "почему нет".
-
- Уже с Приветом
- Posts: 1982
- Joined: 10 Oct 2000 09:01
- Location: New England
Re: Синхронизация и репликация ДБ по многим частям света
Дык Streams все / deprecated and will be desupported.Lazy444 wrote:Ну вот вам и правило для разрешения конфликтовBoriskin wrote: 25 Apr 2018 16:23Чтоб не наводить тень на плетень - этот вариант возможен и разрешается путем присуждения победы первому откоммитевшему.Lazy444 wrote: 25 Apr 2018 03:56 Если два пользователя изменили одну и ту же запись с интервалом в одну минуту, и первое изменение не успело в другую базу до того, как там произошло второе изменение, то какое изменение, по вашему, оставляем ? Первое или второе ? и почему ?![]()
Могу посоветовать делать репликацию на Оракле. Можно использовать стандартную репликацию от Оракла. Можно Oracle Streams как второй вариант. С репликацией на других базах дела не имел, сказать ничего умного не могу. Oracle Standard Edition по деньгам вполне бюджетно ИМХО.
А Golden gate (который конечно на порядок лучше) стоит не по детски.
-
- Уже с Приветом
- Posts: 13722
- Joined: 16 Jan 2001 10:01
Re: Синхронизация и репликация ДБ по многим частям света
А пишут непосредственно клиенты? Им нужно знать о ближайшем рабе и хозяине?tessob wrote: 26 Apr 2018 08:13 Решали подобную задачу. Пришли к выводу, что конкретная база роли не играет, можно брать ту, к которой больше душа лежит. Мы все сделали через Single Master & Multiple Slaves. В мастер данные только пишутся.
...
З.Ы. Делали на Оракле. Просто он набрал больше голосов и не было особых причин "почему нет".
Или как-то форвардятся запросы?
-
- Уже с Приветом
- Posts: 13722
- Joined: 16 Jan 2001 10:01
Re: Синхронизация и репликация ДБ по многим частям света
Вот так всегда с репликациями:Mark wrote: 26 Apr 2018 11:53Дык Streams все / deprecated and will be desupported.Lazy444 wrote: Могу посоветовать делать репликацию на Оракле. Можно использовать стандартную репликацию от Оракла. Можно Oracle Streams как второй вариант. С репликацией на других базах дела не имел, сказать ничего умного не могу. Oracle Standard Edition по деньгам вполне бюджетно ИМХО.
А Golden gate (который конечно на порядок лучше) стоит не по детски.
Глянешь - решений тыща под всё на свете.
Начинаешь копать - оказывается дай Бог одно из них вроде бы работающее, да и то никто не пробовал, поскольку все уже слабали на коленке что-то своё...