Страница 1 из 2

Подбросьте идею по синхронизации объекта между филиалами...

Добавлено: 17 май 2007, 09:56
Александр
Задача такая:
есть 2 филиала которые
-работают в полностью идентичных по структуре базах
-каждый из филиалов создает некоторые проекты (для простоты рассмотрим один объект)
-каждый из филиалов может передать (репликация Лоции) объект другому филиалу

На первом этапе когда объект только создан - проблем нет он существует в одном числе в одном филиале и все нормально

На втором этапе объект сбрасывается в другой филиал - тоже проблем пока нет

А на третьем этапе идет параллельная работа с объектом в двух филиалах сразу и в случае если кто то захочет передать объект другому - он просто будет перезаписан поверху соответственно у принимающей стороны теряются все наработки :?

Как поступать в данном случае? Может у кого есть уже отработанный алгоритм?

Пока в голову приходит только однонаправленная репликация, чтобы второй филиал просто смотрел на чужие данные - но это нам в корне не подходит, нужна совместная работа
Второй вариант дублировать атрибуты (и привязывать их к филиалам), т.е. кто-то создал объект мы это знаем и какую то информацию может изменять только создатель, а некоторые общие атрибуты заполняет каждая сторона отдельно - допустим примечание - делаем два атрибута один для Филиала 1 второй для Филиала 2 и тогда перезаписи сверху не произойдет - но получаем двойные атрибуты, тоже не очень интересно

Может есть какие то более красивые решения по совместному использованию объекта в разных филиалах с накоплением информации из каждого из них? :shock:

Добавлено: 17 май 2007, 10:54
Anderyt
Подозрительно звучит пара атрибутов, по одному для каждого филиала.. что-то не то... как будет выглядеть форма атрибутов??

может быть правильнее было бы стремиться к самостоятельной копии объекта? в описание (или в атрибут) которой добавлять признак принадлежности к другому филиалу..

мы с репликацией не работаем, так что опытом поделиться не могу... а вот вопросами - запросто :-)
в репликации нет возможности скопировать объект вместо того, чтобы заменять?..
и по какому принципу репликация находит существующий объект? по ИД-ру? или нет?

Добавлено: 17 май 2007, 11:11
Александр
форма атрибутов для объекта получится следующая
1я закладка - общая информация, 2я инфо от 1 филиала, 3я инфо от второго

самостоятельная копия объекта не подходит, мы работаем с клиентами (объектами) и они могут быть созданы на любой стороне а потом переданы из филиала в филиал - в случае самостоятельных копий мы получим миллион двойников, что недопустимо

Репликация идет просто, Лоция предлагает отобрать объекты по различным признакам и через подборку отправляет их или напрямую или через пакет (внешний файл) в другой филиал. Номера филиалов должны отличаться (чтобы небыло пересечений по id) и объекты при восстановлении во втором филиале просто перезаписываются сверху по id или добавляются новые (объекты со своими id созданные в филиале источнике)

Может завести какой то промежуточный буфер (проект) в каждом филиале и допустим 1й филиал готовит данные (допустим просто помешает все объекты в проект (дерево) для репликации) и передает их второму-тот открывает их в своем таком же буфере и как то анализирует на наличие двойников между этим разделом и своей базой

Под двойниками я понимаю объекты с одинаковыми названиями и данными но с разными id

Добавлено: 17 май 2007, 12:57
Александр
может каким то образом передавать не сам объект туда сюда а только его изменения оформленные в виде отдельного объекта изменений?

Правда здесь как то нужно вмешиваться в репликацию и анализировать есть ли объект на другой стороне или нет, если нет пишем как есть, если есть пишем только изменения

В общем нечто ужасное получается :? :? :?
Короче нужен взгляд со стороны.... :wink: Взгляд в зеркало не помогает :wink:
Нужна свежая мысль :wink: Своих мыслей уже нет :?

Добавлено: 17 май 2007, 14:06
Alexey
Мне сложно что либо посоветовать так как мы тоже пока не используем репликацию... но вот идея а может стоит использовать Лоцию для Веб... как такой поворот событий...

Добавлено: 17 май 2007, 14:20
Anderyt
ничего не могу пока сказать про Веб :-(

а про репликацию..
я не совсем понял...
вроде номера филиалов должны быть разные, чтобы не было пересечений по ИД, и в то же время на основе равенства ИД репликация заменяет объекты...
бр...
это как?
если есть два филиала с номерами 1 и 2, и есть объекты в каждом - двойники друг друга, то какие у них должны быть ИД-ры? вот такие:
100000000000516
200000000000516
так????
и что, сейчас как работает репликация при передаче из 2-го в 1-й?
смотрит в пакете - о! объект с ИД 200000000000516... а у нас в нашем филиале уже есть объект с ИД 100000000000516... а, дак это одно и то же! ясно, значит делаем так, чтобы наш объект 100000000000516 СТАЛ ТАКИМ ЖЕ, как их объект 200000000000516...
так???
а эта...
если бы в репликации был бы такой режим, чтобы одинаковые свойства переписывались (или наоборот, НЕ переписывались), а те, которые новые - просто ДОБАВЛЯЛИСЬ?
и кстати, на самом деле, неплохая идея с тремя вкладками...
я че то не сообразил... :-)
если бы был такой режим - тогда бы что??

Добавлено: 17 май 2007, 14:25
Александр
2 Alexey
Действительно мы рассматривали все варианты и web и удаленный доступ без Web и репликацию

- в случае с web не поддерживается MSSQL - отпадает с одной стороны, с другой это писать новый интерфейс, с третьей нам не советовали
>Хотя этот вариант лично мне очень нравится

- в случае удаленного доступа - все вроде ок но это выход наружу с одной стороны с другой, наше железо должно 100% стабильно и быстро работать в любое время суток (есть проблемы) - с другой стороны, шеф не одобрил с третьей стороны, и все таки общая база данных (что не хотелось бы) с четвертой стороны
>Здесь в плане работы с данными вроде никаких проблем

-репликация - полная независимость филиалов, свои базы и там и тут, головная боль с синхронизацией проектов
>По совокупности остановились именно на этом варианте - главное - оперативность работы на местах

Хотя вобщем все варианты-палки о двух концах :? :?

Добавлено: 17 май 2007, 14:36
Александр
2 Anderyt
может я конечно не полностью все понимаю(поправьте если что), но на практике первые эксперименты показали именно перезапись по id

Номера филиалов учитываются в пяти последних знаках с привязкой к типу объекта/атрибута...
и я не совсем подробно объяснил
если объект создан во втором филиале и имеет id 200000000000516 то именно с эти id он восстановится в первом филиале и при последующих передачах этого объекта туда сюда он просто перезаписывается/обновляется по существующему id. Здесь то и кроется проблема - объект один и там и там (с одним id) люди работают с ним отдельно, но при репликации данные объекта приемника перезапишутся данными объекта источника.

Вот как разрешить данную проблему?

Добавлено: 17 май 2007, 14:40
Alexey
Опять решил вмешаться в дисскусию... А если не делать 2 вкладки, а сделать объект допустим первого уровня с общей для всех информацией и вложение в данном случае получается объекты 2 уровня (1 филиал, 2 филиал), т.е. таким образом мы имеем:
1) филиалы могут видеть, что твориться и там и там с этим объектом
2) ничего не перетерается
3) если в итоге вам нужно получить один объект (я имею ввиду что то вроде версионности), то делаем действия в котором объект первого уровня наследует все значения версии и удаляет остальные данные. Далее передаем все в другой филиал... вот все со всем и поработали.

Как вам такая идея Александр, может я чего то не так понимаю, но думаю моя идея имеет право на жизнь...

Добавлено: 17 май 2007, 14:43
Александр
еше есть решение от ИВС называется S4S и основано на том что все изменения по объекту в конкретном филиале накапливаются на стороне (внешние файлы связанные с объектом/проектом) и после репликации на основе анализа внешних данных о изменениях объект/проект синхронизируется с текущим.- как то так я сам не совсем понял :(

Но это целая система, и один я ее повторить не в силах - займет очень много времени-поэтому хочется чего то простого и оригинального.

ps. к сожалению, не стоит забывать что ни один из предлагаемых способов обмена данными между филиалами не поддерживает передачу и синхронизацию файлов электронного архива, а S4S поддерживает - это не реклама, просто печальный факт для нас

Добавлено: 17 май 2007, 14:49
Александр
2 Alexey
идея кстати вполне нормальная но по моему избыточная, а может и нет надо подумать... но должно быть как то еще проще...

ухожу в раздумья :roll: :roll: :roll: :roll:

Добавлено: 17 май 2007, 14:51
Anderyt
бр...
а Теххелп что говорит по этому поводу?
спрашивали у них?
может уже есть такая возможность?
а если нет - то было бы неплохо узнать у них, как же на самом деле работает репликация.. чтобы уже потом думать, как ее использовать и какие нужно действия делать, чтобы передавать нужную инфу...
и кстати, по поводу
ps. к сожалению, не стоит забывать что ни один из предлагаемых способов обмена данными между филиалами не поддерживает передачу и синхронизацию файлов электронного архива, а S4S поддерживает - это не реклама, просто печальный факт для нас
а здесь случайно не поможет экспорт документов архива с одновременным формированием файла для импорта?

Добавлено: 17 май 2007, 14:56
Александр
по поводу архива, еще дело не дошло, просто нам озвучили что в этом месте ожидаются проблемы - оставим это пока.

А теххелп, что говорит-да я не спрашивал, все есть в хелпе набираем объекты - передаем - восстанавливаем. А если нужны дополнительные извращения то это уже наши проблемы как я понял :? :?

Лоция нам гарантирует бесконфликтную передачу/восстановление данных, а это уже не мало.

Добавлено: 17 май 2007, 15:06
Anderyt
почитал руководство..
может быть, у меня ОЧЕНЬ старая версия руководства, но про прием данных там только вот это:

13.3 Прием данных
Выбрав тип репликации «Прием данных» (Рисунок 165) и нажав кнопку «Далее >», пользователю следует выбрать загружаемый файл данных. После выбора файла и нажатия кнопки «Далее >» открывается Окно чтения данных из файла. Имеется возможность просмотреть список реплицируемых объектов, щелкнув левой кнопкой мыши по одноименной кнопке. После этого, нажав кнопку «Далее >» производится запись данных в БД и открывается Окно протокола этой записи. На этом процедура заканчивается. Если требуется снова принять данные или произвести другое действие в рамках модуля репликации, то следует нажать кнопку «< Назад». Если репликация закончена, нажмите кнопку «Отмена».

маловато для представления полной картины...
может быть все таки запросить у разработчиков ответа на вопрос, как именно происходит "производится запись данных в БД"???

Добавлено: 17 май 2007, 15:13
Alexey
Да скорее всего моя идея избыточна при условии что количество филиалов - константа, но если число филиалов увеличиться то... я думаю здесь все будет понятно и избыточностью не пахнет...
Но мне если честно очень хочется узнать чем это все закончиться, я использую только теорию, а вот Александр пусть использует на практике