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

Вниз

Из FireBird в PostgreSQL   Найти похожие ветки 

 
VitalikS   (2006-07-20 04:18) [0]

Подскажите как правильнее сделать перенос данных из одной базы в другую.
Требуется перенести определенные данные с рабочего места оператора (операторов много, в разных местах города), у него данные храняться на FireBird, в базу данных на PostgreSQL которая для всех операторов одна и операторы могут одновременно начать передачу данных. Доступ к FireBird через BDE, а к PostgreSQL через ODBC (используются компоненты BDE).

Стоит ли использовать компонент BatchMove? Не будет ли проблем при одновременной передаче?


 
VitalikS   (2006-07-20 11:13) [1]

Или как можно по другому реализовать данную задачу, какие компоненты использовать?


 
Desdechado ©   (2006-07-20 11:24) [2]

Многое зависит от того, что за данные. Если у кадого свои, то проблем при одновременной передаче быть не должно, каждый ведь в своей транзакции.
Если есть данные, которые могут пересекаться (например, суррогатные сгенерированнные ключи), то проблемы будут даже при поочередной передаче.
Если речь идет о синхронизации (часть данных в одну сторону, часть в другую), то проблем будет еще больше.
И не совсем понятно, как потом в полученной БД отделяются одни операторы от других. Вряд ли в структурах данных отдельных операторов есть эта зацепка, а в общей наверняка должна быть. Значит, структуры разные.
И BatchMove вряд ли тут покатит.


 
Val (from Kiev)   (2006-07-20 11:25) [3]

нужно бы почитать про репликацию, потом решить для себя как и что собираетесь переносить, потом спросить о том, что непонятно\не получается.


 
VitalikS   (2006-07-20 12:34) [4]


> Многое зависит от того, что за данные. Если у кадого свои,
>  то проблем при одновременной передаче быть не должно

Смотря что понимать под словом "свои", они уникальны по нескольким полям, совпадения могут быть только если брать отдельные поля и сравнивать, а так строка уникальна.

> И не совсем понятно, как потом в полученной БД отделяются
> одни операторы от других.

Передается номер окна оператора на каждую запись (окон на одной точке до 7), программа должна выбирать данные сразу со всех окон (база одна, проблем с этим нет).

>  Значит, структуры разные.

Абсолютно одинковые. Я просто незнаю как будет себя вести этот компонент при массовой передаче и довольно таки частой каждые 15 мин, а может и ещё чаще. Приемниек у компонента Table поэтому и возникают сомнения, а вдруг какие-то глюки выявятся. Данные важные л/с, суммы, фамилии, важно чтобы каждая запись передалась.


> нужно бы почитать про репликацию

Читал, FireBird не поддерживает репликацию. Может плохо читал....натолкните на статейку..

>  решить для себя как и что собираетесь переносить

Знаю что, вот как раз вопрос КАК? Опыта в таких задачах нет, а данные важные.


 
Desdechado ©   (2006-07-20 12:47) [5]

> Передается номер окна оператора на каждую запись
Т.е. разделение не по исходным базам, а по "окнам"? Ну, тогда проще.
Не забудь про управление транзакциями.

>> нужно бы почитать про репликацию
> Читал, FireBird не поддерживает репликацию.
Почитать о принципах, а не о репликации в FB.

А для FB можно поискать на ibase.ru
Что-топо этой теме я там видел.


 
Val (from Kiev)   (2006-07-20 15:02) [6]

под "как" я имел ввиду общие принципы - периодичность репликации, файлами/запросами, таблицами/выборками, что нужно контролировать при переносе и т.д.


 
VitalikS   (2006-07-21 01:52) [7]


> Не забудь про управление транзакциями.

А как управлять транзакциями? Что под этим понимается?

> А для FB можно поискать на ibase.ru
> Что-топо этой теме я там видел.

Там и читал, но что-то непомогло, попробую ещё раз.

>  периодичность репликации

Пока каждые 15 мин, но время должно изменяться.

> , файлами/запросами, таблицами/выборками,

ну вот в этом у меня как раз и вопрос, как лучше?

>  что нужно контролировать при переносе

Необходимо чтобы все данные дошли до PostgreSQL.

Вот ещё возник один вопрос:
В свойствах компонента BatchMove можно указать таблицу Paradox для ПРОБЛЕМНЫХ записей (насколько я понял те которые по тем или иным причинам не переданы на сервер будут занесены в таблицу), но если какая-то запись была не передана (например обрыв линии) то она заносится в эту таблицу и помечается как не переданная, а потом снова передается и доходит до сервера нормально, а вот будет ли она удалена из этой проблемной таблицы (ведь она уже отправленна) или эта таблица как log просто тупо заносит все коряво переданные данные.


 
Desdechado ©   (2006-07-21 11:43) [8]

> периодичность репликации каждые 15 мин
Что-то очень подозрительно. Не проще ли писать напрямую в центральную БД?

> А как управлять транзакциями?
Так, чтоб точно знать, какие данные дошли до центральной БД, а какие нет.
Что такое транзакция, надеюсь, знаешь. Если нет - гугли.


 
VitalikS   (2006-07-24 00:53) [9]


> Что-то очень подозрительно. Не проще ли писать напрямую
> в центральную БД?

Программа с которой работает оператор написана не нами и работает она с FB (ну или с подобными серверами). Так что писать напрямую в центральную базу нет никакой необходимости, да и в эту базу будет скидывать только один вид услуг, а их у оператора много.

> Что такое транзакция, надеюсь, знаешь

Знаю.

Управлений транзакциями начинается с starttransaction, правильно я понимаю это понятие?


 
Джо ©   (2006-07-24 06:20) [10]

> Управлений транзакциями начинается с starttransaction, правильно
> я понимаю это понятие?

Это, как бы так сказать, утверждение частное. :)


 
Step[B.M.]   (2006-07-24 15:01) [11]

Короче так:

1. пишешь библиотеку UDF (для IBase) c функцией, которая подключается к базе PGSQL и свои входные параметры вставляет в таблицу PGSQL. Рекомендую использовать компоненты ZeosDBO. Если данные успешно "засунулись" в "слона" - то ф-ия возвращает "1".

2. вешаешь эту функцию на триггер BEFOR EINSERT в IBbase на таблицу, данные которой тебе нужно засунуть в "слона". если функция возвращает "0" значица вызываем в тирггере EXCEPTION.


 
Desdechado ©   (2006-07-24 17:58) [12]

Step[B.M.]   (24.07.06 15:01) [11]
Вот этоточно слон получится. Ибо UDF предназначены для очень коротких операций, и уж никак в них не следует делать подключение к внешним БД и запись в них. Это порочный путь.
Представь, что пропала связь "окно- главная БД", тогда никто не сможет внести никаких данных, поскольку триггеры будут валисться на ошибку.



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

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

Наверх





Память: 0.49 MB
Время: 0.063 c
1-1154450022
Tanya
2006-08-01 20:33
2006.09.24
Вытащить текст из дочернего окна


2-1157458352
barakuda
2006-09-05 16:12
2006.09.24
Запрос чегото, нетого ...


15-1157053384
R0NYN
2006-08-31 23:43
2006.09.24
Форум Microsoft весна 2006


3-1153566697
HelloWord
2006-07-22 15:11
2006.09.24
Обработка исключений


15-1157024348
Rouse_
2006-08-31 15:39
2006.09.24
Скрытие элементов защиты с применением технологии Руткитов





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