Форум: "Базы";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
ВнизСнова о Paradox vs IB Найти похожие ветки
← →
KIR (2002-09-18 11:03) [0]Народ, после чтения ветки, посвященной сабжу, я понял что основное различие в подходе к созданию БД на Pardox"e и на IB заключается в использовании запросов вместо таблиц и триггеров/хранимых процедур вместо обычных процедур Дельфи, которые производят некие действия с БД. Правильно ли я понял: достаточно поменять таблицы на запросы, процедуры Дельфи сменить на хранимые процедуры, создать в IB такую же БД (с теми же таблицами и, соответственно полями), как и Paradox"e и можно пытаться перелезать?
← →
-= Demon =- (2002-09-18 11:25) [1]Значит так.
Что значит "поменять таблицы на запросы"? Таблицы есть всегда и везде. Разница в том, что при использовании Paradox вся БД ограничивается только набором этих самых таблиц, а при работе с сервером БД (напр. Interbase, пакостная штука доложу я вам) понятие БД много расширяется - это еще и триггера, и хранимые процедуры, и генераторы, и просмотры, и ... Много чего, в общем.
А запрос - это способ доступа к данным БД, написанный на специальном языке - SQL. И к Paradox"у можно обращаться с помощью SQL-запросов, только надо использовать не TTable, a TQuery, что настоятельно советую.
← →
MsGuns (2002-09-18 11:48) [2]Основное преимущество, ИМХО, клиент-серверного подхода в том, что
- совершенно не волнует проблема блокировок/разблокировок - головная боль Парадокса
- централизованный подход к реализации большей части логики обмена с БД, т.е. вопросы взаимоувязки, целостности, ссылок, прав доступа и т.д. информации БД решается на сервере, т.е. 1 раз для всех приложений (клиентов). Не надо при написании нового клиента морщить задницу, описывая по-новой всю топологию БД, обработчики OnDataChange,OnStateChange,BeforeXXX,AfterXXX и пр.
Ну и отдельный сыр - это РЕАЛЬНЫЕ транзакции (в парадоксе они представлены весьма куце) с возможностью откатов
← →
KIR (2002-09-18 13:42) [3]>> -= Demon =- Я имел ввиду поменять таблицы на запросы в клиенте.
← →
Mike Kouzmine (2002-09-18 13:58) [4]MsGuns © ->
- "совершенно не волнует проблема -блокировок/разблокировок - головная боль Парадокса" - Кто это Вам рассказал?
- "Ну и отдельный сыр - это РЕАЛЬНЫЕ транзакции (в парадоксе они представлены весьма куце) с возможностью откатов" - Кто Вам сказал, что они вообще реализованы?
← →
3JIA9I CyKA (2002-09-18 14:25) [5]2Mike Kouzmine
>>Кто Вам сказал, что они вообще реализованы?
А сам проверял? Похоже, что нет.
← →
Mike Kouzmine (2002-09-18 14:35) [6]А ты попробуй стартануть и изменить значение в полей в одной таблице сделать пост, изменить значения в другой т и сд пост, а потом, при изменении в третей передумать и сделать бэк, что получиться? Хрен с маслом.
← →
3JIA9I CyKA (2002-09-18 14:39) [7]Делал и получалось.
← →
Mike Kouzmine (2002-09-18 14:42) [8]Тогда беру свои слова обратно. Смрозил глупость. Хотя вериться с трудом, но тебе поверю :)
← →
3JIA9I CyKA (2002-09-18 14:43) [9]Я, когда сделал, сам очень удивился - просто ведь по приколу проверял. Прокатило.
← →
Mike Kouzmine (2002-09-18 14:59) [10]Верю. А какие-нибудь установки типа CashUpt в тру надо ставить или так катит?
← →
KIR (2002-09-19 00:16) [11]Главное все по теме :)
← →
Sergey13 (2002-09-19 09:26) [12]2KIR © (19.09.02 00:16)
>Главное все по теме :)
По теме не плохо бы литературку почитать. Ее море.
Вкратце
>"использовании запросов вместо таблиц "
И да и нет.
Нет, потому что и с TTable все будет работать.
Да, потому что:
1. В запросе можно сформировать виртуальную таблицу, где сосредотачивается инфа из несколких физических таблиц.
2. (Главное). При работе с локальной БД на клиента тянется ВСЯ таблица(с некоторыми оговорками), а при кл.-серв. БД только нужные строки. Если например из таблицы в 1000000 записей ты хочешь посмотреть 1 конкретную, то по сети пройдет только она (выберется на серваке). При локальной БД притащатся все 1000000 и твоя прога отберет нужную.
>и триггеров/хранимых процедур вместо обычных процедур Дельфи
Нет, не совсем так. Одно другому не мешает, а взаимно дополняет. Существуют действия которые необходимо делать всегда при работе с данными не зависимо от клиентских программ. Например заполнять PK-поле. Такую работу нужно делать на сервере. В IB это решается как раз через тригер/хп которые срабатывают ВСЕГДА при добавлении строки в таблицу. Написав один тригер можно не заботиться о генерации PK во ВСЕХ программах.
Кроме того, есть очень классная вещь - ссылочная целостность. Это когда САМА БАЗА НЕ ДАСТ НИКОМУ стереть запись, если на нее ссылается запись из другой таблицы. Даже если юзер(или программист) о ней не знает.
Да дофига там еще чего...
← →
3JIA9I CyKA (2002-09-19 10:04) [13]2Mike Kouzmine
А я помню? Полтора года прошло.
← →
KIR (2002-09-19 10:16) [14]>> Sergey13
По теме не плохо бы литературку почитать. Ее море.
Может порекомендуете что-нибудь стоящее, т.к. литературки действительно море.
← →
Sergey13 (2002-09-19 10:44) [15]2KIR © (19.09.02 10:16)
>Может порекомендуете что-нибудь стоящее, т.к. литературки действительно море.
Из того что под рукой - А.Я. Архангельский "Прграммирование в Delphi4" - не самое лучшее, но основы даны.
В остальном - поищи в инете на тему "клиент-сервер", посмотри сранички "Книги" и "Статьи" на этом сайте, сходи на "Кролевство Делфи",... Ищущий да обрящет...
← →
Юрий Жуков (2002-09-19 11:05) [16]Если интересует программирование по IB, то сходи на
http://ibase.ru
http://www.interbase-world.com/
на последнем есть ссылка на недавно вышедшую книгу "Мир InterBase"
Из классики ищи книгу М.Грабера в инете полно в электронном виде, можно наверное и в магазинах купить.
← →
MsGuns (2002-09-19 12:25) [17]>Mike Kouzmine (18.09.02 13:58)
>- "совершенно не волнует проблема -блокировок/разблокировок - головная боль Парадокса" - Кто это Вам рассказал?
Никто. Сам с этой бедой боролся, борюсь и (к сожалению) еще долго буду бороться). Слышали про такие файлы *.lck ?
Это когда ТРАНЗАКЦИЯ (да-да, именно так и и называются у Борланда еще с 3.0 Paradox, а может и ранее) не завершена.
Т.е. прога получила доступ к таблице (Paradox авоматически накладывет на таблицу соотв.блокировку), а потом аварийно завершилась, при этом ядро Paradox "проспало" этот момент и блокировку оставило.
- "Ну и отдельный сыр - это РЕАЛЬНЫЕ транзакции (в парадоксе они представлены весьма куце) с возможностью откатов" - Кто Вам сказал, что они вообще реализованы?
Под понятием "транзакция" в Paradox считается логически завершенноая операция по модификации данных в таблице (таблицах).
Другими словами: в режиме позаписного редактирования транзакцией по-парадоксовски можно считать операцию по редактированию, удалению или вставке записи. Т.е. если прога в цикле меняет n записей, то и транзакций будет n+2 (n+открытие+закрытие таблицы). Если редактирование через буфер, тогда под транзакцией надо понимать автоматические "сбросы" буферов + "насильственные" ApplyUpdates
В режиме запросов транзакция имеет тот же смысл, что и в SQL, т.е. если в таблице удаляются все записи и по какой-то причине их не удалось удалить (вырубили свет), то исх.таблица остается "невредимой" безо всяких там "откатов". Правда это все не всегда работает именно так, как я написал (и док-я по P4.5, например, тоже), пожтому я и использовал слово "КУЦЕ"
А падение ключей/индексов и lck-шки действительно головная боль программиста, сопровождающего СЕТЕВЫЕ реализации на Парадоксе.
← →
3JIA9I CyKA (2002-09-19 12:31) [18]2MsGuns ©
А падение ключей/индексов и lck-шки действительно головная боль программиста, сопровождающего СЕТЕВЫЕ реализации на Парадоксе.
Индексы замечательно валятся и ВаЩе без сети.
И это головная боль и юзеров, и программистов. Только дядя Борланд (парадоксов друг) на всё пЛюВал.
← →
MsGuns (2002-09-19 12:41) [19]>3JIA9I CyKA © (19.09.02 12:31)
>Индексы замечательно валятся и ВаЩе без сети.
Я вообще стараюсь не использовать вторичных индексов,- только первичные ключи. Конечно, из-за этого приходится спец.образом проектировать сами табличные структуры, зато надежность в локалке быстро все окупает. Да и на сети без индексов получше
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c