Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
14-1122890968
msguns
2005-08-01 14:09
2005.08.21
Горе-то какое..


8-1112790706
Asic
2005-04-06 16:31
2005.08.21
Видео и Аудио плеер с помощью DSPack a


14-1122640053
NeMaster
2005-07-29 16:27
2005.08.21
как двигать мышь


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


1-1123093949
deamon_t
2005-08-03 22:32
2005.08.21
Как убрать фокус ввода с MessageBox




   Наверх