Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Вниз

Об InterBase 


VID   (2002-02-20 18:22) [0]

Я только начинаю заниматься разработками баз данных на delphi, и выбралл InterBase (до этого долго работал с VFP).
По ходу изучения у меня возникли некоторые вопросы по interbase, и по БД в D5 вообще:
1. Действительно ли механизм BDE работает медленно (и на сколько медлее того же VFP, например)?

2. Можно ли 100% обойтись без BDE используя компонеты доступа к данным, только со страницы InterBase Express , а также TDataSource ?

3. Чем отличается TTable от TIBTable. В книге написано, что применения TTable для архитектур Клиент-Сервер - неоправданно, т.к. TTable для отображения записей, копирует все записи таблицы, с которой он соединён, т.е. создаёт локальную копию просматриваемой таблицы, что конечно не лучшим образом сказываеться на загруженности сети. TIBTABLE поступает также ?

4. Что нужно установить на компе-сервере, для корректной работы моего клиент-сервер приложения. Думается, что сервер InterBase там необходим. Так вот по этому поводу: нужно ли устанавливать сервер InterBase или какие-нибудь дополнительные драйвера на машине клиента.

5. Как я понимаю, для написания обычного приложения с архитектурой клиент-Сервер, достаточно написать приложение-клиент, реализровать в нём возможность идентификации пользователя (для разл. степеней доступа к данным), и установить это приложение на каждом компе. А приложение-сервер писать вообще не нужно. (даже в голову не приходит, что же должно быть реализованно в этом приложении).

6. Возможен ли такой вариант: Приложение-клиент устанавливается только на одном компе, а на всех остальных, созданы ярлыки для запуска этого приложения. И для каждого компа будет автоматически создаваться одтельная копия клиентского приложения. (ну, что бы не устанавиливать клиента на каждом компе) ?

Вот пока все вопросы... Надеюсь на Вашу помощь.



Иван Шихалев   (2002-02-20 18:33) [1]

1. Сравнивать с VFP некорректно - скорость работы в большей степени зависит от сервера. По сравнению с IBX несколько медленнее, хотя зачастую некритично.

2. Да. При использовании компонент IBX, BDE не требуется.

3. Да, использование TIBTable крайне неоптимально. По сути - это пережиток. Вместо него лучше использовать TIBQuery, а еще лучше - TIBDataSet.

4. На машине клиента необходима клиентская библиотека gds32.dll. Насколько я помню, все остальное необязательно.

5. Приложение-сервер в данном случае - сам сервер БД.

6. Это зависит от самого приложения-клиента. Хотя возможны и проблемы с gds32.dll.



VID   (2002-02-20 19:44) [2]

4.1. Т.е. на компе-сервере нужно установить сервер InterBase ? Неужели все так и делают. Я о том, что InterBase на англ языке, и для его урпавления вообще требуются серьёзные(хотя и не очень) знания администрирования баз данных. Что вообще должно быть установлено на компе-сервере ?

6.1. Какие именно проблемы могут быть с gds32.dll?



limon   (2002-02-20 19:54) [3]

4.1 Сервер должен стоять на сервере. Нато он и сервер!
Администрирование у Interbase простейшее. Если, конечно, не относить к администрированию создание баз, таблиц, индексов, процедур и т.п.



VID   (2002-02-20 20:09) [4]

4.1.1. Т.е. придёться всё-таки ставить... А никто не знает где можно слить IB 6.0, а то 5.5 на 5 пользователей... сейчас, для учёбы конечно хватает, но при реализации программ, 5 пользователей - это конечно маловато :)



Иван Шихалев   (2002-02-21 02:26) [5]

4.1.1 По всем вопросам, а особенно по тому, где что скачать - http://ib.demo.ru/ . Рекомендую качать FireBird сразу.

6.1 Она может оказаться не найдена.



Vadim   (2002-02-21 09:34) [6]

2> для использования dbExpress потребуется ещё dbexpint.dll на клиенте (а в случае использования TClientSQLDataSet ещё и midas.dll, почему - не знаю). Если используется не FB, а IB, то требуется ib_license.dat (из комплекта IB client).

5> на сервере в виде подпрограмм на специальном языке (клон SQL) пишется так называемая бизнес - логика, основное назначение которой - контроль корректности данных, доступа и уменьшение объёмов передаваемых по сети данных. Если к данным одновременно обращаются более одного клиента, реализация бизнес - логики на сервере (ограничения, триггеры, хранимые процедуры) крайне желательно.

6> пробовал, не вышло.



Digitman   (2002-02-21 10:27) [7]

1. BDE не совсем корректно сравнивать с VFP.
VFP, прежде всего - IDE, использующее в качестве базового FoxPro DBEndine.
BDE же - универсальный DBEngine, просто безликий интерфейс, "родным" для "потрохов" которого считается БД-формат Paradox, все остальные поддерживаемые БД-форматы (ODBC не рассматриваем), ч.н. - "пасынки". Для большинства "неродных" БД-форматов BDE, действительно, крайне неэффективен. И с т.з. производительности и с т.з. совместимости/надежности.

2. Да. Не только можно - нужно ! Все, что делает BDE при взаимодействии клиентского приложения с IB - транслирует через себя (практически - без изменений) вызовы библиотеки GDS32.DLL из VCLDB-объектов. Просто - лишнее звено в цепочке связи IB-клиента с IB-сервером.

3. Кроме всего прочего (о чем уже сказали), TIBTable оптимизирован для работы непосредственно с GDS32.DLL

4. На машине-сервере устанавливается :
- собственно IBServer;
- базы данных в формате GDB, с которыми IBServer будет работать;
- при 3хзвенной архитектуре - твой собственный AppServer (сервер приложений), реализующий некоторую расширенную бизнес-логику серверной стороны в распределенной инф.системе, использующей СУБД IB в кач-ве базового "движка".

5. Приложение-сервер (тот самый AppServer - 2-е звено в 3х-звенной архитектуре), прежде всего, нужно для централизации бизнес-логики на серверной стороне, в рез-те чего в обычном для 2х-звенной арх-ры "толстом" клиенте отпадает необходимость в этой логике, и он (клиент) получает возможность стать "тонким"

6. Возможен. Но GDS32.DLL должна присутствовать на каждой клиентской машине в системном каталоге по-умолчанию



VID   (2002-02-21 11:03) [8]

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

8. Возможно ли добавление записей несколькими клиентами одновременно.
8.1. И возможно ли редактирование нескольких записей несколькими клиентами (каждый клиент редактирует свою запись, которую не редактирует никто кроме него) одновременно ?



Алексей Петров   (2002-02-21 11:36) [9]

7, 8, 8.1 - Да



VID   (2002-02-21 11:43) [10]

9. Нужны ли, в программе - клиенте, хоть какие-нибудь компоненты сетевого доступа (для доступа к серверу, точнее к БД, которая находиться на сервере), или все вопросы сетевого доступа решаются средствами IB.
9.1. Как правильно в клиенте подключить удалённую БД (программно) ?



Andrey   (2002-02-21 11:44) [11]

Существует 4 стандартных уровня (ANSI SQL-92) изолированности транзакций:

Dirty Read - "грязное" (или "незафиксирование") чтение. Транзакция может читать не подтверджденные изменения, сделанные в других транзакциях. В IB этот режим не поддерживается. Например, если транзакции A и B стартовали, и поменяли записи, то они обе видят изменения друг друга.

Read Committed - невоспроизводимое (или неповторяемое) чтение. Транзакция может читать только те изменения, которые были подтверждены другими транзакциями. Например, если транзакции A и B стартовали и поменяли записи, то они не видят изменения друг друга. Транзакция А увидит изменения транзакции B только тогда, когда транзакция B завершится по commit. Перечитывание данных в транзакции может выдавать разные результаты.

Repeatable Read - воспроизводимое (или повторяемое) чтение. Транзакция видит только те данные, которые существовали на момент ее старта.

Serialized - сериализуемость. ТранзакцияШГюфолняются так, как будто никаких других транзакций в этот момент не существует. Или, транзакции выполняются так, как будто они выполняются последовательно. Не поддерживается явно в IB, но может быть сэмулировано.


http://ib.demo.ru/DevInfo/ibtrans.htm



Алексей Петров   (2002-02-21 17:19) [12]

9. В программе - нет. Работаешь только с клиенским API IB (можно на прямую, а можно через IBX компоненты).
А вот на компе должна быть установлена поддержка протокола, по которому будет соединение (IPX, TCP/IP или NetBeui).

9.1. Путь к базе:
\\Имя компа\ Полный путь к gdb файлу на сервере. -
это для NetBeui. для IPX и TCP/IP - немного другой формат, но такой-же по сути. Разделитель определяет протокол.

Обрати внимание на следующее: Ты можешь разрушить БД, если будешь с ней работать одновременно подключаясь к ней с разными именами. Я налетал на грабли при использовании русских символов в пути - большие и маленькие оказались разными :(



VID   (2002-02-21 18:06) [13]

9.1.1. А какой протокол лучше использовать в локсетях при подключении к Ib серверу ?

9.1.2. Насчёт разрушения... не могли бы рассказать поподробнее ?



Иван Шихалев   (2002-02-21 18:07) [14]

9.1.1 Использовать лучше TCP/IP.

9.1.2 Читай на ib.demo.ru



VID   (2002-02-21 18:15) [15]

10. Ситуация: на форме имеется TDBGrid, и TIBQuery. (TIBTable не используется). Что и как надо сделать для того что бы GRID отобразил данные, я мог их изменить, а изменения сразу сохранялись бы в таблице (удалённой). Т.е. имитировать работу с обычной локальной таблицей ?



Иван Шихалев   (2002-02-21 18:32) [16]

10. Совершенно бредовая ситуация, однако... Во-первых, я все же рекомендую заменять TIBTable на TIBDataSet, во-вторых, а где Update-что-то-там, если уж используется TIBQuery? И в третьих, а какая разница между локальной и удпленной таблицами?



VID   (2002-02-21 18:49) [17]

9.1.2.1. Чего - то не нашёл :(



Иван Шихалев   (2002-02-21 19:01) [18]

9.1.2.1 Странно... Суть, кратко, вот в чем: если одновременно с базой происходит работа по разным протоколам (TCP/IP, NetBIOS, локально), то весьма вероятно разрушение базы. Для того, чтобы этого не происходило, строку коннекта я, например, храню в файле на сервере, из которого ее читают все клиенты. Такое решение не всегда удобно.



VID   (2002-02-21 20:58) [19]

10. Я же как раз и написал что TIBTable не используеться. И ещё, я ведь только начинаю, и совершенно не имею опыта создания приложений подобного типа.
10.1.
Ладно, допустим я использую TIBDataSet. Ну так что мне нужно, и что надо сделать, и как, что бы осуществить поставленную задачу (10). Не поленитесь ответить, пожалуйста.



Иван Шихалев   (2002-02-21 21:23) [20]

В IBDataSet прописываешь SQL-операторы выборки, удаления, вставки, изменения... В DataSource указываешь этот IBDataSet, к DataSource прицепляешь DBGrid etc. Чтобы изменения сохранились в базе данных, делаешь IBTransaction.Commit.



VID   (2002-02-22 00:26) [21]

TO Иван Шихалев: Вы наверное делали что-нить подобное, не могли бы скинуть примеры ? Весьма, знаете ли благодарен был бы :)



Иван Шихалев   (2002-02-22 10:48) [22]

Боюсь, что рабочий пример слишком много весит.




Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.78 MB
Время: 0.044 c
14-9621           Зачиняев Сергей       2002-02-22 15:28  2002.04.04  
К вопросам о терминологии, русском языке и воспитании.


1-9525            Alex_LG               2002-03-18 06:18  2002.04.04  
Где взять исходники *.pas для стандартных юнитов Дельфи?


14-9641           Nikolay               2002-02-23 18:12  2002.04.04  
Извиняюсь но............


1-9441            Rammst                2002-03-24 08:26  2002.04.04  
Клавиатура


3-9371            Sparky                2002-03-12 05:28  2002.04.04  
Кто-нибудь знает компоненты типа DecisionCube и где их можно найти?