Apache.RU - Webboard
Вернуться
Распределенные базы и MySQL (Vita) 27/06 - 22:14:07
Re: Распределенные базы и MySQL (Dinky) 28/06 - 21:06:12
Re: Распределенные базы и MySQL (Vita) 28/06 - 22:25:03
Re: Распределенные базы и MySQL (Dinky) 28/06 - 22:38:54
Re: Распределенные базы и MySQL (Vita) 30/06 - 18:47:52
> Original message text:
> From:
> Vita - 27/06 - 22:14:07
> Subject:Распределенные базы и MySQL
> -----------------
> Вопрос к знатокам:.... :)
> Есть ли в MySQL встроенная поддержка распределеных баз данных или все-таки нет?
> Встал вопрос о выборе СУБД для структуры из многих отдельных и достаточно удаленных :) баз с постоянной (VPN) и без постоянной связи, но требующих где частичной, а где полной синхронизации.
> Или, если остановимся в выборе на MySQL, придется синхронизацию делать ручками, что не есть good...
>
From:
Vita - 30/06 - 18:47:52
Subject:Распределенные базы и MySQL
-----------------
Так вот задача: (или такая вот незадача...:)
Есть некая определенная структура данных (таблицы, поля, перв.ключи, форматы). Есть отдельные самостоятельные хранилища самих данных, полностью удовлетворяющих общей структуре (разумеется, с уникальным префиксом для перв.ключей или выделенным диапазоном для создания новых перв.ключей), но содержащие только определенную часть этих данных. Причем любые конкретные данные (целые таблицы, отдельные строки, даже отдельные столбцы, с перв.ключом, конечно) могут где-то быть, где-то и не быть, где-то дублироваться, где-то нет. Новые и/или измененные данные из любого хранилища должны по определенным условиям получить зону своего распространения и распростаниться при появлении связи или ручной выгрузке. Центральной базы быть не должно, хотя, возможно, понадобится центральное хранилище, где будут абсолютно все данные, для восстановления данных и/или упрощения схемы взаимосвязи отдельных хранилищ. Удаление неких данных из одного хранилища в зависимости от определенных условий и прав должно повлечь или удаление этих данных из всех остальных хранилищ, или же только исключить себя из зоны распространия этих данных и уведомить об этом остальные хранилища. Возможные конфликты одновременного изменения одних и тех же данных в разных хранилищах вполне решаемы грамотной продумкой прав или же применением временной метки или установкой приоритета.
Транзакции могут быть только локальные в каждом отдельном хранилище. Никаких распределенных транзакций и прочих там блокировок удаленных баз использоваться не должно в связи с возможной нестабильностью прямой (инет) связи или вообще при остсутствии оной (ручная выгрузка).
Вобщем, синхронизация соответствующих данных должна происходить не способом ведения лога запросов с последующим выполнением этих запросов в другом хранилище, а на уровне самих данных. Т.е. что-то изменилось или появилось, значит именно это изменение и надо выгружать. Объясню, почему: в каждом хранилище может происходить большое количество запросов с изменением одних и тех же данных, а синхронизировать данные с другими хранилищами надо только по последнему состоянию этих данных, а не выполнять повторно все эти же запросы, чтобы получить в результате конечные данные. А самое интересное, что эти запросы, похоже, и не удасться повторить на других хранилищах, где в структуре используется иная часть общей структуры данных.
Уффф...вот...
p.s. Если кто что поймет, что я тут написал, то я буду несказанно рад...
[Это сообщение - спам!]
Последние сообщения из форума
15782
|
|