Если возможно, как можно встроить PostgreSQL?
-
09-06-2019 - |
Вопрос
Если это возможно, меня интересует возможность встроить базу данных 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 также будет моей встроенной базой данных)