Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

Репликация по email или на дискетах   Найти похожие ветки 

 
atruhin ©   (2005-07-10 20:32) [0]

Есть филиалы, где происходит сбор данных, есть управление куда данные должны поступать. Т.к. в некоторых филиалах нет постоянного доступа к интернету, необходима возможность проведения репликации с помощью сменных носителей.
Вырисовывается примерно такой алгоритм:
1. Данные вносятся в БД, и одновременно в ЛОГ (Может быть как отдельная таблица, так и внешний файл).
2. Данные переносятся на сервер, где производится репликация, после чего сервер записывает на носитель, код подтверждения репликации записей с номерами от ... до ...
3. Данный код загружается в клиентскую часть после чего данные удаляются данные о реплицированных записях.
Тут и возникают вопросы:
1. Нормальный это способ, или есть что то более изящное.
2. Очень вероятна ситуация что данные на сервер реплицировали, а ответ сервера не донесли, тогда при следующей порции данных нужно отсеивать отработанные данные.
Проект новый на стадии обдумывания, поэтому можно учесть любые советы.


 
Slym ©   (2005-07-11 05:17) [1]

Поле ModifyDate - при операции изменении записи выставляешь
DataSet["ModifyDate"]:=Now;

При обмене делай
SELECT * FROM TABLE WHERE ModifyDate> :ReplDate;

Т.е. выдать все данные младше опред даты. (даты репликации)


 
Slym ©   (2005-07-11 05:34) [2]

Обычно хватает Добавить ModifyDate в "главную" таблицу, а с записями из главной таблицы попавшей под репликацию реплицирвать все подчиненные, а на месте уже разбираться надо оно или не надо


 
Deniz ©   (2005-07-11 06:17) [3]

>в некоторых филиалах нет постоянного доступа к интернету
Нет вообще или все таки иногда есть?
Если иногда бывает, то можно посмотреть в сторону кешированных изменений.


 
Slym ©   (2005-07-11 06:29) [4]

Подтверждение об обновлении можно сделать так:
После вормирования посылки в спец таблицу пишеш дату репликации и контрольную сумму посылки.
В ответ на посылку сервер отправляет дату репликации и контрольную сумму полученной посылки клиент находит эту запись у себя и отмечает как "Репликация ОК".
Псевдокод:
Client:
File:=CreateRepl(Date);
ReplTable.AppendRecord(Date,Hash(File));
Send(File);

Server
File=GetFile;
AnswerFile=Date(File)+Delimeter+Hash(File);
Send(AnswerFile);

Client
AnswerFile=GetFile;
Find=ReplTable.Locate("Date;Hash",[AnswerFile.Date,AnswerFile.Hash]);
if Find then
ReplTable["Finished"]:=true;



Страницы: 1 вся ветка

Текущий архив: 2005.08.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.042 c
14-1122896571
Exchanger
2005-08-01 15:42
2005.08.21
Электроника, мебель, обмен ссылками, работа


1-1122865029
Lexa
2005-08-01 06:57
2005.08.21
Ошибка при работе со строковыми переменными?


14-1122941411
k2
2005-08-02 04:10
2005.08.21
Imagine Cup 2005


3-1121071009
bendela
2005-07-11 12:36
2005.08.21
ado+ms Access редактирование записи


3-1121255279
Валерий
2005-07-13 15:47
2005.08.21
Как правильно запретить редактирование записи