Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

Репликация по 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.037 c
14-1122395767
Kerk
2005-07-26 20:36
2005.08.21
Гениальные коменты в коде....


14-1122619281
vidiv
2005-07-29 10:41
2005.08.21
Для чего можно использовать этот код?


1-1123058496
Aleksandr.
2005-08-03 12:41
2005.08.21
Как перевести соотношение точек объекта к точкам принтера?


4-1120145501
RusLAN_
2005-06-30 19:31
2005.08.21
Запретить модему принимать звонки


1-1122640151
mazepa
2005-07-29 16:29
2005.08.21
io error 53





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский