Ищем локальную базу данных для D2009+ [закрыто]
-
11-09-2019 - |
Вопрос
Я пытаюсь обновить устаревшее приложение, в котором все данные хранятся во взломанной системе файлов 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 — это не один файл, и если он многопользовательский, это отстой.