如果可能的话,我有兴趣能够嵌入一个 PostgreSQL 数据库,类似于sqllite。我读过这是不可能的。我不是数据库专家,所以我想听听你的意见。
本质上我想要 PostgreSQL 没有所有的配置和安装。如果可能的话,告诉我怎么做。
你不能嵌入它,你也不应该尝试。
对于嵌入,您应该使用您提到的sqlite或firebird rdbms。
在后台进程中运行 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”。
除非您对代码进行重大重写,否则不可能“嵌入”运行 Postgres。要么将其作为单独的进程运行,要么使用其他东西。SQLite 是一个很好的选择。但还有其他人。MySQL 有一个嵌入式版本。在http://mysql.com/oem/上查看。还有几个 java 选择,Mac 也有你可以编写的 Core Data。见鬼,你甚至可以使用 FoxPro。你在什么操作系统上,你需要数据库提供什么服务?
您不能将其嵌入为像 sqlite 等这样的进程类型的东西,但您可以使用http://www.innosetup.org上的 Inno setup 轻松将其嵌入到您的应用程序设置中。搜索他们的邮件列表存档,您会发现有人为您完成了大部分工作,您所要做的就是获取压缩的发行版,当用户安装您的应用程序时,您可以轻松安装 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 也是我选择的嵌入式数据库)
好吧,我知道这是一个非常非常非常古老的帖子,但是如果现在有人有这个问题,我会参考:
R
:
https ://rsangole.netlify.app/post/2021/08/07/docker-based-rstudio-postgres/?utm_source=pocket_mylistduckdb
https://duckdb.org/docs/installation/比较新,还需要成熟。但它的工作原理非常类似于嵌入式数据库(“进程内、无服务器”),具有多种语言(Python、R、Java 等)的绑定