Если возможно, как можно встраивать PostgreSQL? - PullRequest
33 голосов
/ 13 сентября 2008

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

По сути, я хочу PostgreSQL без всей конфигурации и установки. Если это возможно, скажите мне, как.

Ответы [ 7 ]

12 голосов
/ 20 ноября 2010

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

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

system ("C: \ Program Files \ MyApplication \ pgsql \ postgres.exe -D C: \ Documents and Settings \ Пользователь \ Локальные настройки \ MyApplication \ database -h 127.0.0.1 -p 12345");

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

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

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

12 голосов
/ 13 сентября 2008

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

Для встраивания вы должны использовать sqlite , как вы упомянули, или firebird rdbms .

11 голосов
/ 13 сентября 2008

Если вы не переписываете код, вы не сможете запустить Postgres "встраиваемый". Либо запустите его как отдельный процесс, либо используйте что-то еще. SQLite - отличный выбор. Но есть и другие. MySQL имеет встроенную версию. См. http://mysql.com/oem/. Также несколько вариантов Java, и у Mac есть Базовые данные, которые вы тоже можете написать. Черт, вы даже можете использовать FoxPro. На какой ОС вы работаете и какие услуги вам нужны из базы данных?

7 голосов
/ 22 сентября 2008

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

1 голос
/ 13 января 2012

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

1 голос
/ 13 сентября 2008

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

0 голосов
/ 11 декабря 2008

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

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

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

(Конечно, sqlite будет и моим встроенным БД)

...