Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
1 / 1 / 0
Регистрация: 09.10.2007
Сообщений: 596

ODBC-дрaйвер свoими рукaми или пoдвиг Мaтрoсoвa...

17.05.2009, 15:19. Показов 3081. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Чегo тoлькo не зaстaвят делaть беднoгo студентa зa кусoк хлебa. Прибилo вoлнoй к oднoй фирмoчке. A у них свoя бaзa дaнных. Пoдчеркивaю, свoй ФOPМAТ бaзы дaнных. Чтo-тo врoде PARADOX, кoрoче.

Зaдaчa: нужнo нaписaть ODBC-дрaйвaк к этoму делу, кoтoрый бы сoдержaл в себе SQL-мaшину. Нужнa идейнaя пoмoщь крутых пaцaнoв.

Oблoжился Ульмaнoм-Мoлинoй, дoкaми пo ODBC, всё пoнял, не пoнял кудa кoнкретнo лoшaдей пристёгивaть.

Фигня нoмер oдин: Кaк тoт же злoделaнный Jet или BDE _в_ы_д_a_е_т_ дaнные? Кoгдa я испoлняю прoстo SELECT-WHERE-FROM вырaжение - тo клaссикa и здрaвый смысл гoвoрят, чтo я мoгу прoстo мaтериaлизирoвaть тoлькo нoмерa зaписей пoсле селекции, a пoтoм пo Fetch прoвести прoекцию (выбoр стoлбцoв). Именнo тaк рaбoтaет стaрый дрaйвaк. НO! Кoгдa перехoдим нa GROUP, HAVING или дaже вычисляемые стoлбцы - выхoдит, чтo oдними нoмерaми не oдтелaться. Время Fetch'a стaнoвиться неoпределённым.

Пoлычaется нужнo мaтериaлизoвaть всё? Лaднo пoтерпим. 10 Mb в Крaнoй Aрмии нaйдутся.

НO! A если зaпрoс oбнoвляемый, тo кaк синхрoнизoвaть все мaтериaлизaции рaзных зaпрoсoв? Или я чтo-тo не дoгoняю в ODBC?
К тoму же если я мaтериaлизую ресультaты, нo не пoддерживaю курсoры, тo ODBC, кaк я дoрубил пoдержит их зa меня, нo зa счёт тoй же мaтериaлизaции. Не жирнo ли? С другoй стoрoны, если я держу курсoры, тo не зaдoлблюсь ли я синхрoнизaцией? Или прoстo скaзaть: я стaтический oптимист (пo....ист)?

Пoмoгите, брaтaны, сoветoм. У меня тут ещё вoпрoсoв дo фигa.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2009, 15:19
Ответы с готовыми решениями:

ODBC или OLE DB драйвер
Добрый день Появилась задача забирать данные в SQL Server с Postgresql базы данных Но ни OLE DB ни ODBC драйверов на официальном сайте...

OLE BD или ODBC для MS Access?
Что лучше использоваться для подключения к базе access?

Настройка ODBC или global.asa?
У меня сайт на asp писан, база данных Access 2000. При подключении до 6 пользователей работает нормально при подключении седьмого ODBC...

20
1 / 1 / 0
Регистрация: 09.10.2007
Сообщений: 596
07.09.2009, 21:29  [ТС]
Студворк — интернет-сервис помощи студентам
Наше реэлити шоу продолжается.

Я реализовал уже практически всё, что может от меня потребовать Access
в плане SQL. HAVING, GROUP BY и прочее.

Только вот нижняя ступень очень тупо работает. Строится CROSS JOIN
всех входных таблиц, а потом на этом страшноп потоке производиться вся
фильтрация. Эта глупость (ладно, по большому счёту похожая) в MS SQL
называется Nested Loop Join. Это 'последний довод короля'.

Т.е. задача по выдаче всех бизнесменов из Гондурасcкого отдела, старше 25 лет
идёт так:

Code
1
2
3
4
5
6
SELECT EMPID,NAME
FROM EMPS,DEPS
WHERE
     EMPS.DEPID = DEPS.DEPID
     AND DEPS.LOCATION = 'Гондурас'
     AND EMPS.AGE > 25
В нормальной ситуации путь должен быть совсем другой.
Отфильтровать каждую таблицу отдельно и только потом произвести Join.
Для Join тоже есть варианты. Можно Sorted-Join или Indexed-Join. С
Sorted всё и коню понятно - отсортировал два входных потока и пущай
Merge за O(n).

С Indexed в этой ситуации я не всё понимаю. За разъяснения буду
благодарен.

Вообще же применение индексов не в листовых (не в самых нижних) узлах
дерева операторов мне не ясно. По-моему это довольно не тривиальная
задача.

Code
1
2
3
SELECT * FROM T
WHERE IC1=?
ORDER BY IC2
Предположим, что IC1 и IC2 - раздельно индексированные колонки. Пусть
у IC1=? относительно высокая селективность. Возможно ли применить
второй индекс для сортировки? Интуитивно чувствую, что всё дело
зависит от селективности условия, но точно сформулироватьтрудно.

Ещё одна фигня с индексированием.
Code
1
2
SELECT ...
WHERE IC1 = ? OR C2 LIKE '...
При низкой селективности C2 нет смысла применять индексацию - всё
равно всё сожрёт пробег по неиндексированной колонке.
С другой стороны на любимом Access-ом дятловом запросе:

Code
1
2
3
SELECT ...
WHERE PK=? OR PK=? OR PK=? OR ...
-- PK - первичный ключ
индекс применить хочется, но трабл в том, что не известно
пересекаються ли отдельные сравнения. Они то понятно в данном случае
никогда не пересекаются потому, что Access передает значения именно
первичных ключей, но в общей ситуации гарантии нет.

Т.е. или писать IndexScan, который выбирает по n ключам, или
навешивать удалятеля дупликатов. Первое, вроде, симпотнее.

Наблюдение: MS SQL, похоже, не применяет разбиений на подусловия при
наличии OR.

Итак, чисто конкретный и ба-а-альшой вопрос к правильным
пацанам.
Есть WHERE условие. Оно состоит из предикатов expr cmp expr и
булевых операторов. Для подусловий вида col cmp (? | const) возможно
исполнение за O(log n), если колонка индексированная.

Ну, шо, забацаем гуртом алгоритм генерации приемлемого Access Plan для
такого условьица? Задание не срочное, за шиворот не капает.

P.S. Вопросы о моем психическом здоровье или психическом здоровье моего
шэфа не принимаются.

P.P.S. Кто-то советовал M. Papazoglou W.Valder Relational Database
Management: A Systems Programming Approach. Случайно достал у профа.
Выше данную титаническую задачу они не решают, а обходят.
Всё, что не задано в явном виде, как INNER JOIN обрабатывается тупо,
как у меня. В общем слегка устаревшая книга с описанием Megatron 2000
Professional Edition. Наша БиДе продвинутее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.09.2009, 21:29

Ошибка FireDac или драйвер ODBC?
Здравствуйте! Вот второй день бьюсь с проблемой драйвера Microsoft ODBC. Работает все через FireDac Компоненты: FDConnection + FDQuery +...

Не известен драйвер ODBC или расширение файла
Из интернета скачиваются файлы с расширением xlsx к которым установлена связь в акцессе. Если файлы просто скачать, то при открытии...

Посоветуйте пожалуйста книги или уроки по ODBC
нужны книги, или уроки. Подключение Аксес базы или SQL без разницы. Или хотя бы книги где этому есть посвящение главы.

Бд Access с ADO через Jet или ODBC
Помогите пожалуйста кто может... Тема такая: Мне нужно открыть БД Access и программно добавить таблицу... 1) Сперва я использовал при...

Подключение к MySql через MySqlConnector или ODBC
собственно схема стандартная, но ошибки подключения.. через Mysql connector через odbc connector.. 2 дня сижу ищу в чем проблема - видимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru