Синхронизация и репликация ДБ по многим частям света

User avatar
Vladimir Kr.
Уже с Приветом
Posts: 541
Joined: 24 Mar 2004 07:31
Location: Krasnoyrsk -> -> Chicago

Re: Синхронизация и репликация ДБ по многим частям света

Post by Vladimir Kr. »

tessob wrote: 30 Apr 2018 12:37
Vladimir Kr. wrote: 29 Apr 2018 16:23Извините, но вы смешали все в кучу: создание записи, ее изменение, связь с 3rd party на грязных данных, отсустствие синхронизации за вменяемое время, да еще и отсутствие шардинга.
Пример вполне корректный. Мы же про реальную жизнь тут говорим. Представьте, что таким образом я хочу собирать чеки пробитые на кассах. Там еще и бумажка с ИД появится. Случаи, когда в одну табличку пишется одна строчка - скорее экзотика.
Vladimir Kr. wrote: 29 Apr 2018 16:23Но правильнее всего, это использовать 2й способ - XA transaction (двухфазный коммит) или 3й способ.
У вас в обоих случаях будет проигрыш в производительности в сравнении с единственным мастером. Кроме того мне не очень понятно как вы заблокируете другие потоки на запись. Просто представьте, что два клиента параллельно выполнили все проверки и фиганули свои записи на разные сервера с одинаковым ключом. У Вас тут будут те же проблемы с "гонкой", что и в многопоточном программировании. Только в сравнении с многопоточным программированием у вас нет единой среды выполнения.
А у вас будет zero performance when server down.

Сори, но мы говорим на разных языках. Please google and understand first: DB transactions, XA (two phase commit), sharding (aka partitioning). и как решают у DB проблемы с "гонкой".

Мои поинт был в том, чтобы (a): показать, что решение существует, (b): спросить про реализацию, если кто знает.
tessob
Уже с Приветом
Posts: 549
Joined: 07 Jan 2016 13:04

Re: Синхронизация и репликация ДБ по многим частям света

Post by tessob »

Lazy444 wrote: 30 Apr 2018 15:43ИМХО тут ошибка в дизайне базы данных. Необходимо исключить дупликат ИД. Для этого можно (Oracle as an example) :
1. Сделать функцию, которая выдает уникальный ИД. Типа только мастер раздает ИД. Двухфазный коммит, линк на удаленную базу данных в помощь.
2. Сделать ИД композитным , состоящим из двух колонок, типа ИД и кода локации
3. Сделать ИД уникальным с помощью sys_guid and datatype raw(16).
Как спроектировать идеальную базу - это предмет отдельного разговора. Что делать, если база уже существует? Мигрировать?
Vladimir Kr. wrote: 30 Apr 2018 16:02А у вас будет zero performance when server down.
Там и сейчас такая же картина. Однако это плата за консистентность. Скажите мне, как вы сможете восстановить консистентность данных, если один из ваших серверов "потеряет" связь с внешним миром, но какие-то клиенты продолжат работу с ним? Опять в Гугл мне идти?
Vladimir Kr. wrote: 30 Apr 2018 16:02Сори, но мы говорим на разных языках. Please google and understand first: DB transactions, XA (two phase commit), sharding (aka partitioning). и как решают у DB проблемы с "гонкой".

Мои поинт был в том, чтобы (a): показать, что решение существует, (b): спросить про реализацию, если кто знает.
Давайте на чистоту, никаких ответов в гугле как решать проблему гонки нет. Если бы это там было, то эта тема не появилась бы. Проблема скалирования данных - это одна из самых серьезных проблем, которая сейчас есть в ИТ. Ваши решения никакого отношения к реальному миру не имеют.
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Синхронизация и репликация ДБ по многим частям света

Post by Boriskin »

uncle_Pasha wrote: 28 Apr 2018 17:04 Я не уловил требований, которые препятствуют использования репликации с Postgress.
По факту каких либо реальных showstopper-ов нет. Гимор о котором я говорю - это практическая реализация подобного замысла, основной затык в том, как это физически реализовать в свете того, что корпоративный клауд с репликацией Постгреса пока не дружит от слова никак и добиться от них поддержки того, что надо - в обозримые сроки нереально. То бишь нужно создавать физическую инфраструктуру - сервера, бэкапы етс - для всего этого, а хотелось бы запихать это все в облако в датацентры и не париться о том, что где-то сервак помер, где-то бэкап не случился етс.
Тот же Amazon его использует в AWS - и read-only реплики работают вполне сносно.
Можно, конечно, что-то еще прикрутить, но почему бы не начать с того, что работает уже сейчас?
Вот я и пробую разобраться, как и на елку влезть и попу не ободрать. ;-)
Тупизна как Энтропия. Неумолимо растет.
tessob
Уже с Приветом
Posts: 549
Joined: 07 Jan 2016 13:04

Re: Синхронизация и репликация ДБ по многим частям света

Post by tessob »

Lazy444 wrote: 30 Apr 2018 17:23ИМХО с точки зрения бизнеса проще купить каналы связи "поширше" :-) чем заниматься переделкой.
Вот тут мы на 100% сходимся.
Lazy444 wrote: 30 Apr 2018 17:28Решений для повышения отказоустойчивости базы данных много. Как пример на Оракле это Real Application Cluster (RAC) c Transparent Application Failover(TAF), or Oracle Physical Standby c Dataguard. Что использовать, зависит от требований к отказоустойчивости: несколько минут или несколько секунд.
К сожалению не знаком с этими продуктами/технологиями. Однако в реальном проекте как-то сцыкотно обычно брать проприетарные технологии с неочевидными сайд-эффектами и минимумом открытых фидбеков от клиентов. Причем, чем крупнее вендор, тем сцыкотнее. Особенно в последние лет 10. 8)
oshibka_residenta
Уже с Приветом
Posts: 4435
Joined: 13 Feb 2002 10:01
Location: Bay Area

Re: Синхронизация и репликация ДБ по многим частям света

Post by oshibka_residenta »

tessob wrote: 26 Apr 2018 18:15
Palych wrote: 26 Apr 2018 14:27 А пишут непосредственно клиенты? Им нужно знать о ближайшем рабе и хозяине?
Или как-то форвардятся запросы?
Вся запись только в мастер, а чтение только из слейвов. Просто было принято волевое решение, что запись в базу будет дорогой, но зато дешевое чтение и никакого гимора с консистентностью. Ну и любое количество слейвов, в том числе для всякого репортинга и прочей фигни.
Если можно позволить себе роскошь иметь single master, то, конечно, это way to go. Тогда и говорить не о чем.
p.s.
Мы используем Oracle Golden Gate. Сколько он стоит - хрен его знает. Нам надо, чтобы работало.

Смотрели в эту сторону https://www.cockroachlabs.com/ но пока это только мысли. На бумаге это решает все проблемы ТС. Но практического опыта с этим хозяйством нет.
iDesperado
Уже с Приветом
Posts: 1349
Joined: 28 Nov 2008 17:50

Re: Синхронизация и репликация ДБ по многим частям света

Post by iDesperado »

tessob wrote: 30 Apr 2018 18:44 К сожалению не знаком с этими продуктами/технологиями. Однако в реальном проекте как-то сцыкотно обычно брать проприетарные технологии с неочевидными сайд-эффектами и минимумом открытых фидбеков от клиентов. Причем, чем крупнее вендор, тем сцыкотнее. Особенно в последние лет 10. 8)
да, обозвать oracle rac "технологией с неочевидными сайд-эффектами и минимумом открытых фидбеков от клиентов", учитывая что технология добрую четверть все рынка рдбмс занимает (всего оракл это 50% рынка), это сильно.
реально топикастеру надо смотреть мсскл где мультимастер репликация из коробки и во всех редакциях + много у кого нормально работает.
оракл конечно круто, но смысла тратить много больше на явно не космические задачи явно нет. EE редакция со всякими RAC, golden gate чудовищно дороги, в стандарт редакции репликация кастрированная хрень. я когда исследовал вопрос, нашел http://www.dbvisit.com/ которые предлагают репликацию под оракл стандарт едишен. вроде они и под другие субд предлагают.
User avatar
Mark
Уже с Приветом
Posts: 1982
Joined: 10 Oct 2000 09:01
Location: New England

Re: Синхронизация и репликация ДБ по многим частям света

Post by Mark »

Lazy444 wrote:
tessob wrote: 30 Apr 2018 18:44
Lazy444 wrote: 30 Apr 2018 17:28Решений для повышения отказоустойчивости базы данных много. Как пример на Оракле это Real Application Cluster (RAC) c Transparent Application Failover(TAF), or Oracle Physical Standby c Dataguard. Что использовать, зависит от требований к отказоустойчивости: несколько минут или несколько секунд.
К сожалению не знаком с этими продуктами/технологиями. Однако в реальном проекте как-то сцыкотно обычно брать проприетарные технологии с неочевидными сайд-эффектами и минимумом открытых фидбеков от клиентов. Причем, чем крупнее вендор, тем сцыкотнее. Особенно в последние лет 10. 8)
Бояцца не надо :D
С моей точки зрения надо "брать" проверенные технологии с техподдержкой. А если сами "не шмогли", то заплатить консультатнту или просто посмотреть доку.

А если серьезно : можно сразу не брать, можно просто почитать. Качнуть пробную версию. ИМХО если нет опыта с Оракл, то Oracle RAC поставить может не получится. Сразу надо сказать : Oracle RAC - Это очень дoрого. Если не надо отказоусточивости в секунды, то можно обойтись Oracle Standard Edition with Physical Standby and Dataguard. Получится гораздо бюджетнее.
Тут несколько наоборот :) в Standard Edition (SE)- RAC is free. А Dataguard в SE нету.
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Синхронизация и репликация ДБ по многим частям света

Post by Boriskin »

iDesperado wrote: 30 Apr 2018 22:20 реально топикастеру надо смотреть мсскл где мультимастер репликация из коробки и во всех редакциях + много у кого нормально работает.
А МССКЛ вообще живет на линуксах?
Тупизна как Энтропия. Неумолимо растет.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Синхронизация и репликация ДБ по многим частям света

Post by Flash-04 »

2017 - да!
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Синхронизация и репликация ДБ по многим частям света

Post by Boriskin »

А чего так воодушевленно?
Тупизна как Энтропия. Неумолимо растет.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Синхронизация и репликация ДБ по многим частям света

Post by Flash-04 »

Ну раз тебе нужно...
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Синхронизация и репликация ДБ по многим частям света

Post by valchkou »

Boriskin wrote: 24 Apr 2018 22:45 Поглядываю на Кассандру, коя целиком и полностью поддерживается, по описанию выглядит как возможный кандидат, но есть сомнения на тему скорости чтения из базы - насколько быстро оно читает...
пишет, читает, реплицирует быстро,
если база справляется с нагрузкой то репликация проходит в доли секунды между.
проверяли на амазоне ист-вест-ирландия.
так же кассандра имеет настраиваемую consystency включая разные датацентры

опенсурсная кассандра вполне стабильна и работает на разных клаудах и даже на гибридных инфраструктурах типа половина на амазоне другая на гугле а третья на локальном компе :D
проблема с кассандрой это девелоперы которые должны понимать что они делают, в отличие от традиционных баз
User avatar
major Major Major Major
Уже с Приветом
Posts: 1321
Joined: 10 Jan 2000 10:01
Location: Хьюстон

Re: Синхронизация и репликация ДБ по многим частям света

Post by major Major Major Major »

Boriskin wrote: 24 Apr 2018 17:19 Встала след. задача - сделать DB solution с примерно следующими характеристиками
На Монго это все делается с пол пинка. Я в свое время настроил с нуля replica set за пару часов не имея никакого понятия как оно работает заранее. При этом у меня пара нодов крутилась в офисе а третья машина была у девелопера в России (для быстроты отладки), уходя в оффлайн постоянно. Был поражен лекгостью с какой все это заработало
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Синхронизация и репликация ДБ по многим частям света

Post by valchkou »

major Major Major Major wrote: 02 May 2018 23:03
Boriskin wrote: 24 Apr 2018 17:19 Встала след. задача - сделать DB solution с примерно следующими характеристиками
На Монго это все делается с пол пинка. Я в свое время настроил с нуля replica set за пару часов не имея никакого понятия как оно работает заранее. При этом у меня пара нодов крутилась в офисе а третья машина была у девелопера в России (для быстроты отладки), уходя в оффлайн постоянно. Был поражен лекгостью с какой все это заработало
монго это хорошая опция, проста не только в установке но и для програмистов
вопрос в объемах данных и high availability
если когда вдруг потребуется шардинг то вот где и начинается засада
User avatar
major Major Major Major
Уже с Приветом
Posts: 1321
Joined: 10 Jan 2000 10:01
Location: Хьюстон

Re: Синхронизация и репликация ДБ по многим частям света

Post by major Major Major Major »

valchkou wrote: 03 May 2018 01:10
major Major Major Major wrote: 02 May 2018 23:03
Boriskin wrote: 24 Apr 2018 17:19 Встала след. задача - сделать DB solution с примерно следующими характеристиками
На Монго это все делается с пол пинка. Я в свое время настроил с нуля replica set за пару часов не имея никакого понятия как оно работает заранее. При этом у меня пара нодов крутилась в офисе а третья машина была у девелопера в России (для быстроты отладки), уходя в оффлайн постоянно. Был поражен лекгостью с какой все это заработало
монго это хорошая опция, проста не только в установке но и для програмистов
вопрос в объемах данных и high availability
если когда вдруг потребуется шардинг то вот где и начинается засада
Да, у них отличный драйвер для .net с поддержкой линка. Работал и из r studio без проблем. Шардинг это уже сложнее, там надо думать и лучше на этапе дизайна базы. Я когда налаживал наверное раза три все убивал нафиг и начинал с нуля, думаю пару тройку дней потратил. Но топикстартеру шардинг вряд ли понадобится. Я рекомендую поставить и поиграться. Монговские процессы можно поднять на одной машине, то есть для первоначального устройства реплики сета запустить три штуки локально, никаких дополнительных серверов не потребуется, а потом присоединять внешние по мере надобности.

Return to “Вопросы и новости IT”