Вопрос

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

По сути, мне нужен PostgreSQL без всякой настройки и установки.Если это возможно, подскажите как.

Это было полезно?

Решение

Если вы не сильно перепишете код, невозможно запустить «встроенный» Postgres.Либо запустите его как отдельный процесс, либо используйте что-то другое.SQLite — отличный выбор.Но есть и другие.MySQL имеет встроенную версию.Посмотрите это на http://mysql.com/oem/.Также есть несколько вариантов Java, и у Mac есть Core Data, который вы тоже можете записать.Черт, вы даже можете использовать FoxPro.Какая у вас ОС и какие сервисы из базы нужны?

Другие советы

Вы не можете его встроить, и вам не следует пытаться.

Для встраивания вы должны использовать Склайт как вы упомянули или РСУБД Firebird.

Запустите postgresql в фоновом процессе.

Запустите в своем приложении отдельный поток, который будет запускать сервер postgresql в локальном режиме либо путем привязки его к локальному хосту с каким-либо случайным свободным портом, либо с помощью сокетов (поддерживает ли Windows сокеты?).Это должно быть довольно легко, что-то вроде:

system("C:\Program Files\MyApplication\pgsql\postgres.exe -D C:\Documents and Settings\User\Local Settings\MyApplication\database -h 127.0.0.1 -p 12345");

а затем просто подключитесь к 127.0.0.1:12345.

Когда ваше приложение завершает работу, вы всегда можете отправить SIGTERM в свой поток, а затем подождать несколько секунд, пока postgresql завершит работу (т. е. присоединитесь к потоку).

ПС:Вы также можете использовать pg_ctl чтобы управлять вашей «встроенной» базой данных, даже без потоков, просто выполните «pg_ctl start» (с соответствующими параметрами) при запуске приложения и «pg_ctl stop» при выходе из него.

Вы не можете встроить его как элемент процесса, например sqlite и т. д., но вы можете легко встроить его в настройку приложения, используя настройку Inno по адресу http://www.innosetup.org.Поищите в их архиве списка рассылки, и вы обнаружите, что кто-то сделал большую часть работы за вас, и все, что вам нужно, это взять заархивированный дистрибутив, и вы сможете легко установить postgresql, когда пользователь установит ваше приложение.Затем вы можете использовать файл pg_hba.conf, чтобы ограничить сервер только локальным хостом.Это не настоящая встроенная БД, но она будет работать.

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

HSQLDB (http://hsqldb.org/) — еще одна база данных, которую легко встроить.Требуется Java, но это отличный и часто используемый выбор для приложений Java.

Кто-нибудь пробовал на Mac OS X:

http://pagesperso-orange.fr/bruno.gaufier/xhtml/prod_postgresql.xhtml

http://www.macosxguru.net/article.php?story=20041119135924825

(Конечно, sqlite также будет моей встроенной базой данных)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top