Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / посоветуйте нормальный драйер для работы с DBF файлами / 12 сообщений из 12, страница 1 из 1
18.07.2008, 12:47
    #35439016
zloyGamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
программа работает с огромным файлом (>2млн. записей)
проблема в том что запросы выполняются невероятно долго

проверял некоторые драйвера на относительно небольшом файлике (около 100тыс. записей)
простым запросом "SELECT * FROM test_tb WHERE field1>100;"
результат:
ODBC (вроде как стандартный драйвер) - время: 14 - 15 сек.
Microsoft.Jet.OLEDB.4.0 - время: 12 - 13 сек.
VisualFoxProOLEDB driver - время: 4.5 - 5 сек.
BDE - 12.5 сек., (но над сказать иногда приятно радует и некоторые запросы выполняет быстрее предыдущего)
PS: такие результаты пол-ны на машине:AMDathlon 1000, 256mbRAM;

вообщем такие тормоза не приемлимы(+ у некоторых пользователей машины послабее будут),
посоветуйте пожалуйста нормальный дравер для dbf файлов
как ещё можно оптимизировать работу с такими огромными файлами?
(советы разбить на несколько мелких не предлагать)

PSS: пишу на Borland'e6м использую для проверки исп-л АДО;
...
Рейтинг: 0 / 0
18.07.2008, 12:49
    #35439029
another-anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
Научиться использовать современные СУБД вроде Firebird?
...
Рейтинг: 0 / 0
18.07.2008, 12:56
    #35439069
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
а как насчет индексов?
...
Рейтинг: 0 / 0
18.07.2008, 13:14
    #35439146
zloyGamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
немогу использовать индексы в запросах,
они(индексы) есть, но созданы в foxPro2.0, и как их использовать не представляю

тока компоненты TTable могут это вытворять,
а мне нужно выполнять запросы.
...
Рейтинг: 0 / 0
18.07.2008, 13:52
    #35439302
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
zloyGamerнемогу использовать индексы в запросах,
они(индексы) есть, но созданы в foxPro2.0, и как их использовать не представляю

тока компоненты TTable могут это вытворять,
а мне нужно выполнять запросы.
перенеси все в СУБД или хотябы пересоздай этот файл с индексами которые поддерживаются (или чего там нужно, я DBF не использую, поэтому не в курсе)
...
Рейтинг: 0 / 0
18.07.2008, 14:17
    #35439423
zloyGamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
another-anonymousНаучиться использовать современные СУБД вроде Firebird? barrabasперенеси все в СУБД переносить все в СУБД нельзя т.к. основная работа(о которой я пока ничего не знаю) с данными идет в другой программе(которую я тоже не знаю), все что есть это данные в DBF формате, из которых иногда нужно составить отчеты.

каждый раз перебрасывать данные из DBF в СУБД для нескольких отчетов, очень сомнительная идея.

barrabasпересоздай этот файл с индексами которые поддерживаются
не знаю как создать индекс, и не знаю как его использовать
ведь только в компоненте TTable в билдере - можно явно его указать.
...
Рейтинг: 0 / 0
18.07.2008, 17:55
    #35440192
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
zloyGamerкаждый раз перебрасывать данные из DBF в СУБД для нескольких отчетов, очень сомнительная идея. Вовсе не сомнительная. У меня несколько лет так базы жили. Филиалы работали в старой программе, присылали ежевечерне свои гигабайтные dbf, за ночь мой робот загонял их в СУБД. Днем офисный персонал делал отчеты на основе СУБД. Все жило просто замечательно.

zloyGamerне знаю как создать индекс, и не знаю как его использовать
ведь только в компоненте TTable в билдере - можно явно его указать.Пиши на FoxPro. Или копируй данные в СУБД.
...
Рейтинг: 0 / 0
19.07.2008, 01:27
    #35440519
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
Судя по результатам тестов, запрос выполняется в среднем 12-13 секунд. Возможно всё это время пожирает fullscan таблицы. Я-бы посоветовал немножко изменить постановку.

Если из 2 млн записей выбирается небольшой процент записей (до 7%) то можно индексировать и выполнить поиск стандартными средствами.

Если их гораздо больше, то лучше создать некую иллюзию секционирования или разделения таблицы на подтаблицы. Как вариант, во время формирования DBF-ника генерить две таблицы. Одну - полную, вторую по предикату WHERE field1>100.

Можно использовать особенности физической организации DBF-ника. Тоесть при выгрузке сделать ORDER BY field1 и получить монотонную таблицу. Парсить её надо будет низкоуровневыми библиотеками с условием выхода из цикла.

Резкое повышение производительности на драйвере FoxPro я не могу объяснить. Возможно тут действует какой-то хитрый индекс. Ну в этом случае вы можете его смело брать и не парится сравнением с другими.
...
Рейтинг: 0 / 0
19.07.2008, 10:14
    #35440593
Гы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
mayton
Резкое повышение производительности на драйвере FoxPro я не могу объяснить. Возможно тут действует какой-то хитрый индекс. Ну в этом случае вы можете его смело брать и не парится сравнением с другими.

Rushmore
...
Рейтинг: 0 / 0
19.07.2008, 11:00
    #35440627
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
ГыRushmore
Ага. Верно.
...
Рейтинг: 0 / 0
24.07.2008, 01:01
    #35448446
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
Если критична скорость, то придется разработать проект в Фоксе.
Я думаю, для пользователей внешний вид приложения практически не изменится.
А уж Рашмор-оптимизация для DBF в ФоксПро тебе поможет...
Вот только с запросами там (при оптимизации) есть ограничения.

Если же так делать нет ни возможности, ни желания - то только перегонять
базы в другой формат. Впрочем, как известно, standalone-приложение на
Borland'e для работы с БД - не лучший по эффективности вариант...
...
Рейтинг: 0 / 0
28.07.2008, 15:04
    #35455534
usc.urich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте нормальный драйер для работы с DBF файлами
zloyGamer another-anonymousНаучиться использовать современные СУБД вроде Firebird? barrabasперенеси все в СУБД переносить все в СУБД нельзя т.к. основная работа(о которой я пока ничего не знаю) с данными идет в другой программе(которую я тоже не знаю), все что есть это данные в DBF формате, из которых иногда нужно составить отчеты.

каждый раз перебрасывать данные из DBF в СУБД для нескольких отчетов, очень сомнительная идея.

barrabasпересоздай этот файл с индексами которые поддерживаются
не знаю как создать индекс, и не знаю как его использовать
ведь только в компоненте TTable в билдере - можно явно его указать.

Проблема почти аналогична, мучаюсь давно, выход так и нет:(
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / посоветуйте нормальный драйер для работы с DBF файлами / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]