|
1 / 1 / 0
Регистрация: 09.10.2007
Сообщений: 596
|
|
ODBC-дрaйвер свoими рукaми или пoдвиг Мaтрoсoвa...17.05.2009, 15:19. Показов 3141. Ответов 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
|
|
| 17.05.2009, 15:19 | |
|
Ответы с готовыми решениями:
20
Настройка ODBC или global.asa? |
|
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 лет идёт так:
Отфильтровать каждую таблицу отдельно и только потом произвести Join. Для Join тоже есть варианты. Можно Sorted-Join или Indexed-Join. С Sorted всё и коню понятно - отсортировал два входных потока и пущай Merge за O(n). С Indexed в этой ситуации я не всё понимаю. За разъяснения буду благодарен. Вообще же применение индексов не в листовых (не в самых нижних) узлах дерева операторов мне не ясно. По-моему это довольно не тривиальная задача.
у IC1=? относительно высокая селективность. Возможно ли применить второй индекс для сортировки? Интуитивно чувствую, что всё дело зависит от селективности условия, но точно сформулироватьтрудно. Ещё одна фигня с индексированием.
равно всё сожрёт пробег по неиндексированной колонке. С другой стороны на любимом Access-ом дятловом запросе:
пересекаються ли отдельные сравнения. Они то понятно в данном случае никогда не пересекаются потому, что 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
|
|||||||||||||||||||||
| 07.09.2009, 21:29 | |
|
Ошибка FireDac или драйвер ODBC? Не известен драйвер ODBC или расширение файла Посоветуйте пожалуйста книги или уроки по ODBC Бд Access с ADO через Jet или ODBC Подключение к MySql через MySqlConnector или ODBC Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|