Форум: "Потрепаться";
Текущий архив: 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]Боюсь, что рабочий пример слишком много весит.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.005 c