如果可能的话,如何嵌入PostgreSQL?
如果可能的话,我对能够嵌入类似于sqllite的PostgreSQL数据库感兴趣。我读过这是不可能的。我不是数据库专家,所以我希望收到来信。
本质上,我希望PostgreSQL没有所有的配置和安装。如果有可能,请告诉我如何。
解决方案
回答
PostgreSQL旨在作为独立服务器运行;如果我们辛苦地破解它并且足够长的时间,则可能会嵌入它,但是按预期在单独的过程中运行它会容易得多。
回答
我们不能嵌入它,也不要尝试。
对于嵌入,我们应该使用我们提到的sqlite或者firebird rdbms。
回答
除非我们进行代码的重大重写,否则无法"嵌入"运行Postgres。可以将其作为单独的进程运行,也可以使用其他方法。 SQLite是一个很好的选择。但是还有其他。 MySQL具有嵌入式版本。在http://mysql.com/oem/上查看。还有几种Java选择,Mac也可以编写Core Data。地狱,你甚至可以使用FoxPro。我们在什么操作系统上以及从数据库中需要什么服务?
回答
我们不能将其作为sqlite等进程类型的对象进行嵌入,但是可以使用http://www.innosetup.org上的Inno setup轻松将其嵌入到应用程序设置中。搜索他们的邮件列表档案,我们会发现有人为我们完成了大部分工作,我们所要做的就是获取压缩发行版,并且在用户安装应用程序时可以轻松地安装postgresql。然后,我们可以使用pg_hba.conf文件将服务器限制为仅本地主机。不是真正的嵌入式数据库,但是它可以工作。
回答
任何在Mac OS X上尝试过的人:
http://pagesperso-orange.fr/bruno.gaufier/xhtml/prod_postgresql.xhtml
http://www.macosxguru.net/article.php?story=20041119135924825
(当然,sqlite也将是我选择的嵌入式数据库)
回答
在后台进程中运行postgresql。
在应用程序中启动一个单独的线程,该线程将通过使用一些随机的空闲端口将其绑定到localhost或者通过使用套接字(在本地模式下启动一个PostgreSQL服务器)(Windows是否支持套接字?)。那应该很容易,就像:
系统(" 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退出(即加入线程)。
PS:我们也可以使用pg_ctl来控制"嵌入式"数据库,即使没有线程,也可以在启动应用程序时执行" pg_ctl start"(具有适当的选项),而在退出应用程序时执行" pg_ctl stop"。