Вопрос

Я пытаюсь обновить устаревшее приложение, в котором все данные хранятся во взломанной системе файлов BDE Paradox.Программа работает довольно хорошо в определенных узких условиях, но у нее есть серьезные проблемы с производительностью.

Я хотел бы попытаться улучшить ситуацию, обновив систему баз данных до более совершенной.Что мне нужно, так это локальная база данных, желательно такая, где я могу хранить все это в одном файле вместо текущей системы «один или несколько файлов на таблицу».Он должен поддерживать отношения внешнего ключа и индексацию таблиц, а также иметь возможность быстро возвращать результат по запросу таблицы с сотнями тысяч элементов.

Последнее важно.Текущая система индексируется, но это, похоже, не имеет большого значения.Кажется, что все запросы выполняются за время O(N), где N — общий размер таблицы, и он становится ужасно медленным, когда таблицы начинают становиться большими.Я не совсем понимаю почему, но это должно уйти.

И он должен работать под D2009 и новее.Может ли кто-нибудь дать некоторые рекомендации?

Это было полезно?

Решение

Еще один голос за встроенный Firebird (и Firebird в целом)!

у меня только что был потрясающий опыт переноса приложения Interbase 6.0 на встроенный Firebird 1.5;после недолгого чтения документации фактическое преобразование заняло буквально 20 минут, и теперь мое приложение успешно работает в Vista и Windows 7.Если вам не нужна многопользовательская поддержка, я бы серьезно посмотрел на встроенный Firebird (а если вам нужна многопользовательская поддержка, то почему бы все равно не посмотреть на обычный Firebird).

Это один файл для базы данных и пара небольших DLL для движка, и его легко развертывать, обслуживать и создавать резервные копии.Существует множество инструментов, которые помогут во время разработки, а техническая поддержка IB и Firebird в сообществе Delphi не имеет себе равных.

Поддержка SQL превосходна с ограничениями, триггерами и хранимыми процедурами (у нас также есть UDF, помогающие расширить язык — библиотеки DLL, которые можно написать на Delphi и использовать в качестве встроенных функций и т. д. в вашей базе данных).Очень быстро, очень гибко).

Ваше последнее замечание по поводу производительности - ну, в любом случае Interbase всегда был довольно быстрым, и мой опыт работы со встроенным Firebird до сих пор показывает, что он "кричит" - действительно, очень впечатляет.

Другие советы

я использовал это SQLite-оболочка с хорошим успехом под D2009.Я запустил его и запустил за считанные минуты.Он имеет индексацию и очень низкие накладные расходы.(Это бесплатно, и вам больше ничего не нужно, кроме SQLite Dll)

Существует также коммерческая оболочка SQLite от Делфи Вдохновение и на сайте написано, что у них также есть бесплатная лицензия для некоммерческого и образовательного использования.Я не использовал этот.

Я также использовал встроенный Firebird, но для связи с ним вам также понадобятся компоненты подключения.У меня есть IBObjects, и я использую его как для серверной, так и для встроенной версии.Я пробовал другие бесплатные компоненты базы данных Firebird, но не нашел ни одного, который бы мне понравился или в котором я был бы уверен.

[РЕДАКТИРОВАТЬ]
Поскольку большинство людей рекомендуют Firebird, вот некоторые компоненты подключения для Firebird, которые я пробовал раньше или о которых слышал:

Объекты базы данных Mercury - Бесплатно/с открытым исходным кодом
IBобъекты - Коммерческий (я сам купил такой)
ФИБПлюс - Коммерческий
Драйвер ODBC Firebirds - Бесплатно/с открытым исходным кодом
Зеослиб - Бесплатно/с открытым исходным кодом

Есть некоторая хорошая информация доступна в этот вопрос - SQLite3 и Firebird Embedded кажутся хорошими вариантами.

Параллелизм?

Я использовал SQLite в одном проекте (не на Delphi) и был им очень доволен.

В противном случае, я думаю, что для Delphi лучше всего подойдет встроенная однофайловая СУБД — Firebird.

Попробуйте базу данных Advantage, предлагаемую Sybase (приобретенную у Extended Systems).

http://marketing.ianywhere.com/forms/ADS91-30-Day

Это бесплатно, если вам не нужны функции клиента/сервера или Интернета.

Обратной стороной является то, что это не 100% VCL, поэтому VCL включает статические ссылки на библиотеки DLL.

Если приложению когда-либо потребуется масштабирование, вам больше не придется менять базы данных.

Я бы порекомендовал использовать Postgresql в качестве базы данных, мы используем его во всех проектах, с которыми работаем, и протестировали его с более чем 4 миллионами записей в одной таблице, и он работал очень хорошо.

Другой вариант — использовать ADO и базу данных доступа Microsoft.Единственным недостатком является то, что пользователю необходимо установить двигатель Jet и MDAC...что делает большинство машин.Преимущество этого подхода в том, что он упрощает переход на MSSQL.Просто измените строку подключения, чтобы она указывала на базу данных SQL Server, и внесите несколько незначительных изменений в запрос.

я использовал НексусДБ в течение многих лет, и это небольшая, надежная и гибкая база данных.Он написан на Delphi, поставляется с полным исходным кодом и может быть полностью скомпилирован в ваше приложение (без необходимости распространения DLL) или запускаться как система клиент-сервер.

Трудно сказать, будет ли он соответствовать вашим требованиям к производительности, но у меня не было проблем с производительностью SQL-запросов, если я индексировал правильные поля.Это один файл на таблицу, но пусть это не помешает вам взглянуть.

Это коммерческий продукт, но они предлагают версию только для DCU, которую можно бесплатно использовать только в однопользовательских/встроенных приложениях.

Я работаю над завершением преобразования большого приложения, которое использовало BDE/Paradox для локальной базы данных и Oracle 8i для удаленной базы данных.

Я использую UniDAC от DevArt.Это позволяет мне использовать один набор компонентов (полностью свободный от старого BDE), который может работать с MSSQLServer как с локальной базой данных и продолжать работать с Oracle как с моим удаленным компьютером.Теперь у меня есть возможность гораздо проще переключать базы данных на обоих концах, просто сменив поставщика.

Мне нравится этот подход, и компоненты кажутся довольно хорошо сделанными.

Сойка (Д2007)

Postgresql очень хорош, но это тяжелая машина, она ближе к Oracle, поэтому вы можете создавать очень тяжелые приложения, но поддерживать их немного сложно.

Firebird фантастически встраивается или нет для подключения в 2009 году вы можете использовать FIB plus, начиная с devrace.com у них есть пробная версия, которая просто показывает надоедливый экран, поэтому, если это не коммерческое приложение, все в порядке.

В противном случае, если это коммерческое приложение, вы можете потратить 300 $ и купить его, я также использовал компоненты devart для interbase/firebird, и они тоже очень хороши Если вы хотите бесплатно, используйте Zeos, но вы получаете то, за что платите http://sourceforge.net/projects/zeoslib/SQL lite — это не один файл, и если он многопользовательский, это отстой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top