|
|
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Как Вы считаете, что лучше использовать (с точки зрения производительности) ODBC (а именно классы MFC для работы с ним) или же ADO. Какие плюсы и минусы у обеих технологий? Каково Ваше мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 00:16 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
ODBC конечно. Очень просто, легко, быстро и вообще сплошное удобство, но только в том случае если посылаешь лесом все оберточные ОО библиотеки. Если хочешь писать с классами на С++ - бери ADO или OLE DB. ADO чуть лучше потому что ADO есть и под другие языки, а OLE DB - только С++, но OLE DB для C++ роднее :) MFC обертка для ODBC - ни в коем случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 02:33 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
White Owl MFC обертка для ODBC - ни в коем случае. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 12:08 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
nikname White Owl MFC обертка для ODBC - ни в коем случае. Почему?Слишком много глюков, слишком мало документации. Намного лучше и проще сделать свою собственную обертку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 18:06 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
White OwlСлишком много глюков, слишком мало документации. Намного лучше и проще сделать свою собственную обертку. Как-то неподробно, откровенно говоря. Я пока на глюки не нарвался. Интересно было бы что-то узнать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 18:27 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
Глюки есть. Вот например глюк с получением данных из поля MEMO с помощью функции GetFieldValue, если там содержаться UNICODE данные. Вылазят сполшные кракозябры. Также еще есть проблема описанная в следующем топике ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 19:59 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
Я так понял ODBC работает быстрее ADO? Я к сожалению сейчас не могу позволить себе писать обвертку - не хватает знаний, а времени и совсем нет. И все же, что будет работать быстрее ADO или MFC обвертка для ODBC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 20:01 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
А что вы понимаете под быстрее ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 20:17 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
HomosumЯ так понял ODBC работает быстрее ADO?Если вспомнить про то, что ADO это всего-лишь уже скомпилированая обертка над ODBC или OLE DB драйверами (по выбору программиста) то ответ становится очевидным :) HomosumИ все же, что будет работать быстрее ADO или MFC обвертка для ODBC?Ну "быстрее" в этом случае не очень имеет значение. Основное время будет тратиться на обработку запроса сервером, а потом выкачивание по сети результата запроса. Складировние результата в память по сравнению с этим уже ничего не значит. Но то что ADO намного более умное, удобное и вылизаное это факт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 20:50 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
ODBC нерекомендованная компанией Микрософт и поддерживается только из-за совместимости. ADO - родная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 22:56 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
LepsikODBC нерекомендованная компанией Микрософт и поддерживается только из-за совместимости. ADO - роднаяА покажь где оно не рекомендовано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 23:41 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
ODBC Provider (MSDASQL) The Microsoft Open Database Connectivity (ODBC) Provider is deprecated in Windows Vista, and you are strongly encouraged to use one of the native OLE DB Providers instead. Native OLE DB Providers provide better application stability and performance. Moreover, native OLE DB Providers will be supported in the future, whereas MSDASQL will not have any new features added to it, will not be available on 64-bit, and will not be accessible from the OLE DB NET Data Provider. там много чего деприкатед. http://msdn2.microsoft.com/en-us/library/ms692882.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 04:59 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
White OwlADO это всего-лишь уже скомпилированая обертка над ODBC вас кто-то серьезно обманул - посмотрите дерево провайдеров на сайте microsoft. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 05:01 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
nikname White Owl MFC обертка для ODBC - ни в коем случае. Почему? потому, что обращение к БД в ЭМФЭЦЭ реализовано не плохо, а очень плохо. Для приложений типа хэллоу мир - покатит. А если что нить серьёзное, под серьёзный движок с длиной запроса в сикволе пару десятков тыщ байт и несколько десятков таблиц (и всё это в лёт на рантайме генериться) - не прокатит... более того, грамотно написанные свои класики (там всего то 2-3 штучки) удобнее юзать... например... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. и т.д... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 14:09 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
Вы меня простите, круглый, но я с вами категорически несогласный. Используя библиотеку от Rogue Wave - Objective Grid и просто работая с БД достаточно активно, я ни разу не нарвался на глюки от MS и от ODBC. Все ошибки были мои. Я согласный с тем, что MS - must die и что там халявщики, я согласный, что все, кроме меня - идиоты, но долгий опыт разработки приучил меня к тому, что только 1% или меньше ошибок - не мои. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 17:09 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
Автор не указал, с какой конкретно СУБД он собирается работать. Для каждой БД существующие драйвера имеют очень разную степень глючности, так что универсального рецепта нет. Если исходить из того, что ОДБЦ дравер не глючен и отлажен, то мой выбор конкретно за ОО обертку поверх ОДБЦ. Какое-то время назад я переходил с Борланд билдера на VC2003 и так-же как и автор искал для себя удобный способ работы с БД, такой-же удобный с точки зрения классов и удобства использования как и VCL. Основной каприз - ничего не хочу знать о хендлах, буферах и еще чего-то там низкоуровневом.. Чистый ОДБЦ - отпал, т.к чистый Си и надо писать свою С++ надстройку. Так-же как и автора топика у меня небыло ни времени ни желания заниматься этим самому. Хороших С++ ОО библиотеки мне тогда найти не удалось (правда позже оказалось, что существует очень проработанная C++ ОО библиотека). Пробовал АДО. Купился - что это типа объетная либа и возможно ее будет удобно использовать.. На самом деле это АктивХ, который студия своими средствами (#import) импортирует в проект как библиотеку. Так-же в МСДН большинство хелпов по АДО - на бейсике и портировать красоты использования АктивХ с бейсика на С++ не так тривиально. Во вторых - объем кода, или вернее кол-во умных буковок которых нужно написать для открытие БД, вызова хранимой процедуры и обработки полученного набора данных превышал пределы желаемого намного. Т.е почти то-же что и ОДБЦ, но с другой стороны - АктивХ. Если хотите - могу заслать простейший проект, который вызывает одну ХП и выводит результаты ее работы - удовольствия от кода очень мало.. Так я пришел к QT. В общем это и есть объектная прослойка над ОДБЦ или родными библиотеками работы с БД. По правде говоря в реализации классов для работы с нативными библиотеками доступа к БД есть засады. Например при работе с firebird поддредживаются БД в юникод кодировке, т.е конвертить резльтаты юникод-строка БД надо самому.. Обертка над ОДБЦ меня вполне устраивает. Код работы с БД прост, понятен и очень внешне напоминает VCL. Упрощенно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 18:28 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
niknameВы меня простите, круглый, но я с вами категорически несогласный. Используя библиотеку от Rogue Wave - Objective Grid и просто работая с БД достаточно активно, я ни разу не нарвался на глюки от MS и от ODBC. Все ошибки были мои. Я согласный с тем, что MS - must die и что там халявщики, я согласный, что все, кроме меня - идиоты, но долгий опыт разработки приучил меня к тому, что только 1% или меньше ошибок - не мои. честно говоря я про глюки и не глаголил дух противоречия ? Не говорил я про них - не потому, что не нарывался, а на вскидку щаз и не вспомню... я сказал про большой обмен с бд, большие сиквол запросы, большие по инвариантности ответы...в принцепе это чиссо моё мнение, основано на опыте. и личное наблюдение на этом форуме укрепляет данную кочку зрения. Посему Ваше заявление уважаю, как Ваш взгляд на весчи...Но не более... по поводу мастдая - простите, это не мой лексикон... и если это щаз так принято хаять милкософт - то это не ко мне.. То, что плюсы - лично готов говорить о плюсах..Если есть минусы - готов лично говорить о минусах...Так, что не по адрессу.. удачи Вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 18:30 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
Извините, я думал, что большие запросы - ответственность программиста, а не ODBC. Равно как и большой трафик. Про трафик - вообще не понятно, вы хотите сказать, что при использовании ODBC трафик больше, чем при использовании ADO или что-то ещё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 19:05 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
LepsikODBC Provider (MSDASQL) The Microsoft Open Database Connectivity (ODBC) Provider is deprecated in Windows Vista, and you are strongly encouraged to use one of the native OLE DB Providers instead. Native OLE DB Providers provide better application stability and performance. Moreover, native OLE DB Providers will be supported in the future, whereas MSDASQL will not have any new features added to it, will not be available on 64-bit, and will not be accessible from the OLE DB NET Data Provider. там много чего деприкатед. http://msdn2.microsoft.com/en-us/library/ms692882.aspxТак там написано что MSDASQL признан устаревшим. Не ODBC, а MSDASQL! Не технология в целом, а один единственный драйвер поддерживающий эту технологию и реализующий прозрачный доступ к различным фактическим драйверам. Сейчас реализуя коннект на ADO достаточно написать: ADOConnect->ConnectionString = "DSN=something;UID=user;PWD=password" И все. Уже можно коннектится, ADO по умолчанию попытается работать запустить драйвер коннекта к бд реализованый по ODBC технологии. Опять же, по умолчанию ADOConnect будет работать через MSDASQL. MSDASQL, получит строку с DSN, прочитает этот DSN, вытащит оттуда имя физического драйвера (который поставляется производителем базы данных) и передаст все управление ему. После этого MSDASQL выключается. Если в Vista этот драйвер убирают, то теперь при коннекте через ADO надо будет обязательно использовать ключевое слово Provider в котором указывать какого типа драйвер надо использовать для фактического коннекта. Lepsik White OwlADO это всего-лишь уже скомпилированая обертка над ODBC вас кто-то серьезно обманул - посмотрите дерево провайдеров на сайте microsoft. Дерево провайдеров это дерево провайдеров. А в данном вопросе надо сначала смотреть на список драйверов, потом уже на дерево провайдеров. Какая физическая dll содержит в себе функции которые открывают TCP/IP сокеты и отсылает SQL запрос на сервер? По какой технологии сделана эта dll? Я имею на руках такие dll сделаные по технологиям ODBC (процедурный интерфейс для общения с БД) и OLE DB (объектно-сиплюсплюсный интерфейс для общения с БД). Для ADO я такой dll ни разу не видел. Все ADO коннекты делают вызовы к физическим драйверам сделаным по ODBC или OLE DB принципам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 20:42 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
niknameИзвините, я думал, что большие запросы - ответственность программиста, а не ODBC. Равно как и большой трафик. Про трафик - вообще не понятно, вы хотите сказать, что при использовании ODBC трафик больше, чем при использовании ADO или что-то ещё?Колобок говорил про MFC обертку для ODBC. А не про чистые интерфейсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 20:44 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
Ну и МФС обёртку хорошо бы сравнить с чьей-то. Иначе как-то абстрактно очень. Ясно, что можно сравнить, скажем, со специализированным классом, нацеленным на одну специфическую таблицу. Но ведь это будет неаккуратнеько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 21:14 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
niknameНу и МФС обёртку хорошо бы сравнить с чьей-то. Иначе как-то абстрактно очень. Ясно, что можно сравнить, скажем, со специализированным классом, нацеленным на одну специфическую таблицу. Но ведь это будет неаккуратнеько.Читай что писал Ggg_old... Мой личный выбор из всего многообразия оберток как не трудно догадаться - все в топку! :) Лично я предпочитаю работать с чистым ODBC, на языках в которых до ODBC напрямую достучаться сложно (в том же VB например) использую ADO. А на C или C++ чистый ODBC без оборачивания его в классы вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 21:33 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
Я собираюсь писать приложения для работы с нейронными сетями (научная работа), а там очень много итераций и много обращений к базе данных. Поэтому и встал вопрос о выборе технологии. Важны даже миллисекунды. Насчет базы данных еще точно не решил. Наверно для начала буду использовать MS Access и если получу результаты, то надо будет переходить на что либо более серьезное. Поэтому и важно, чтобы технология одинаково хорошо работала с любой базой данных или хотя бы с самыми распространенными. И разумеется вопрос поддержки данной технологии в дальнейшем тоже очень интересует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 00:53 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
Homosumтам очень много итераций и много обращений к базе данных. Поэтому и встал вопрос о выборе технологии. Важны даже миллисекунды.эээээ.... эта.... как бы сказать чтоб не обидеть... читай внимательнее: "Основное время будет тратиться на обработку запроса сервером, а потом выкачивание по сети результата запроса. Складирование результата в память по сравнению с этим уже ничего не значит." Ты никогда не получишь ответа от БД через миллисекунду. Неважно какой интерфейс доступа к БД будет. Интерфейс - ничто. У тебя есть два больших тормоза - сама база данных и сеть. Не важно что ты выберешь в качестве интерфейса. Важно что ты выберешь в качестве сервера для базы данных и какой мощности компьютер отдашь под базу данных. И какой у этого компьютера будет дисковый массив. Какая разница какую долю секунды твоя программа тратит чтобы положить циферку в память если эта самая цифрека прийдет к тебе из БД через час после запроса? Сделай сначала скоростную базу данных, потом уже будешь об интерфейсе задумываться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 01:45 |
|
||
|
ODBC или ADO? Что лучше? Как вы думаете?
|
|||
|---|---|---|---|
|
#18+
White Owl Homosumтам очень много итераций и много обращений к базе данных. Поэтому и встал вопрос о выборе технологии. Важны даже миллисекунды.эээээ.... эта.... как бы сказать чтоб не обидеть... читай внимательнее: "Основное время будет тратиться на обработку запроса сервером, а потом выкачивание по сети результата запроса. Складирование результата в память по сравнению с этим уже ничего не значит." Ты никогда не получишь ответа от БД через миллисекунду. Неважно какой интерфейс доступа к БД будет. Интерфейс - ничто. У тебя есть два больших тормоза - сама база данных и сеть. Не важно что ты выберешь в качестве интерфейса. Важно что ты выберешь в качестве сервера для базы данных и какой мощности компьютер отдашь под базу данных. И какой у этого компьютера будет дисковый массив. Какая разница какую долю секунды твоя программа тратит чтобы положить циферку в память если эта самая цифрека прийдет к тебе из БД через час после запроса? Сделай сначала скоростную базу данных, потом уже будешь об интерфейсе задумываться. Я с вами полностью согласен, но в моей научной работе есть важный момент - очень обширная нейронная сеть со сложной топологией. Просто невозможно будет загрузить всю информацию в память. Причем сразу не известно какой кусок нейронной сети (какое ядро) может понадобиться в тот или иной момент. Поэтому обращение к базе данных будет очень интенсивным. А теперь еще один вопрос. Может поможете советом, какую базу данных лучше выбрать в качестве сервера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 11:01 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=304&tid=2029266]: |
0ms |
get settings: |
7ms |
get forum list: |
26ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
80ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 377ms |

| 0 / 0 |
