|
|
|
сеть (граф) БД и синхронизация
|
|||
|---|---|---|---|
|
#18+
по ключам "граф репликация" и "граф синхронизация" ничего тут поиском навскидку не нашёл, поэтому вопрос к ALL. постановка (хотелки, размыто). есть некоторое количество однотипных (территориальных) БД, собирающих первичные данные. часть из них , допустим региональные, как собирают данные сами, так и принимают данные от чисто "первичных" узлов, часть из них, допустим верхне-региональные, собирают данные как с узлов нижнего уровня, так и узлов срденего. как это всё реализовывать? ну и есть какое-то количество подписчиков верхнего уровня, одинаковые по сумме подписок, но разные по собственным задачам. допустим [мысль о реализации], данное всегда ложится в 2 таблицы -- собственно данное + событие данного. допустим, событие данного потом накатывается на подписчика. (батчиками. и только тогда, когда подключимся, т.е. не "почти онлайн", а эпизодически). т.е. реально имеем событие некоего pkey, которое накатывается в такой же pkey на всех подписчиках [тогда, когда и если подписчики сумеют принять это событие]. Единственное что надо обеспечить -- непересекаемость областей pkey разных публикаторов. И эпизодическую видимость вдоль подписки. до тех пор пока граф подписчиков не петляет (нет двух путей от первичного публикатора --- проблем в накатках событий особо не видно (есть теоретическая проблем порядка сообщений по коммитам, а не по стартам, но в каком-то приближении можно считать её не очень острой) теперь допустим, какого-то публикатора захотели подписать 2 узла 2-го уровня, на которые (оба-2) подписан узел 3-го. а то и сам 3-й подписать на тот же первичный -- ибо он чаще виден 3-му, чем промежуточные. [узел спорного или совместного подчинения]. -- возникают коллизии как по событиям pkey-ев первичного узла, так и по порядкам их появления в разных очередях (собственно с первичного,или опосредованно -- с промежуточного). первая попавшаяся идея -- проверять значение, и при совпадении полной записи коллизию игнорировать -- не совсем катит. более поздно может подключиться тот узел, который имеет более старую копию первичного данного -- при этом это надо как-то обоснованно опустить, не прерывая накатки прочих событий той же очереди. [но ошибки иного вида должны останавливать процесс -- как непредусмотренные] т.ч. ищется формула"способ передачи таких (модифицируемых) сообщений о состоянии объекта p_key по несинхронизированному графу узлов с петлями, и задержками, с распределенными источниками, который бы гарантировал как разрешение коллизий [с ассинхронной доставкой версий], так и распространение [только] последней версии сообщений о состоянии объектов[а] p_key" ...отличающийся тем, что .... с учетом того, что первичное событие заданного p-key всегда генеририруется (должно генерироваться) одним и тем же узлом (а вторичные события -- вдоль пути синхронизации -- д.б. вызваны всегда первичными) --кто-то в курсе, где собаке порыться ? какие абстракции тут модны (кроме "публикатор/подписчик/сообщение/очередь") ? ну и вообще -- идея находюся ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:15 |
|
||
|
сеть (граф) БД и синхронизация
|
|||
|---|---|---|---|
|
#18+
эттатеперь допустим, какого-то публикатора захотели подписать 2 узла 2-го уровня, на которые (оба-2) подписан узел 3-го. а то и сам 3-й подписать на тот же первичный -- ибо он чаще виден 3-му, чем промежуточные. [узел спорного или совместного подчинения]. -- возникают коллизии как по событиям pkey-ев первичного узла, так и по порядкам их появления в разных очередях (собственно с первичного,или опосредованно -- с промежуточного). Ну и что? Надо сделать механизм их разрешения. Каков он будет - зависит, очевидно, от задачи (например, можно расставить узлам приоритеты, и в случае коллизии всегда отбрасывать версию из источника, имеющего меньший приоритет. Или еще 100500 вариантов). Вопрос-то в чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:25 |
|
||
|
сеть (граф) БД и синхронизация
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинэттатеперь допустим, какого-то публикатора захотели подписать 2 узла 2-го уровня, на которые (оба-2) подписан узел 3-го. а то и сам 3-й подписать на тот же первичный -- ибо он чаще виден 3-му, чем промежуточные. [узел спорного или совместного подчинения]. -- возникают коллизии как по событиям pkey-ев первичного узла, так и по порядкам их появления в разных очередях (собственно с первичного,или опосредованно -- с промежуточного). Ну и что? Надо сделать механизм их разрешения. Каков он будет - зависит, очевидно, от задачи (например, можно расставить узлам приоритеты, и в случае коллизии всегда отбрасывать версию из источника, имеющего меньший приоритет. Или еще 100500 вариантов). Вопрос-то в чем?вопрос таки в том, "что именно я должен заранее сделать (?)", чтобы не лажать лажовой системой лажовых приоритетов, не имеющих отношения к реальному историческому порядку событий -- а поиметь систему разрешения коллизий событий таки не "отМатроскин", а с учётом этого реального порядка. т.ч. гражданин, не делали, не думали, не задумались сейчас --- идите , куйте, не задерживайтесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:30 |
|
||
|
сеть (граф) БД и синхронизация
|
|||
|---|---|---|---|
|
#18+
эттат.ч. гражданин, не делали, не думали, не задумались сейчас --- идите , куйте, не задерживайтесь Старина, результаты моих "задумываний" таковы, что мне не приходится вылезать на форум с криками "Научите!!!" Я Вам написал "алгоритм зависит от задачи". Если Вы ждете волшебника в голубом вертолете, который догадается что Вы понимаете под "последней версией", "историческим порядком событий" и т.п. - ждите, не буду мешать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:42 |
|
||
|
сеть (граф) БД и синхронизация
|
|||
|---|---|---|---|
|
#18+
эттавопрос таки в том, "что именно я должен заранее сделать (?)" Продумать потоки данных. Обычно сложных графов никто не делает именно из-за проблем с циклами. Делают иерархическую "звезду/снежинку". В редких случаях - полносвязную паутину с исключительно односторонними потоками, но это для экстремалов. Если уж дошло до графа распространения с циклами, то предотвращение зацикливания потока делается не приоритетами, а включением в запись версии или временной отметки. Распространение прекращается когда поток приходит в узел, где эта версия записи уже есть. Но повторю ещё раз, что это создаёт избыточный траффик, поэтому так никто не делает. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:50 |
|
||
|
сеть (граф) БД и синхронизация
|
|||
|---|---|---|---|
|
#18+
кажется, если в само данное мы будем писать ид ноды--фиксатора, и ид события [на этой ноде, этой строки] данного -- и распространять этот маркер вдоль по графу (когда его, маркера т.е., нет -- мы первичные -- заполняем маркер в момент записи события, когда есть в пришедшем сообщении (в поле "тело события" -- передаём в данное как есть) -- то проблема решается. т.е. маркер первичного события кладем в само данное. Т.е. так обслуживается всё, кроме событий "DELETE". у "DELETE" нет "самого данного", но есть его событие. Передаться исключительно через данное не получается. тут пока не понял, нужно ли что-то. (хотя есть старый хак с двойной оберткой -- подписываться на "события" а не на данные -- тогда у события DELETE появляется сквозное распространяемое тело). ps кошара, иди, куй в "работе" вон продолжай языком полоскать pps пока писал - сибиряков написал про маркеры. и это радует. -- "не лисапет" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:55 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38930395&tid=1540582]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 154ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...