Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
1-9441
Rammst
2002-03-24 08:26
2002.04.04
Клавиатура


1-9465
Man-In-Red
2002-03-25 15:45
2002.04.04
Как в Listbox1 добавить все содержимое папки, скажем: C: My Doc ???


1-9547
snoup
2002-03-23 18:13
2002.04.04
Как написать прогу которая бы искала указаный файл на винте???


1-9470
Аркадий
2002-03-25 17:00
2002.04.04
текст из файла


1-9565
Erlend
2002-03-22 08:37
2002.04.04
IDE





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