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

Вниз

Репликация FB + Delphi.... Варианты исполнения   Найти похожие ветки 

 
S@shka ©   (2005-10-12 10:52) [0]

Добрый!
Стоит задача реплицирования данных с одной БД в другую, расположенную на удаленном по сети ПК.
Причем, если быть точным реплика идет из нескольких БД в Одну, т.е. с нескольких ПК на СЕРВЕР.
Я подумал, сделать следующее - создаю ssl-туннель между компами и пишу Replicator, который устанавлиется на сервере и по рассмисанию соединяется с БД клиентов и выполняет
"remote"select и "local"insert + (необходимые преобразования если необходимо).
Однако возникает вопрос - логичен ли такой подход???
Почитал ссылки на ibase.ru по репликации там рассмотрено решение установки клиент-сервера реплиции. Т.е. сервак говорит "хочу" - клиент (локально) эти данные готовит и пересылает серверу в виде ZIP (DBF etc), сервер разбирает файл и делает insert. Но это существенно сложнее (по времени исполнения ))).
В моем варианте меня лишь напрягает операция удаленного соединения с БД. Критичен ли при этом возможный разрыв соединения на этапе выполнения удаленного запроса на выборку данных???


 
Курдль ©   (2005-10-12 17:13) [1]


> Однако возникает вопрос - логичен ли такой подход???


Если от сетевых ПК сервер доступен постоянно - репликация сама по себе не логична.


 
Курдль ©   (2005-10-12 17:36) [2]


> "remote"select и "local"insert + (необходимые преобразования
> если необходимо).


А синхронизация сервер -> клиент не понадобится?
Т.е. никаких возможных конфликтов Вы не предполагаете?
Например, если 2 клиента внесут у себя абсолютно одинаковых юр.лица?

Мне кажется, что репликация оптимальна специализированными средствами, предоставляемыми самой СУБД. Наверняка таковые имеются и у FB.


 
Карелин Артем ©   (2005-10-12 19:53) [3]


> Курдль ©   (12.10.05 17:36) [2]

FB не MS SQL и репликации в него не встроено.

Насчет разрыва: если использовать IBX для доступа к данным, то разрыв приведет к краху программы.
Если использовать другие компоненты и правильно развести транзакции, то вероятность порчи данных от дисконнекта минимальна.
P.S. Я для репликации писал клиент-серверную систему, работающую по TCP/IP.


 
Курдль ©   (2005-10-13 10:49) [4]

> Карелин Артем ©   (12.10.05 19:53) [3]
> FB не MS SQL и репликации в него не встроено.

Ну, конечно! "MS SQL" - это звучит гордо :)
Если даже нет фирменных средств репликации, то, возможно, существует много профессиональных наработок.

> P.S. Я для репликации писал клиент-серверную систему, работающую
> по TCP/IP.
А с какой целью? Разве стандартные протоколы обмена с СУБД (ODBC, ADO и т.п.) не справляются (если уж не подошел прямой доступ через IBX)?


 
S@shka ©   (2005-11-16 10:55) [5]

To >> Карелин Артем

> Насчет разрыва: если использовать IBX для доступа к данным,
>  то разрыв приведет к краху программы.

- не проблема - постави try ... except
Больше инетересует БД. - дисконнект - приведет к повисшей транзакции?

>>> Курдль

> Т.е. никаких возможных конфликтов Вы не предполагаете?

Исключено - все отдельные БД уникальны - происходит попросту говоря "объединение в одну большую БД данных с разных объектов"
---------------------------------------------------
Все таки хм ....  не пойму  грамотен ли подход "прямого IBX коннекта к удаленной БД - забор данных и вставка локально?".
Операции:
Для удаленной БД - select, delete
Локальной            - insert update.

Я сделал клиент-сервер но почему то это меня тяготит ))))


 
Карелин Артем ©   (2005-11-16 11:04) [6]


> Курдль ©   (13.10.05 10:49) [4]


> А с какой целью? Разве стандартные протоколы обмена с СУБД
> (ODBC, ADO и т.п.) не справляются (если уж не подошел прямой
> доступ через IBX)?

По модему за 200 км...

S@shka ©   (16.11.05 10:55) [5]
>- не проблема - постави try ... except

Вообще-то при обрыве происходит что-то жуткое, с чем try..except в Delphi 5 не справляется.


 
Sergey13 ©   (2005-11-16 11:05) [7]

2[1] Курдль ©   (12.10.05 17:13)
> Если от сетевых ПК сервер доступен постоянно - репликация сама по себе не логична.
Присоединяюсь. Если все в одной сети, то странная задача.


 
Tomkat   (2005-11-16 12:56) [8]

я решал подобную задачку ....
у нас сервер под Линухом, на нем FB 1.03
и 15 удаленных клиентов по всей стране ....мы сделали проброс портов от центрального Unix FreeBSD на Линуксовый и клиент мог подключаться к нему указав внешний IP Юникса ....
но такое годится для небольшрго количества данных, либо для широкого канала . У нас канал 64К, и вечером ломятся 10 клиентов + Интернет + мыло .Короче , тормоза были большие .... но потерь не было , просто все операции делались в одной транзакции , если чего - транзакция отбивалась и все .
Сейчас я переделал на пакетную передачу мылом . это не самый надежный способ, но работает ! на сервере стоит служба, к-я разбирает файло и выкладывает куда нада ...
Есть еще вариант - закачивать  и забирать обновления на/с FTP сервера , поднятый на нашем внешнем Юниксе ....
ну вот весь опыт репликации



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

Форум: "Базы";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.011 c
11-1116766352
IFO
2005-05-22 16:52
2006.01.15
How to prevent screensaver from starting in KOL?


2-1135271682
nirvana
2005-12-22 20:14
2006.01.15
Запись значений класса в файл.


3-1132321106
Jok
2005-11-18 16:38
2006.01.15
TClientDataSet.ApplyUpdates(-1)


2-1135245919
Вт
2005-12-22 13:05
2006.01.15
Как установить в заданную позицию DBGrid


1-1134133314
webber
2005-12-09 16:01
2006.01.15
NMFTP - проблемы с передачей данных





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