将数据库无缝打包到应用程序中

时间:2014-08-12 16:17:17

标签: database postgresql go

我想创建一个使用关系数据库的桌面应用程序(例如postgres - 假设我最好的情况是在这个应用程序中使用postgres)。

我希望用户不知道数据库。目前,我不得不将postgres安装到我的本地计算机上并让我的应用程序与之通信。

我正在使用Go。

我该如何避免这种情况?

2 个答案:

答案 0 :(得分:2)

简短版本,你真的不能,你最好的选择是使用SQLite或类似的。

长版本,好吧,如果你真的想要,你可以为你的数据库创建多个无人值守的安装程序,它们针对你想要的每个平台,将它嵌入你的应用程序并在第一次运行时安装它。

现在这只是丑陋的,大多数用户(包括我自己)都会直接使用它。

您可以随时提及您的软件依赖于X和Y,并提供有关如何手动安装依赖项的信息。

答案 1 :(得分:2)

您正在寻找嵌入式数据库

This isn't an ideal job for PostgreSQL,但you can use it that way with a bit of care

请不要捆绑安装程序并在无人看管的情况下运行它。后来安装PostgreSQL的用户在看到它已经在他们的计算机上时会非常困惑,但是他们不知道为什么,安装它的人或者密码是什么。

取而代之的是initdb应用内%APPDATA%%PROGRAMDATA%中(对于多用户共享)的新数据库。设置自定义端口(不要使用默认值5432)。使用pg_ctl register创建一项新服务,其运行时间为NETWORKSERVICE,或者只需pg_ctl按需启动/停止。这样你就不会妨碍任何现有的PostgreSQL安装或新安装,并且只为你的应用程序提供私有的PostgreSQL。

请为用户提供替代为现有PostgreSQL提供连接字符串的选项。如果应用程序坚持使用自己的嵌入式副本,那么这是一种痛苦。

然而,通常最好使用SQLite,H2,Derby,Firebird或其他嵌入式数据库。