Какую встроенную базу данных использовать в приложении Delphi? - PullRequest
38 голосов
/ 21 октября 2008

Я создаю настольное приложение в Delphi и планирую использовать встроенную базу данных. Я начал проект, используя SQlite3 с библиотекой DISQLite3. Это работает, но документация кажется немного легкой. Недавно я обнаружил Firebird (да, у меня какое-то время не было Windows), и, похоже, у него есть некоторые интересные функции и поддержка.

Каковы некоторые плюсы и минусы каждого встроенного БД? Размер важен так же как поддержка и ресурсы. Что ты использовал и почему?

Ответы [ 29 ]

3 голосов
/ 22 октября 2008

Посмотрите на NexusDB. Использовали очень успешно в прошлом.

3 голосов
/ 22 октября 2008

Проблема с (встроенным) firebird заключается в том, что база данных не может находиться на сетевом диске. Кроме того, трудно иметь базу данных на приводе только для чтения (CD / DVD).

Для ознакомления с этими ограничениями, смотрите Delphi Wiki: http://delphi.wikia.com/wiki/Firebird_tipps

3 голосов
/ 29 октября 2008

NexusDB предлагает полный спектр от встроенного до полного клиент / сервер / удаленный. Кроме того, я считаю, что совместим с SQL2003. Я использую его в нескольких проектах, и мне очень приятно, и тот факт, что он может работать в таком широком диапазоне «масштабов», является большим плюсом (отсутствие необходимости изучать другую БД для масштабируемых приложений и т.д.).

3 голосов
/ 10 марта 2011

Посмотрите на это сравнение встроенной базы данных: http://sql -db.cz.cc / , это может быть полезно. Здесь представлено большинство вышеупомянутых продуктов: Advantage, DBISAM, Firebird, MS SQL Server и многое другое: Accuracer, Apollo, ElevateDB, NexusDB, TurboDB.

2 голосов
/ 13 сентября 2014

Я знаю, что доступ к MS - это сравнительно дерьмо (и я ожидаю, что его здесь застрелят), но если нужны только небольшие данные, это может иметь преимущества, если в любом случае используется MS Office. Для меня это был способ хранить данные программы с большей гибкостью, чем файлы CSV, что является общим подходом для научного кода.

Вы можете создать базу данных доступа из кода Delphi, не устанавливая MS Office, используя драйвер ado & odbc (может потребоваться исходный файл .accdb без таблиц, из которых можно скопировать данные, а затем заполнить их, я не могу вспомнить эту деталь. это делает ситуация с лицензированием.

Расширение .accdb может быть изменено на что-то другое, а также защищено паролем файла (в ограниченной степени), поэтому для пользователей не сразу очевиден его доступ, если это необходимо. Я знаю, что несколько коммерческих разработчиков делают этот метод и копируют его самостоятельно. Мне было проще настроить, чем sqlite, но, возможно, потому, что я уже использовал ado & access в прошлом.

2 голосов
/ 21 октября 2008

Я неравнодушен к Абсолютной БД Компонента Эйса. Хотя это коммерческий продукт ($), он прочный, простой в использовании, компактен и хорошо документирован. Если вы ищете огромное многопользовательское приложение, это не тот путь, но если ваши многопользовательские потребности невелики (или вообще отсутствуют), это хороший вариант.

2 голосов
/ 22 октября 2008

Я использую SQL Server Express и компоненты ADO. Работает отлично. Вы можете запустить установку SQL Server Express из командной строки, чтобы скрыть сложности от пользователей. Вы также можете распространять базу данных, которую вы загружаете по имени файла. Существуют миллионы пользователей SQL-серверов, поэтому решения любых проблем можно легко найти в промежутках:

2 голосов
/ 22 октября 2008

Я выполнил веб-поиск, чтобы найти быстрый пакет базы данных для моего приложения Delphi. Я хотел, чтобы он полностью содержался в исполняемом файле без каких-либо внешних DLL или библиотек. Первоначально я нашел Accuracer от AidAim. Они опубликовали скорость своей базы данных и даже сравнили с другими подобными пакетами, чтобы «доказать» свою точку зрения.

Я хотел верить их заявлениям, но подумал, что я буду искать в Интернете немного больше, чтобы найти время других пакетов. Я был очень удивлен, обнаружив пост на форумах Delphi , где человек спросил, какую базу данных использовать, и было 14 разных предложений. Один из респондентов провел свои собственные сравнения времени и обнаружил, что Accuracer довольно медленный по сравнению с несколькими другими, которые Accuracer (удобно) пропустил из своей собственной страницы сравнения.

Пост, а также дополнительные исследования, проведенные мной, заставили меня склониться к DISQLite3 , продукту на основе программы с открытым исходным кодом SQLite , но с улучшениями для работы в Delphi. очень быстро, с очень маленькими издержками и с вызовами на основе команд - что мне нравится. Он активно разрабатывается и скоро будет иметь официальную версию Delphi 2009, хотя, по-видимому, текущая версия будет работать под D2009.

Addenum: DISQLite3 Версия 2.0.0, выпущенная 17 ноября, поддерживает D2009.

1 голос
/ 31 декабря 2008

Встраиваемый Firebird - наш выбор №1. И комплект Unified Interbase v2.0 с ним Отличное и стабильное решение!

1 голос
/ 10 ноября 2008

Я использовал DBISAM и kbMemTable в разных случаях.

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

Это довольно большой размер по сравнению с компонентами на основе kbMemTable или SQLite. И вы не можете иметь один файл на базу данных (или даже таблицу) - в зависимости от ситуации это является серьезным недостатком.

kbMemTable крошечный и отлично подходит для небольших объемов данных. Поскольку он работает в памяти, он, конечно, должен быть небольшим объемом данных.

Еще один вариант, который я выбрал для нескольких своих настольных приложений, - это выгрузка данных напрямую из / в мою иерархию объектов с использованием TWriter / TReader. Это, безусловно, самый маленький вариант, и он абсурдно быстр по сравнению с использованием базы данных. Файлы данных тоже крошечные.

Однако у него есть все виды недостатков - вам придется кодировать версии, если вы захотите когда-либо добавить / изменить поля, если только они не находятся в памяти, они еще более сложны, никакой многопользовательской поддержки вообще и т. Д.

...