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

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

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

Ответы [ 29 ]

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

kbMemTable - хороший кандидат. Работает в памяти, быстро, многопоточность. Раньше было бесплатно.

Components4Developers

1 голос
/ 23 октября 2008

Если встроенное является абсолютной необходимостью, посмотрите на DBISAM.

0 голосов
/ 04 октября 2016

когда дело доходит до встроенных баз данных, первый вопрос: это многопользовательский? На самом деле, кому нужна база данных, которая не допускает множественных подключений (чтение и запись) к ней? Я перепробовал (интенсивно) все упомянутые базы данных и нашел только одну, которая действительно функционирует так, как должна. И это Accuracer. Жаль только с аккуратностью, что это группа из трех человек и хроническое отсутствие надлежащей поддержки. Он также в основном статичен в разработке, так как в течение многих лет мы не видели реальных особенностей. Неудивительно, поскольку его развивает только один человек. Кажется, они живут старой славой. Похвалы пользователей отражают это (как правило, 10 лет комментариев). Для одного пользователя я бы порекомендовал Absolute Database. Что касается крупных игроков, я бы порекомендовал SQL Server от Microsoft. Oracle превратился в вздор и медленно вымирает.

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

0 голосов
/ 27 октября 2015

У меня есть база данных, в которую я должен записывать 5 полевых данных за каждые 20 секунд в течение 10 дней. 3 поля являются целыми, 1 поле является двойным (время), а 1 поле является строкой [5].

Я все еще использую Delphi6 srv2 из-за своих компонентов. Более новые версии Delphi ужасны в отношении компонентов, и мне приходится тратить тысячи долларов на восстановление библиотеки компонентов. Поэтому Delphi 6 по-прежнему лучше всего подходит для реальных коммерческих приложений, которые никогда не создают много проблем с версией Delphis. Во многих случаях, таких как данные USB или чтения компорта и т. Д., Они выпускают более новые, прежде чем предыдущие версии никогда не появятся на рынке.

Я настроил код с Delphi6, который добавляет 43200 записей в таблицу для тестирования, потому что я разверну эту таблицу в приложении, пока в ней 43200 записей. Я покажу все данные на DBChart.

Результат теста ниже баз данных, заполненных таблицами командой вставки с 43200 записями

Дбисам = 34 с,
ElevateDb = 11 сек,
AbsoluteDB = 45 с,
SQLlite = 32 минуты,
Жар-птица = 12 мин,
MSSQL12 localDB = 28 минут,
Легкий стол = 8 минут,
BDE = заблокировано,

Я не тестировал oracle, blackfish, sysbase, nexsusDb и т. Д., Но, похоже, они также будут работать очень медленно. Я подключился к DBChart, и только elevateDb и absoluteDB загрузили 43200 записей в DBchart в течение допустимого времени, например 7 ~ 10 секунд. Посмотри все минут. Поэтому более медленные базы данных всегда нуждаются в уловках кодирования, чтобы преуспеть в некоторых реальных работах.

Я также проверил их скорость поиска с помощью команды locate, к сожалению, базы данных на сервере всегда работают медленнее.

MSSQL и SQLLite3 чрезвычайно сложны в управлении delphi, из-за которых я очень устал.

Это мои результаты теста
В конце я решил использовать AbsoluteDB, Dbisam и Elevate. Я скинул остальное с ПК.

Программное обеспечение Elevate не поддерживает функцию recno, для управления которой требуются дополнительные коды во время выполнения. Это замедляет работу базы данных. Другая ошибка в программном обеспечении Elevate - поля autoinc. Нет способа сбросить его. Поэтому я не выбрал программное обеспечение Elevat, даже если это самая быстрая база данных. Они говорят много хороших функций, но сколько из них мы используем на самом деле. Они просто оставили самые важные функции не поддерживаемыми, но исправили множество ненужных функций. и, кажется, с 8 лет тоже нет никаких преимуществ.

Если вы хотите увидеть своими глазами, пожалуйста, попробуйте и посмотрите ..

Я думаю между двумя теперь абсолютными БД или DBisam4

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

Я использовал ScimoreDB. У этого есть свои особенности, поскольку они дают ему лицензионный платеж, и у этого есть свои особенности в типах данных и с некоторыми проблемами установки. Это было на проекте C #.

0 голосов
/ 04 мая 2009

Хммм, никто не рекомендовал BDE - интересно, почему это так; -)

BlackFishSQL - еще одна возможность, хотя я еще не тестировал подробно.

0 голосов
/ 15 апреля 2009

Firebird действительно потрясающий и имеет небольшой размер, так что вы можете использовать встроенный и это может быть увеличено для многих пользователей и делает юникод очень хорошо Я использую компоненты Devart с Delphi 2009 и FIB plus для Delphi 6/7 (их версия для 2009 и Unicode еще не готова, но очень плохо)

0 голосов
/ 15 апреля 2009

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

SQLite не имеет себе равных, если вам нужен только однопользовательский доступ, ни одна другая база данных не подходит к нему ни по одному аспекту, будь то производительность, удобство, поддержка SQL или стабильность.

0 голосов
/ 14 февраля 2009

Firebird полностью. Хорошо справляется со всеми задачами, и пока версия 2.1 очень хорошая.

...