Ищу локальную базу данных для D2009 +

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

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

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

И он должен работать под D2009 и позже. Кто-нибудь может дать несколько рекомендаций?


person Mason Wheeler    schedule 02.12.2009    source источник


Ответы (10)


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

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

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

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

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

person robsoft    schedule 03.12.2009

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

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

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

[EDIT]
Поскольку большинство людей предлагают Firebird, вот некоторые компоненты подключения для Firebird, которые я пробовал в прошлом или о которых слышал:

Объекты базы данных Mercury - бесплатно / с открытым исходным кодом
IBObjects - коммерческий (я купил его сам)
FIBPlus - коммерческий
Драйвер ODBC Firebirds - бесплатно / с открытым исходным кодом
ZeosLib - бесплатно / Открытый источник

person Vivian Mills    schedule 02.12.2009
comment
Использовал как SQLite, так и Firebird. Нашел SQLite лучший вариант - person ; 03.12.2009
comment
+1 Ох, интересный список, спасибо. Я использовал IBX с Interbase и Firebird, хотя это был D7, а не D2009. Если IBX недоступен для 2009/2010, я бы, вероятно, использовал FIBPlus (мы купили лицензию, но на самом деле никогда не использовали ее) или я бы поискал достойный драйвер DBXPress, как и все остальные мои вещи (SQL Server, в основном) выполняется с использованием DBXPress, и в целом он не отличается / не отличается от IBX для базовых вещей. - person robsoft; 03.12.2009
comment
Еще одна библиотека - AnyDAC (anydac.net). Имеет собственные драйверы Firebird и SQLite. - person oodesigner; 11.07.2010

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

person Greg Campbell    schedule 02.12.2009

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

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

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

person Larry Lustig    schedule 02.12.2009

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

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

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

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

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

person Matt    schedule 02.12.2009

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

person delphigeist    schedule 02.12.2009

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

person skamradt    schedule 02.12.2009

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

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

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

person LachlanG    schedule 02.12.2009

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

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

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

Джей (D2007)

person Jay Faubion    schedule 04.12.2009

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

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

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

person Philippe Watel    schedule 03.12.2009