|
0 / 0 / 0
Регистрация: 19.10.2005
Сообщений: 603
|
|
Написание распределенной базы13.09.2008, 13:41. Показов 20174. Ответов 13
Метки нет (Все метки)
Эх... есть неплохой опыт в построении систем электронного документооборота, но все они были не распределенными
Как правильно построить систему, которая бы работала на множестве серверов? Наверняка вы уже решали такие вопросы. Какие могут возникнуть проблемы и какие решения вы предлагаете? На вскидку есть две проблемы: 1. Конфликты репликации 2. Приход почты пользователю до того момента, как изменения отреплицируются на нужный сервер
0
|
|
| 13.09.2008, 13:41 | |
|
Ответы с готовыми решениями:
13
Конфигурирование распределенной базы Расположение частей распределённой базы данных Написание базы и интерфейса к ней |
|
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
|
|
| 13.09.2008, 22:57 | |
|
чтото рядом обсуждали
0
|
|
|
0 / 0 / 0
Регистрация: 19.10.2005
Сообщений: 603
|
|
| 14.09.2008, 13:37 | |
|
Да, но в той теме разбирались как реплицировать документы на различные сервера... Здесь вопросы - как избежать проблем, связанных с репликацией - конфликты репликации, например.
Предлагаю вопрос поставить так: как вы боретесь с конфликтами репликации (с причинами их возникновения)?
0
|
|
|
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
|
|
| 14.09.2008, 15:42 | |
|
в той теме предлогалось обмениваться идеями относительно настройки схемы репликации
про конфликты, есть список рекомендаций, одни из основных пунктов: - не создавать ситуаций в которых редактировать документ может несколько человек, либо уменьшить это кол-во до минимума, этого можно достичь с помощью правильного доступа к документу и базе (authors/readers-fields, ACL); - устанавливать на форме свойство управления конфликтами в "сливать" (Conflict handling = merge), тогда, если были изменены разные данные в документе, то и конфликт создан не будет, и изменения не будут потеряны, этого можно достичь устанавливая доступ к различным частям документа (Controlled Access Sections); а вообще, то поняв причины возникновения конфликтов, будет намного проще найти способы борьбы с ними! но многие программисты пытаются найти решение не понимая почему возникают конфликты... рекомендую почитать Inside Notes, ch. 9. Replication
0
|
|
|
0 / 0 / 0
Регистрация: 07.09.2008
Сообщений: 37
|
||
| 14.09.2008, 16:11 | ||
А также посмторите про Lock документов.
0
|
||
|
0 / 0 / 0
Регистрация: 09.07.2005
Сообщений: 209
|
|
| 14.09.2008, 16:24 | |
|
давайте подумаем, вот такая к примеру задача
1)документ региструется в канцелярии и отправляется к руководству, документ не виден никому кроме канцелярии и руководства 2)руководство вставить свою визу отправляет по испольнителям им обычно является заместители или начальники отделов, документ виден уже тем заместителяим и начальникам отделов 3)потом нас начальники отделов дальше к своим подчиненным конечным испольнителям отправляет. вот тут могут возникнуть конфликты. так ка все начальники будут редактиролвать права доступак документу. возможно одновременно. как это реализовать без конфликтов. блокировать не всегда удобно. создовать копии основного документа для каждого начальника тоже некрасиво. короче подумаем
0
|
|
|
0 / 0 / 0
Регистрация: 19.10.2005
Сообщений: 603
|
|
| 14.09.2008, 16:33 | |
|
alb
Угу, об этом и говорю. У меня идея такая - позволять редактировать документ только на одном сервере. Если нужно на другом - переключать, но там потребуется время на переключение (пока репликация со старого сервера на новый не пройдет). Реализовать сложно, но исключит конфликты репликации. Но нужно ли так гимороиться?
0
|
|
|
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
|
||
| 14.09.2008, 16:40 | ||
если красиво реализовать, то все красиво :( например, есть такой продукт IBM Lotus Workflow, в нем для одновременного выполнения задачи используется именно такой принцип - для каждого исполнителя свой документ, основная проблема при этом - как правильно документ размножить, а потом слить?!..
0
|
||
|
0 / 0 / 0
Регистрация: 19.10.2005
Сообщений: 603
|
|
| 14.09.2008, 17:05 | |
|
Akupaka
Ну да, больше там проблем нет) Только эта, зато какая =) Моё предложение. Внимательно читаем и ищем дыры: Есть БД "Блокиратор", которая лежит на одном сервере (X). Есть БД "Приложение", которая лежит на куче серверов (Y1, Y2...). Все сервера Y могу коннектиться к серверу X Каждый документ привязан к какому-то серверу. Каждый документ может быть залочен на привязанном сервере каким-либо пользователем. Всё это знает БД "Блокиратор". Итак, нам нужно отредактировать документ на сервере Y1. Мы посылаем запрос в БД "Блокиратор". Обработка запроса на блокировку документа на сервере Y1 (всё делает БД "Блокиратор") 1. Проверяем, к какому серверу в данный момент привязан документ (doc1 в БД "Блокиратор"). Если не к серверу Y1 - отказ с описанием ошибки 2. Проверяем, не заблокирован документ на сервере Y1 (doc1 в БД "Блокиратор"). Если заблокирован - отказ с описанием ошибки 3. Последняя проверка. Смысл её в том, чтобы узнать, прошла ли репликации с момента перевода заявки с сервера Y2 на Y1. Открываем документ на сервере Y1 и смотрим содержимое поля Main_Server. Если Main_Server != "Y1", то репликация ещё не прошла - выдаем ошибку Если ошибку не выдали, то блокируем документ и возвращаем true Мы попытались отредактировать документ на сервере Y2 и получили ошибку, что документ привязан к серверу Y1. Нам было предложено открыть документ на сервере Y1, но нам проще изменить сервер документа (т.е. переключить документ на сервер Y2). Посылаем запрос в БД "Блокиратор" Обработка запроса на изменение сервера документа с Y1 на Y2 (всё делает БД "Блокиратор") 1. Пытаемся заблокировать документ на сервере Y1. Если получаем ошибку, то выдаем её и выходим 2. Изменяем поле "Main_Server" в документе на сервере Y1: FIELD Main_Server := "Y2" 3. Изменяем в БД "Блокиратор" на сервер Y2 (документ doc1) Повторяю, смотрим, ищим дыры, комментируем...
0
|
|
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
| 14.09.2008, 17:28 | |
|
Зачем это, если есть стандартный document locking?
0
|
|
|
0 / 0 / 0
Регистрация: 19.10.2005
Сообщений: 603
|
|
| 14.09.2008, 17:30 | |
|
Medevic
Он же работает только в пределах одного сервера... Если бы стандартный document locking спасал от конфликтов, то и проблемы бо не было... Хотя вопрос нужно ли так всё гимороить всё же стоит
0
|
|
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
||
| 14.09.2008, 17:39 | ||
Он спасает. Хотя чего их так бояться? Ну бывают иногда конфликты. Если правильно делать, то их количество сводится к минимуму.
0
|
||
|
0 / 0 / 0
Регистрация: 07.09.2008
Сообщений: 37
|
|
| 14.09.2008, 17:48 | |
|
fedotxxl
Тогда уже лучше смотреть в сторону CAPI так как фактически визы можно сделать отдельными доками, а метку о визах ставить программно, что какбы детерминированно может привести к конфликтам, которые можно разрулить с помощью Capturing the Domino or Notes Replication Conflict Notification By trapping the replication conflict notification, you can have an extension manager automatically handle replication conflicts. The extension ID code is EM_NSFCONFLICTHANDLER. There is no corresponding API function for thys operation. The header file extmgr.h documents the arguments to the replication conflict handler. The Notes C API Release 4.5 introduced several new functions that can be used by the extension manager to determine how to handle a replication conflict. These functions include: NSFNoteFindMatchingItem Find item in one note that matches the same item in another. NSFNoteFindDivergenceTime Find when two notes were last in synch. NSFItemGetModifiedTime Get the last modified time for an item. NSFItemGetModifiedTimeByBLOCKID Get the last modified time for an item, given the items BLOCKID. Use the extension manager callback routine to handle the replication conflict. In thys handler routine, you can use NSFNoteFindMatchingItems to pair items from one note that match items from another. An item pair may be in conflict if one of the items modified time is later than the notes divergence time. You can then specify the desired value for the item by setting thys item value in the item of one note and deleting thys item from the other. Then, pass CONFLICT_ACTION_MERGE back so that the two matching notes are merged with your specified resolution to the conflict. If you want Domino or Notes to handle the replication conflict, pass back ERR_EM_CONTINUE. For example, if an error occurs in your replication conflict handler you may want to abort handling the conflict yourself and pass ERR_EM_CONTINUE back to Domino or Notes. The replication conflict handler needs to be installed on each Domino or Notes installation that can be involved in the replication and subsequent conflict resolution. Domino or Notes calls the extension manager replication conflict handler (if any) on the installation that lost the replication conflict. The sample program misc\extconf demonstrates an extension manager that handles a replication conflict.
0
|
|
|
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
|
||
| 15.09.2008, 15:26 | ||
0
|
||
| 15.09.2008, 15:26 | |
|
Помогаю со студенческими работами здесь
14
Написание базы, клиента и программы Написание базы с нуля для 1с 8.3 Написание простой базы данных Сжатие базы данных по варианту 6.4. из темы Написание статей
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|