Главная страница
    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.45 MB
Время: 0.038 c
1-1122930722
Asteroid
2005-08-02 01:12
2005.08.21
Крыша едет с динмаическими массивами...


4-1119339646
ANB
2005-06-21 11:40
2005.08.21
Что передать в качестве окна для SetForegroundWindow ?


14-1122698885
MS-REM
2005-07-30 08:48
2005.08.21
Помогите создать Алгоритм


9-1114751547
Crave
2005-04-29 09:12
2005.08.21
Неисчезающее меню


1-1122963963
АМБ
2005-08-02 10:26
2005.08.21
Изменение размера формы при выполнении программы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский