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

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

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

Ответы [ 29 ]

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

Я использую Firebird 2.1 Embedded, и я вполне доволен этим. Мне нравится тот факт, что размер базы данных практически неограничен (протестировано с базами данных> 4 ГБ и работает) и что файл базы данных совместим с Сервер Firebird, поэтому я могу использовать стандартные инструменты для управления базами данных и проверки. Распространение состоит из удаления нескольких файлов в вашей папке exe.

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

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

Я использовал SQlite3 для многих проектов (но из C / C ++ и Objective-C). Она очень мала - никаких зависимостей - база данных находится в одном файле.

Это база данных для разработчиков Mac, потому что она напрямую поддерживается CoreData и на iPhone - поэтому существует большая база пользователей (не говоря уже о всех других пользователях).

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

Я использую SQLite (через DISQLite3) в FeedDemon в течение нескольких месяцев, и я настоятельно рекомендую его - он был чрезвычайно быстрым и стабильным. Как сказал Хавьер, документы для библиотеки могут быть тонкими, но документы для самого SQLite очень хороши.

14 голосов
/ 04 декабря 2008

Посмотрим, быстрое сравнение:

SQLite:

  • динамический набор в базе данных
  • кроссплатформенные файлы
  • работает на Windows, Linux, Mac и т. Д.
  • общественное достояние
  • поддерживает транзакции
  • полагается на безопасность файловой системы, не включает собственную безопасность

Встроенный Firebird:

  • строгая типизация в базе данных
    • поддерживаются не все типы данных SQL
  • кроссплатформенные файлы
    • Встроенный Firebird работает только на Windows
    • Файлы из встроенного Firebird имеют тот же формат, что и полная версия сервера
    • Файлы из встроенного Firebird можно скопировать на сервер, отличный от Windows, для использования
  • доступно в соответствии с измененным MPL («то, что наше, наше и должно оставаться бесплатным, то, что ваше, ваше, и вам не нужно его выпускать»)
  • поддерживает транзакции, триггеры и т. Д.

Встроенный MySQL:

  • поддержка функций SQL зависит от формата файла
  • (IIRC) кроссплатформенные файлы
  • GPL, если вы не платите роялти
  • работает на Windows, Linux, Mac
  • невероятно популярен среди людей с открытым исходным кодом

Даже встроенные базы данных имеют свои сильные и слабые стороны. Вам нужно будет сопоставить эти сильные и слабые стороны с тем, что вы делаете, чтобы решить.

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

Я использовал DBISAM в ряде проектов. Он полностью встроен даже без необходимости использования внешней DLL. В отличие от других, перечисленных вами, он является коммерческим. Хотя много замечательных функций и очень хорошо документированы и поддерживаются. У него есть преемник , который я еще не пробовал.

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

Встраиваемый Firebird - наш выбор № 1, поскольку без изменений кода однопользовательское приложение Delphi со встроенной базой данных можно перенести в многопользовательское развертывание на основе сервера без ущерба для каких-либо функций высокого уровня (таких как хранимые процедуры, триггеры , мнения и т. д.). И это НАСТОЯЩАЯ бесплатная база данных и не GPL ваш код в процессе.

7 голосов
/ 28 февраля 2011

Настоятельно рекомендуем использовать AnyDAC при работе с базами данных и Delphi - тогда вы можете выбрать плавный таргетинг на FB или SQLite.

Я бы предпочел FB для встроенных приложений. Том

6 голосов
/ 17 ноября 2008

Это действительно зависит от того, что вам нужно. Для однопользовательских приложений лучше всего подходят Firebird Embedded или SQLite (и цена подходящая). С другой стороны, если вам нужна поддержка большого количества нескольких пользователей, вам, вероятно, следует использовать обычную Firebird вместо встроенной версии (сервер прост в установке, поэтому у вас не будет особых проблем).

И если вам нужно что-то промежуточное для умеренного многопользовательского приложения, лучше подойдет одна из плоских баз данных. Я обнаружил, что Абсолютная база данных ComponentAce лучший выбор для моих нужд, чем DBISAM, NexusDB или VistaDB.

Он оставляет относительно небольшую площадь (без DLL), это однофайловая база данных (обязательно для меня), поддерживает Unicode, сжатие BLOB, шифрование и технические ограничения кажутся впечатляющими для плоской базы данных. Более того, поддержка была хорошей в тех случаях, когда она мне была нужна.

Что касается минусов, я заметил, что он не поддерживает вложенные транзакции, но кроме этого у меня не было проблем.

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

Я использую Advantage Database Server Sybase, но я также являюсь менеджером по исследованиям и разработкам, поэтому этот пост предвзят. :)

У нас есть собственные компоненты Delphi TTable и TQuery для WIN32 VCL и VCL.NET. Прямой доступ к таблицам в дополнение к поддержке SQL делает Advantage уникальным среди многих других предложений Delphi. Advantage поддерживает большие таблицы (ограничено только количеством записей, 2 миллиарда) и имеет бесплатный локальный движок, который хорош для ПК для разработки и для небольших клиентских сайтов, которые не требуют функциональности клиент / сервер. Переключитесь на клиент / сервер с одним свойством соединения, без других изменений.

У нас множество клиентов, поэтому доступ к данным за пределами Delphi также очень прост (поставщик данных .NET, ODBC, OLE DB, PHP, Perl, JDBC и т. Д.).

Основной веб-сайт продукта: http://www.advantagedatabase.com Веб-сайт разработчика: http://devzone.advantagedatabase.com

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

Что касается размера, SQLite ничто не сравнится.

когда вы ссылаетесь на отсутствие документации, я думаю, это документ для DISQLite3. Документы SQLite вполне завершены

...