38

如果可能的话,我有兴趣能够嵌入一个 PostgreSQL 数据库,类似于sqllite。我读过这是不可能的。我不是数据库专家,所以我想听听你的意见。

本质上我想要 PostgreSQL 没有所有的配置和安装。如果可能的话,告诉我怎么做。

4

8 回答 8

14

你不能嵌入它,你也不应该尝试。

对于嵌入,您应该使用您提到的sqlite或firebird rdbms

于 2008-09-13T03:26:14.043 回答
14

在后台进程中运行 postgresql。

在您的应用程序中启动一个单独的线程,该线程将以本地模式启动 postgresql 服务器,方法是使用一些随机空闲端口将其绑定到 localhost 或使用套接字(Windows 是否支持套接字?)。这应该相当容易,例如:

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 start”(使用适当的选项)并在退出时执行“pg_ctl stop”。

于 2010-11-20T20:18:14.003 回答
11

除非您对代码进行重大重写,否则不可能“嵌入”运行 Postgres。要么将其作为单独的进程运行,要么使用其他东西。SQLite 是一个很好的选择。但还有其他人。MySQL 有一个嵌入式版本。在http://mysql.com/oem/上查看。还有几个 java 选择,Mac 也有你可以编写的 Core Data。见鬼,你甚至可以使用 FoxPro。你在什么操作系统上,你需要数据库提供什么服务?

于 2008-09-13T06:06:24.800 回答
7

您不能将其嵌入为像 sqlite 等这样的进程类型的东西,但您可以使用http://www.innosetup.org上的 Inno setup 轻松将其嵌入到您的应用程序设置中。搜索他们的邮件列表存档,您会发现有人为您完成了大部分工作,您所要做的就是获取压缩的发行版,当用户安装您的应用程序时,您可以轻松安装 postgresql。然后,您可以使用 pg_hba.conf 文件将服务器限制为仅本地主机。不是真正的嵌入式数据库,但它会工作。

于 2008-09-22T05:38:06.793 回答
1

PostgreSQL 旨在作为独立服务器运行;如果你努力破解它并且足够长的时间,它可能会嵌入它,但是在单独的进程中按预期运行它会容易得多。

于 2008-09-13T03:22:45.113 回答
1

HSQLDB (http://hsqldb.org/) 是另一个易于嵌入的数据库。需要 Java,但对于 Java 应用程序来说是一个优秀且经常使用的选择。

于 2012-01-13T14:26:08.817 回答
0

任何人在 Mac OS X 上尝试过:

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

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

(当然 sqlite 也是我选择的嵌入式数据库)

于 2008-12-11T15:06:50.077 回答
0

好吧,我知道这是一个非常非常非常古老的帖子,但是如果现在有人有这个问题,我会参考:

于 2021-10-06T22:31:59.500 回答