Рекомендация, необходимая для хорошей базы данных для настольного приложения 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 с гораздо большими базами данных клиент-сервер.)