Apache.RU - Webboard
Вернуться
Распределенные базы и MySQL (Vita) 30/06 - 18:53:17
Re: Распределенные базы и MySQL (Dinky) 30/06 - 23:45:10
Re: поправочка (Dinky) 04/07 - 07:40:25
Re: re: поправочка (Vita) 04/07 - 15:05:09
Re: re: поправочка (Dinky) 05/07 - 02:39:43
> Original message text:
> From:
> Vita - 30/06 - 18:53:17
> Subject:Распределенные базы и MySQL
> -----------------
> Так вот задача: (или такая вот незадача...:)
> Есть некая определенная структура данных (таблицы, поля, перв.ключи, форматы). Есть отдельные самостоятельные хранилища самих данных, полностью удовлетворяющих общей структуре (разумеется, с уникальным префиксом для перв.ключей или выделенным диапазоном для создания новых перв.ключей), но содержащие только определенную часть этих данных. Причем любые конкретные данные (целые таблицы, отдельные строки, даже отдельные столбцы, с перв.ключом, конечно) могут где-то быть, где-то и не быть, где-то дублироваться, где-то нет. Новые и/или измененные данные из любого хранилища должны по определенным условиям получить зону своего распространения и распростаниться при появлении связи или ручной выгрузке. Центральной базы быть не должно, хотя, возможно, понадобится центральное хранилище, где будут абсолютно все данные, для восстановления данных и/или упрощения схемы взаимосвязи отдельных хранилищ. Удаление неких данных из одного хранилища в зависимости от определенных условий и прав должно повлечь или удаление этих данных из всех остальных хранилищ, или же только исключить себя из зоны распространия этих данных и уведомить об этом остальные хранилища. Возможные конфликты одновременного изменения одних и тех же данных в разных хранилищах вполне решаемы грамотной продумкой прав или же применением временной метки или установкой приоритета.
> Транзакции могут быть только локальные в каждом отдельном хранилище. Никаких распределенных транзакций и прочих там блокировок удаленных баз использоваться не должно в связи с возможной нестабильностью прямой (инет) связи или вообще при остсутствии оной (ручная выгрузка).
> Вобщем, синхронизация соответствующих данных должна происходить не способом ведения лога запросов с последующим выполнением этих запросов в другом хранилище, а на уровне самих данных. Т.е. что-то изменилось или появилось, значит именно это изменение и надо выгружать. Объясню, почему: в каждом хранилище может происходить большое количество запросов с изменением одних и тех же данных, а синхронизировать данные с другими хранилищами надо только по последнему состоянию этих данных, а не выполнять повторно все эти же запросы, чтобы получить в результате конечные данные. А самое интересное, что эти запросы, похоже, и не удасться повторить на других хранилищах, где в структуре используется иная часть общей структуры данных.
>
> Уффф...вот.... :)
>
From:
Dinky - 04/07 - 07:40:25
Subject:поправочка
-----------------
> Т.е. что-то изменилось или появилось, значит именно это
> изменение и надо выгружать.
ok, а если удалилось? КАК отследить такое изменение, если не вести лог изменений и не исполнять его на другом сервере?
Не, без логов разве что снапшотами обмениваться :))
> самое интересное, что эти запросы, похоже, и не удасться >повторить на других хранилищах, где в структуре используется >иная часть общей структуры данных.
тогда пишите свой собстенный протокол изменений, который бы учитывал все ваши "особенности" :-> но, имхо, не с того конца за задачу взялись...
--
Dmitry
[Это сообщение - спам!]
Последние сообщения из форума
15857
|
|