我想创建一个使用关系数据库的桌面应用程序(例如postgres - 假设我最好的情况是在这个应用程序中使用postgres)。
我希望用户不知道数据库。目前,我不得不将postgres安装到我的本地计算机上并让我的应用程序与之通信。
我正在使用Go。
我该如何避免这种情况?
答案 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或其他嵌入式数据库。