Рекомендация, необходимая для хорошей базы данных для настольного приложения Delphi

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

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

Критические факторы

  • Низкая стоимость покупки или нет.

  • Нет платы за распространение.

  • Легко обрабатывать до 35 000 записей без проблем, в идеале до 100 тыс.

  • Поддержка нескольких таблиц (в этом случае до 10)

  • Поддержка Blob (двоичные объекты, изображения и т.д.)

  • Может быть распространен как часть набора установки приложения. И.Е. Пользователь не должен загружать инсталлятор базы данных на сайт другого пользователя.

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

  • Достаточно высокая производительность.

  • Поддержка стандартных операторов SQL (или что-то достаточно близко)

  • Поддержка нескольких индексов

Менее критический

  • Размер установки базы данных
  • Размер базы данных, установленный в пользовательской системе.

Не критично, но приятно, если доступно

  • Поддержка нескольких пользователей.
  • Шифрование
  • Масштабируемость

Ответы

Ответ 1

Firebird - отличный выбор. Он отвечает всем вашим требованиям, есть отличные административные инструменты, доступные для него (IBExpert, даже бесплатная версия - лучший инструмент, который я когда-либо использовал для БД), и вы можете написать свои собственные пользовательские функции в Delphi для особых требований ваше приложение может иметь. Группа поддержки в группах Yahoo, похоже, перескакивает по всем запросам поддержки, которые кто-либо подает. В целом, для моего настольного приложения, я не думаю, что смогу сделать лучше.

Ответ 2

Хорошим вариантом было бы использовать Sqlite. Существует оболочка для Delphi 2009.

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

Ответ 3

Забавный никто еще не упомянул об этом, но SQL Server Express (бесплатно) сделает все, что вам нужно. Версия Express имеет ограничение на размер базы данных 4 ГБ. Вы можете использовать Devart SQL Server Direct Access Components (для краткости SDAC) для связи с ним в вашем приложении Delphi.

Кроме того, стоит обратить внимание на 2005 edition, поскольку его требования к установке не такие тяжелые (для 2008 года требуется .NET 3.0),

Ответ 4

ElevateDB - встроенный SQL механизм базы данных, который может быть скомпилирован непосредственно в ваше приложение и предлагает локальные однопользовательские и многопользовательские доступ (совместное использование файлов) и доступ клиент-сервер с предоставленным ElevateDB придерживается подмножества Стандарт SQL 2003 (ANSI/ISO 9075).

Некоторые из стандартных функций ElevateDB включают в себя:

  • Малый размер
  • Многопоточное
  • ANSI/Unicode
  • Параметры сортировки
  • Онлайн-резервное копирование
  • Сериализованные транзакции
  • Ограничения
  • Триггеры
  • представления
  • Работа

Ответ 5

+100 для Firebird SQL Embedded, полная RDBMS в 5-6 МБ DLL. Поддерживает все ваши реквиметры и многое другое.

Ответ 6

Мне повезло с ComponentAce's Абсолютная база данных. Он компилируется в ваше приложение, так что вы просто получаете свою программу и файл базы данных. Это SQL 92, совместимый с blobs, не слишком раздувает ваш код, имеет многопользовательский вариант и доступен начиная примерно в 100 евро. Исходный код и многопользовательские опции превышают около 350 евро, а не дешево, но не имеют лицензий на распространение.

Ответ 7

MySQL всегда является очевидным выбором. Вы можете внедрить его в своем приложении, чтобы вам не нужен сервер (вам просто нужно включить libmysqld.dll для получения полной функциональности базы данных),

Он мощный, быстрый, довольно легкий и при необходимости вы можете просто переключиться на "обычный" сервер MySQL без необходимости изменять свой код или запросы.

Установка не требуется.

В MySQL существует множество бесплатных примеров, документации, инструментов и драйверов, но также и в сочетании с Delphi.

...........

Здесь контрольный список:

  • Низкая стоимость покупки или нет. Он имеет 2 лицензии: GPL (бесплатно) и коммерческий

  • Нет платы за распространение. Насколько я знаю, вы можете свободно распространять его

  • Легко обрабатывать до 35 000 записей без проблем, в идеале до 100 КБ. Я использую его с таблицами, которые содержат до 30 000 000 записей, и он работает без потоветки (если вы, конечно, тщательно обдумываете свои запросы)

  • Поддержка нескольких таблиц (в данном случае до 10) проверка

  • Поддержка BLOB (двоичные объекты, изображения и т.д.) проверить

  • Может быть распространен как часть набора установки приложения. И.Е. Пользователю не нужен какой-либо другой сайт для загрузки установщика базы данных. просто добавьте libmysqld.dll и что он

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

  • Достаточно высокая производительность. Очень быстро я могу сказать вам

  • Поддержка стандартных операторов SQL (или что-то достаточно близко) проверить

  • Поддержка нескольких индексов check

  • Размер установки базы данных LibMySqlD.dll - это несколько мегабайт

  • Размер базы данных, установленный в пользовательской системе. Зависит от вашей базы данных, конечно. Он не сжат

  • Многопользовательская поддержка Нет многопользовательской поддержки во встроенной версии, насколько я знаю

  • Шифрование Зашифрованные файлы данных не поддерживаются, но существуют сторонние решения

  • Масштабируемость Если ваш встроенный сервер не может обрабатывать данные, переход на "нормальный" или внешний может быть выполнен без изменения кода или запросов

...........

Ограничения:

У вас нет репликации или событий, есть только один поток InnoDB, нет механизма аутентификации или авторизации, и только ваше приложение может получить доступ к базе данных (имеет смысл для встроенной базы данных).

Ответ 8

PostgreSQL - отличный сервер баз данных. Он имеет очень легкий след, и вы можете легко настроить установку. Он взвешиваетс при или < 10mb для отправки и может быть настроен различными способами для оптимизации производительности или использования системы.

Существует интерфейс delphi: http://dbslim.berlios.de/

Одна вещь о PostgreSQL заключается в том, что она очень хорошо масштабируется (от очень небольших развертываний до больших). Я использую ее в нескольких проектах, и я был очень доволен ею.

Ответ 9

DiSqlLite (другая оболочка вокруг SQLLIte) - хороший выбор. Существует множество руководств утилиты, которые помогут вам начать все. Развертывание очень простое. Я использовал его в многопользовательском проекте, написав сервер delphi n-Tier, который выполнил весь доступ к базе данных.

Ответ 10

Взгляните на NexusDB. Мы обнаружили, что он прочный и быстрый, и вокруг него есть хорошее сообщество.

Ответ 11

Мне повезло с DBISAM. Он был заменен ElevateDB, который я буду использовать для новых проектов.

Мне также нравится, что я могу установить XCopy.

Ответ 12

Опять же, результаты выглядят невероятно, так как каждый ответ для другой базы данных.

Мое голосование идет на SQLite.

Однако... похоже, что в базе данных Access вам тоже будет хорошо. Нулевая установка необходима, просто Windows, и ADO или аналогичные, и вам хорошо идти.

Вот ссылка на ограничения доступа.

http://www.databasedev.co.uk/access_specifications.html

Джон

Ответ 13

Почему никто еще не упомянул базу данных MS Access? Необходимые драйверы (ADO/Jet) предустановлены с каждой последней версией Windows (XP, Vista...), поддержкой многопользовательского режима, шифрования, Blobs и SQL и достаточно быстро. Разумеется, максимальный размер базы данных.

edit: Я действительно не понимаю, почему этот ответ был отклонен. Я несколько раз использовал MS dbs с Delphi, и он работал хорошо. Разумеется, он не предназначен для тяжелых многопользовательских установок, и он не самый быстрый, но это не было обязательным требованием.

Ответ 14

DBISAM и Elevate великолепны.

Ответ 15

Другим вариантом является формат Dbase IV, V с поддержкой многопользовательской поддержки. Я рекомендовал Topaz от www.softsci.com

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

Vitisan

Ответ 16

Использование встроенного MySQL (libmysqld.dll) легко и удобно.

Но у вас нет права перераспределять libmysqld.dll с вашим приложением, если вы не выполните:

  • откройте исходный код приложения для всего мира (лицензия GPL) или
  • купить коммерческую лицензию от MySQL (теперь SUN) - неясно, сколько стоит

Ответ 17

Как и Стив, меня тоже интересует простой в использовании инструмент базы данных. Я действительно не запрограммировал это в Delphi в течение последних 5-6 лет. Я начал с Turbo Pascal 3.0, пошел на TP5, купив TP6 под названием Borland на следующий день и понизился до TP5.5. Я приобрел Delphi 3 Professional, обновленный до Delphi 5 Enterprise, и это то, что у меня есть. Я только что загрузил пробную версию Delphi 2010.

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

Я потратил последние 2,5 часа на ElevateDB и читал Форумы. Я очень впечатлен тем, как они отвечают на вопросы пользователей. Я надеюсь, что этот продукт будет работать так, как я думаю. Я только что подписался на пробную загрузку.

Ответ 18

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

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

Например, у меня есть программа, в которую она встроена как однопользовательская база данных, а исполняемый файл - 3 МБ, и для него не требуются библиотеки DLL. Это позволяет легко получить 50 таблиц общего размера 15 МБ. (Я также использую FlashFiler с гораздо большими базами данных клиент-сервер.)