Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 Работа с ДБ через И-нет  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1035
Необходима прога, работающая с различных компов (локалка, Инет) с одной базой. На чем лучше это хозяйство организовать?
Сейчас это делается весьма извращенно: на серваке стоит IB, у клиентов - тоже. А пересылка информации идет через почтовые аттачи (скриптовые запросы в теме письма). В аттаче лежит упакованная IB-база, которая смотрится либо клиентом, либо серваком - смотря к кому пришла.
Это конечно коряво, но работает (особенно, если у клиентов нету выделенки).
А те у кого и-нет быстрый, хотелось бы, чтобы было в реалтайме обновление информации.
Как быть?

P.S. проги написаны на Delphi.
23 апр 03, 11:20    [181795]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
На InterBase такого не сделаешь - не будешь же давать доступ из инета к компьютеру напрямую :)
23 апр 03, 11:40    [181830]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
DimaR
Member

Откуда:
Сообщений: 1570
На Delphi 7 довольно просто можно сделать Web приложения.
VCL - Intraweb + TMS Intraweb
Если об этом речь.
23 апр 03, 11:47    [181854]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
StarWind
Member

Откуда: г. Иркутск
Сообщений: 1875
в смысле прямой доступ?
достаточно только доступа к определенному порту и все.
а вообще все зависит от задач...
можно связку PHP+MySQL, можно (и вроде как пропагандируется) IIS+MSSQL
это если Web-клиенты
а так в принципе почти любая база, главное открыть канал
23 апр 03, 11:48    [181856]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
alex_k
Member

Откуда: krasnoyarsk
Сообщений: 6694
2Tygra
Что то я не совсем понял, почему это "На InterBase такого не сделаешь"?
:-) мне кажется что любой sql сервер, который допускает подключение клиентов по tcp/ip позволит реализовать подобного рода схему.
23 апр 03, 12:15    [181915]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
alex_k
Member

Откуда: krasnoyarsk
Сообщений: 6694
2Данил
Организуй ВиПиЭн сеть, и через эту сеть подключайся к одному компу с реальной базой. Если выделенка более-менее приличная, то никаких проблем не будет ни со скоростью(ну хотя тут от задачи и реализации зависит) ни с безопасностью. Хорошо бы, чтобы сервер с InterBaseом был подключен через нормальный гейт, чтобы порты позакрывать ненужные. А если на Яффил перейти, то там можно настроить чтобы он слушал коненекты только на определенном интерфейсе, (хотя FireBird возможно тоже так умеет, я не в курсе).
23 апр 03, 12:19    [181925]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Давно я с Интербэйзом не работал, были раньше какие-то проблемы. Сейчас может уже и нет :)
23 апр 03, 12:54    [181994]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1035
По поводу защиты - там на И-нет сервере гейт нормальный стоит, а база будет лежать на другом компьютере (внутреннем серваке).
Только вот вопрос насчет сохранности информации при обрыве связи (и-нет плохой, питание у клиента исчезло, техничка провод задела и т.п.). Чтоб никаких косяков на серверной базе не возникало. Насчет надежности IB у меня возникают сомнения. Неохота просто базу восстанавливать при каждом неблагоприятном случае.
База сама приличная - около 5 таблиц по 10-15 метров каждая и еще парочка табличек по 20-30 метров. Для локалки - это фигня, но вот если это дело через И-нет пропускать, то трафик получается довольно-таки нехилый.
Я конечно же не имею ввиду, что клиенты напрямую через И-нет будут с сервачной базой работать (до такого маразма я еще не дошел), просто о запросу пользователя обновлять несколько табличек - это значит нужно как минимум грузить метров 30 по И-нету.
Подождать-то пару минут можно (при хорошей скорости), а вот если глюкнет во время запроса, тогда КАК ОТСЛЕДИТЬ ОБРЫВ СВЯЗИ через IB, чтоб потом все обратно восстановить?

Кстати, спасибо за дельные советы.
23 апр 03, 14:41    [182153]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1035
А может проще паковать всю базу и прямо на клиентский компутер отсылать (через сокеты например)? Ужимается она в 2-3 метра?
23 апр 03, 14:43    [182158]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
А зачем тебе все 30 метров на клиенте?
23 апр 03, 15:19    [182200]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
alex_k
Member

Откуда: krasnoyarsk
Сообщений: 6694
2Даниил
>через И-нет будут с сервачной базой работать
Это не маразм это нормально. И не нужно 20-30 мегабайт передавать клиенту. Клиент ведь тоже человек и он физически не сможет просмотреть 20-30 мегабайт информации.
Нужно организовать нормальную серверную бизнес логику, когда клиенту по его запросу выдается только то что он должен увидеть, а не все подряд.
В случае обрыва связи пропадут данные только в текущей транзакции. Насчет надежности, это тоже ты напрасно сомневаешся, возьми FireBird 1.0.2 последний буилд, все будет прекрасно.
>около 5 таблиц по 10-15 метров каждая
У тебя что, каждая таблица в отдельном файле? или как ты оценивал размер таблицы?
В общем, думай об этом как об обычной локальной сети. Настрой VPN. Ничего страшного и необычного, вполне работоспособгая схема, и трафик получается небольшой если правильно логика продумана и реализованна.
23 апр 03, 15:19    [182203]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1035
2 tygra
>А зачем тебе все 30 метров на клиенте?
Вкратце поясню, что это за програ:
На серваке лежат большущие прайсы. В каждой таблице - по свое тематике (т.к. структура полей разная). Прайсы обновляются несколько раз в неделю (меняют несколько менеджеров по локалке). Клиенту нужно периодически обновлять цены и номенклатуру, делать из них заказ и отправлять заказ (еще одна табличка) обратно на сервак.
Этот заказ обрабатывается менеджерами (уточняется всякое) и отправляется обратно клиенту. И так до полного консенсуса :)
Дак это я к чему... У клиента должен быть ВСЕГДА ПОЛНЫЙ прайс, независимо есть доступ к И-нету или его нету (... почти каламбур :) ).
Поэтому даже если и можно считывать нужный кусок какой-либо большой таблицы и показывать его на экране и листать его, то при обрыве связи - все накроется медным тазом.
Поэтому таблицы нужны ВСЕ и СРАЗУ.

2 alex_k
>У тебя что, каждая таблица в отдельном файле? или как ты оценивал размер таблицы?
Это я примерно на глазок :)
Про FireBird я много хорошего слышал и давно хотел перейти (стоит IB 6), только сдерживает одно: Поставил я его как-то себе и у меня перестали работать программки, написанные когда стоял IB. В конторах с моими прогами то же самое. Вот я поостерегся переходить на него.
А вообще, спасибо за дельные слова.
23 апр 03, 16:12    [182271]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Так тебе можно весь файл БД отправлять, это даже лучше будет. А заказы оформлять если нужно - то тогда по сети.
23 апр 03, 16:29    [182285]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
alex_k
Member

Откуда: krasnoyarsk
Сообщений: 6694
>У клиента должен быть ВСЕГДА ПОЛНЫЙ прайс, независимо есть доступ к И-нету или его нету

ну, тогда, как уже сказал уважаемый Александр Спелицин - репликация.
А репликация дело тонкое и мне, скудоумному, совершенно непонятное. К стати, пользуясь случаем, хочу спросить массы: А как делается путняя репликация sql серверов вообще и InterBase`a в частности?
23 апр 03, 16:29    [182286]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
Aion
Member

Откуда: Riga, Latvia
Сообщений: 187
IMHO, здесь собственно уже речь идет о работе целого решения, а не какой-то конкретной базы.

Как пример реализации:

Client - клиентское приложение + ДБ (пофиг какая)
AppServer (чисто условно) - да что угодно, на чем быстрее напишите (Delfi,Java, PHP)
Database - собственно твои данные (IB)

Online сценарий ( ну чистый webservice :-) )
Client [XML request] -> AppServer -> DB
DB <- AppServer -> XML response -> Client

Offline сценарий:
Client [XML request] -> Mail message (XML request) -> mail server -> AppServer...
AppServer -> Mail (XML response) -> Client inbox (Xml файлик) -> Client app...

или же еще метод типа как subscription....

В общем, данные абстрагированны от реальной системы, что собственно и позволяет делать вольности как и настороне клиента, так и настороне сервера.

И еще пару +:
- У клиента всегда будут свежие данные и способ их получения относительно прозрачный для большенства компонентов системы.
- Изолированный клиент со своим приложением и базой данных (ну если у Вас там клиентов будет много, и Вы решите ставить у себя Oracle например, что будет тогда? )
Cписок можно продолжать и продолжать....
23 апр 03, 20:18    [182641]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
Aion
Member

Откуда: Riga, Latvia
Сообщений: 187
IMHO, здесь собственно уже речь идет о работе целого решения, а не какой-то конкретной базы.

Как пример реализации:

Client - клиентское приложение + ДБ (пофиг какая)
AppServer (чисто условно) - да что угодно, на чем быстрее напишите (Delfi,Java, PHP)
Database - собственно твои данные (IB)

Online сценарий ( ну чистый webservice :-) )
Client [XML request] -> AppServer -> DB
DB <- AppServer -> XML response -> Client

Offline сценарий:
Client [XML request] -> Mail message (XML request) -> mail server -> AppServer...
AppServer -> Mail (XML response) -> Client inbox (Xml файлик) -> Client app...

или же еще метод типа как subscription....

В общем, данные абстрагированны от реальной системы, что собственно и позволяет делать вольности как и настороне клиента, так и настороне сервера.

И еще пару +:
- У клиента всегда будут свежие данные и способ их получения относительно прозрачный для большенства компонентов системы.
- Изолированный клиент со своим приложением и базой данных (ну если у Вас там клиентов будет много, и Вы решите ставить у себя Oracle например, что будет тогда? )
Cписок можно продолжать и продолжать....
23 апр 03, 20:19    [182642]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
StarWind
Member

Откуда: г. Иркутск
Сообщений: 1875
Я вот только не понял, прайсы в блобах лежат? Или это обычные и нормальные таблички? Клиент вебовский (IE) или твоя прога?

Мое предложение. Все прайсы пишешь в таблицы, все стильно и красиво никаких файлов в блобах и прочего. Пишешь своего клиента и работаешь. А чтобы тебе целой табличкой не гонять... так никто не заставляет тебя фетчить (Fetch) все данные. Достаточно показывать только то что влазиет на экран. И не придется зараз гонять весь объем данных. Перенеси по максимуму обработку информации на сервер и будешь радоваться.
25 апр 03, 03:38    [184060]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1035
2 StarWind
>Я вот только не понял, прайсы в блобах лежат? Или это обычные и >нормальные таблички? Клиент вебовский (IE) или твоя прога?
Цены, количество на складе - INTEGER, а вот тех.параметры - в некоторых прайсах в одной строке (CHAR(250)), а есть такие, в которых число строк по каждому товару доходит до 20 (это лежит в BLOB).

>никто не заставляет тебя фетчить (Fetch) все данные. Достаточно >показывать только то что влазиет на экран. И не придется зараз гонять весь >объем данных. Перенеси по максимуму обработку информации на сервер и >
>будешь радоваться.
На это повторюсь еще раз собственными словами:
У клиента должен быть ВСЕГДА ПОЛНЫЙ прайс, независимо есть доступ к И-нету или его нету.
Свежая база лежит на серваке, а у клиента (который сидит в другом городе или стране) - периодически обновляемая та же самая база. Необходимо, чтобы у клиента была всегда ПОЛНАЯ копия сервачной базы.
25 апр 03, 07:44    [184087]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
alex_k
Member

Откуда: krasnoyarsk
Сообщений: 6694
>Необходимо, чтобы у клиента была всегда ПОЛНАЯ копия сервачной базы.
Ну, к стати, всегда не получится. Если обрыв связи, а на серваки вдруг добавили сом строк в прайс, то у клиента будет старый прайс. Правлильнее выразится так: Хочу чтобы на клиенте был наиболее полный прайс. Можно сделать примитивео. Если клиент не обновляет прайсы сам, то выбирать из серверной базы в клиентскую те строки у которых ID больше чем максимальный ID клиентской базы. И пытаться проделать это допустим раз в 10 минут, трафик будет в итоге копеечный и прайс практически всегда свежий.
25 апр 03, 07:56    [184092]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
eNose
Member

Откуда:
Сообщений: 183063
Я бы сделал так:

1) сделать сайт с этим самым прайсом (все данные, естественно, из БД).
2) написать своего веб-клиента (на делфях, TWebBrowser).
3) при 100% загрузку страницы из инета сохранять полученные данные на клиенте: не в виде html, а перегнать в базу.
4) веб-клиент работает в фоне, а юзер работает с локальными данными.

То есть запускает юзер прогу и работатет. А прога в фоне пытается скачать свежий прайс: если успешно - у юзера данные обновляются, если нет - то нет. Можно сделать еще и конвертер в юзеровскую БД, чтоб можно было в offline`е передать.
25 апр 03, 07:59    [184093]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
StarWind
Member

Откуда: г. Иркутск
Сообщений: 1875
так они и будут полными. как только пользователь захочет увидеть новую строчку, она ему передается.
Например, простой компонент TDBGrid со всеми связками до БД. При открытии запроса, происходит чтение десятка других строчек и все, дальше при перемещении к следующей строке происходит подкачка новой информации. И все тут. Ну не разместишь ты 30 мегобайт текста сразу на экран, чтоб он еще и читался. (в смысле не мелким был бы)
25 апр 03, 09:48    [184168]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Да проще архив БД каждый день закачивать - IB хорошо пакуется, как минимум в 10 раз меньше будет
25 апр 03, 10:31    [184254]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
Даниил
Member

Откуда: Челябинск
Сообщений: 1035
2 alex_k
>выбирать из серверной базы в клиентскую те строки у которых ID больше чем максимальный ID клиентской базы

А если номенклатура та же, а цены изменились? Тогда, что все товары удалять и заново заносить под новыми ID?

2 tygra
>Да проще архив БД каждый день закачивать - IB хорошо пакуется, как минимум в 10 раз меньше будет

Именно так я хочу сделать... и раньше хотел... теперь думаю как бэкапить ее в реальном времени (в смысле без отруба работающих с базой пользователей по локалке). Или придется ночью бэкапить и клиентам по запросу в течении дня отсылать.
А из дельфийской проги это так делается?:
1. запустить бэкап в процессе с нужными ключами.
2. дождаться, пока процесс завершиться.
3. если все в порядке - ... ну тогда хорошо... :)

Я правильно думаю?
25 апр 03, 16:59    [185029]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
alex_k
Member

Откуда: krasnoyarsk
Сообщений: 6694
2 Даниил
Был неправ :-)
Но, в данном случае, можно ввести историю цен, и тогда при изменении цены она добавляется а не меняется :-)
27 апр 03, 13:22    [185580]     Ответить | Цитировать Сообщить модератору
 Re: Работа с ДБ через И-нет  [new]
f_w_p
Guest
Репликация вполне может решить проблему.
На http://www.interbase.ru как-то видел статью об организации репликации на IB.
По-поводу Backup. В 6й Delphi есть компоненты InterBase Admin. Там есть Backup. Правда, сам не пользовался, ничего о них не могу сказать:-((.
28 апр 03, 08:08    [185723]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить