2008-09-13 4 views
33

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

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

+1

Что у вас есть с RaNdOm CaP? – 2008-09-13 03:21:36

+1

Никаких случайных колпачков нет. Видимо, я ошибся на g, видимо. – pc1oad1etter 2008-09-13 03:58:10

+1

Вместо того, чтобы буквально внедрить его, вы могли бы установить его вместе со своей программой и запускать его только во время работы вашей программы? – 2008-09-13 03:04:22

ответ

10

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

1

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

12

Вы не можете встроить его и не попробовать.

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

+5

Я рекомендую Firebird – 2009-10-31 15:34:48

+2

Я также рассматриваю возможность изучения Firebird как своей единственной базы данных, которая входит как в встроенные, так и в серверные/клиентские формы и имеет совершенно бесплатный, открытый источник, некоммерческая повестка дня. – explorer 2011-08-06 18:21:47

7

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

12

Запуск PostgreSQL в фоновом процессе.

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

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

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

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

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

1

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

Смежные вопросы