Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ODBC, ADO, DAO, BDE, DBexpress: Критерии выбора, Обзор технологий доступа к данным 
:(
    Опции темы
Viii
Дата 4.7.2003, 11:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











hmmm.gif
  Вверх
vickr
Дата 4.7.2003, 12:24 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.5.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



DAO - объектная модель - надстройка над ODBC.
ODBC - набор функций API - надежная, широко распространенная, но устаревающая технология доступа только к реляционным данным.
ADO - объектная модель - удобоваримая, с интуитивно понятной структурой надстройка над технологией OLE DB.
OLE DB - технология (в принципе, тоже объектная модель - набор объектов и интерфейсов для управления этими объектами), постепенно приходящая на смену ODBC. Позволяет обращаться к данным различной структуры (не только реляционным), поддерживает службы анализа данных OLAP.
Вот упрощенная, сокращенная, обобщенная, IMHO smile.gif характеристика, так сказать, в общих чертах.
Думаю, найдутся желающие высказаться более подробно по отднльным темам.

P.S. Еще пару комментариев ( тоже IMHO ) :
ODBC и OLE DB - низкоуровневые интерфесы для доступа к данным (интерфесы в общем, не СОМ-, смысле). С ними, как правило (но не всегда), работают на C/C++. DAO и ADO - их обертки для упрощенного доступа к данным из языков более высоклго уровня VB, VBA, DELPHI и т.д. (опять же как правило, но бывают и исключения).

Это сообщение отредактировал(а) vickr - 4.7.2003, 12:30
--------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:)
PM MAIL   Вверх
Vit
Дата 8.7.2003, 07:01 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Чисто с практической точки зрения:

ODBC - наиболее универсальная, тормознутая, стандартная, старая система. Используй там где нет ничего лучшего

DAO - даёт максимальные возможности при работе с MS Access/MS Excel (есть куча опций которые просто недоступны через другие системы). С MS Access работает очень быстро, но в основном за счёт очень сильного кэширования записи данных( если кэш сбрасывать после каждой транзакции, то скорость будет не быстрее чем ADO).

ADO - новая система от MS - претендует на стандарт доступа. Проста и удобна, не самая быстрая, но является "родной" для MS SQL Server. Если работаете с MS SQL Server то использовать надо только ADO, если с MS Access то только если скорость не очень критична. Для остальных баз данных можно задуматься об альтернативе

BDE - старая система от Borland. "Родная" для парадокса, очень хорошо работает так же с dbf самых разных мастей. Для коннекта с серверами баз данных хоть и можно использовать, но лучше подумать о чём-то более продвинутом.

DB Express - новая система от Borland. "Родная" для IB. Работает так же с DB/2, Oracle, Informix, MySQL. Очень компактна и проста в использовании, кросплатформенна (поддержка и в Windows и в Linux), но могут быть проблемы при дизайне очень навороченных multi-tier архитектур, более ориентированная на проекты малого и среднего размера.

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


При выборе надо учитывать такие факторы:
1) Насколько критична скорость работы
2) Насколько критична универсальность
3) Насколько критичен доступ к тонким функциям настройки и опциям
4) Какая система является более "родной" для базы данных
5) Насколько критична сложность установки и настройки системы баз данных

При прочих равных обстоятельствах надо отдавать преимущества более новым системам, т.е. в первую очередь ADO и DBExpress, в последнюю ODBC и DAO.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Chan
Дата 17.9.2003, 18:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











При важности скорости работы что выбрать лучше
ADO или BDE???
  Вверх
RAN
Дата 17.9.2003, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: нет
Всего: 6



ADO, однозначно. BDE и скорость - это антонимы.
PM MAIL ICQ   Вверх
Vit
Дата 17.9.2003, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(RAN @ 17.9.2003, 10:21)
ADO, однозначно. BDE и скорость - это антонимы.

Это несовсем так, точнее совсем не так! По результатам моих тестов BDE на локальных базах данных (Paradox, MS Access) работает более чем на порядок быстрее, а вот для серверных баз данных ситуация прямо противоположная. Следует учесть что родная система доступа практически всегда работает быстрее, т.е.

для Paradox - BDE
для MS Access - DAO
для MS SQL Server - ADO


Следует также отметить ещё один важный момент, сколько клиентов одновременно будет работать с базой данных. Если больше 3-5ти то предпочтение надо отдавать ADO, так как BDE/DAO оптимизированны под одного клиента, а ADO под clien-server архитектуру. Из этого следует так же какой делать дизайн программы, если с BDE/DAO быстрее будут таботать компоненты типа TTable, и притормаживать квери, то в ADO при работе с таблицами будут явные тормоза, и наоборот квери будут выполняться очень быстро...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
RAN
Дата 17.9.2003, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: нет
Всего: 6



Vit, с тобой спорить бесполезно. Буду знать. Просто мне приходилось работать с BDE + IB. База была большая и, IMHO, плохо нормализована. Впечатления отвратительные. Всё работало очень медленно. Клиентов было около 10. Из них 3-4 использовали базу очень активно.
PM MAIL ICQ   Вверх
Vit
Дата 17.9.2003, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



В данном случае совершенно с тобой согласен! Во перавых IB это серверная база данных, во-вторых BDE не родная система доступа к IB, в-третьих у тебя было много клиентов и клиент-серверная архитектура. Именно в данной ситуации BDE - самый плохой выбор (нет, всё же самый плохой это ODBC). Как раз твой случай - это та классика, когда применять BDE категорически противопоказано... У меня самого был очень негативный опыт работы с BDE когда я пытался через него работать с большой и сильно нагруженной базой в MS SQL Server, но это ничуть не умаляет удобств и скорости работы BDE с локальными базами данных. Собственно, я именно к этому и веду - если ты внимательно читал мой топик, то я НИГДЕ НЕ ГОВОРЮ что какая-то система хороша, а другая плохая - просто они оптимизированны под разные задачи, разные базы, разные архитектуры. Нельзя всё под одну гребёнку, вот пара примеров из моей практики:

1) Случай первый: Локальные таблицы, один пользователь:

BDE+Paradox - выполнение Insert квери - больше 2000 кверей в минуту
ADO+MS Access - выполнение той же самой Insert квери - около 35 кверей в минуту

На том же самом компьютере, на тех же данных, в той же среде программирования...

2) Случай второй: Большая серверная база данных на MS SQL (около 50 гигабайт), больше сотни одновременных подключений, частота запросов к таблицам 20-30 кверей в секунду (вперемешку Select, Update, Insert квери)

BDE+SQL Link - в каждый момент минимум 1-2 клиента получают сообщения о Deadlock, timeout и т.п. Среднее время прохождения квери зачастую превышает 1 минуту... Четырёхпроцессорный MS SQL Server - загрузка всех процессоров - 100%

ADO - на той же самой системе, ни одна квери ни изменена, не оптимизирована, т.е. изменён только драйвер - Deadlock - нет, timeout - нет, время прохождения квери лишь изредко превышает 100 милисекунд, обычно где-то в районе 30-50 милисекунд. Загрузка процессоров на сервере колеблется в пределах 20-30%.


Вот они и преимущества...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 18.9.2003, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 59



Для DB Express есть драйвер и для MS SQL. Имеется специфакация для создания таких драйверов, так что в принипе возможно написание под любую БД


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 18.9.2003, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 59



Цитата(Vit @ 17.9.2003, 22:35)

  ADO - на той же самой системе, ни одна квери ни изменена, не оптимизирована, т.е. изменён только драйвер - Deadlock - нет, timeout - нет, время прохождения квери лишь изредко превышает 100 милисекунд, обычно где-то в районе  30-50 милисекунд. Загрузка процессоров на сервере колеблется в пределах 20-30%.



Небольшой вопрос. А величина результирующего запроса учитывалась?
Например я столкнулся с такой проблемой. При большой выборке выдача информации клиенту произволится на порядок быстрее, поскольку BDE перебрасывает данные по требованию (т.е откроет информацию, перебросив 10-15 записей), а ADO всегда полностью. При получении отчетов это не ииеет значение, а если клиент работает с БД в интерактиве, то большой недостаток.
А тесты вещь весьма относительная. Мы тоже в свое время проводили тесты и таких удручающих эффектов не видели. А тесты проводились, что бы уличить отдного товарища в некомпетентности, который утверждал что BDE + MS SQL быстрее. Мы же ( мы - потому что я был не один, нас была группа разработчиов) же пребывали в полной уверенности, что ADO + MS SQL будет вне конкуренции. После тестов, мы были вынуждены признать собственную некомпетентность. Хотя от ADO не отказались: много пришлось бы переделывать, да и технология умирающая. Сервер SuperMicro тоже 4-x процессорный на Xeon'ах. Вот так то.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Vit
Дата 18.9.2003, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Ещё раз подтверждает - кажлая система имеет что-то реализованное лучще или хуже.

На моих примерах - программы сразу делались под клиент-сервер и сетевой трафик был минимален. По поводу ADO - это тоже не совсем так, там есть куча настроек и далеко не всегда вся масса данных прокачивается через сеть, хотя надо признать - частенько...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Step
Дата 22.10.2004, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



очень не рекомендую использования ОДБС для серверных решений....
в этом случае можете забыть про то что у других приложений будет сетевой трафик

из личного опыта....


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Гость_Euclid
Дата 9.12.2004, 21:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered












Разве ADO построена не на ODBC?
Как же тогда программировать в MFC?
В MFC нашел примеры DAO и ODBC причем отдельно друг от друга.
Никаких примеров MFC с ADO нет.
Неужели для ADO нужно использовать какие-то другие классы?
  Вверх
Vit
Дата 9.12.2004, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата
Разве ADO построена не на ODBC?


Нет, но имеет возможность использования ODBC драйверов

Цитата
Как же тогда программировать в MFC?


Как обычно. ADO основано на OLE DB, а OLE DB имеет совершенно стандартный OLE интерфейс, создавайте OLE объекты и работайте

Цитата
В MFC нашел примеры DAO и ODBC причем отдельно друг от друга.
Никаких примеров MFC с ADO нет.


Есть тысячи серверов OLE для которых нет примеров работы, но в том то и дело что они стандартные, ибо суть - OLE. Разбирайтесь...

Цитата
Неужели для ADO нужно использовать какие-то другие классы?


А что в MFC работа с чужими интерфейсами такая проблема?



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
batigoal
Дата 10.5.2005, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



А никто не может сказать что-нибудь насчет JDBC? Она, кажется, тоже как-то использует ODBC-технологию... Или нет?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0916 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.