Database 是否可以将单个PostgreSQL数据库存储在单个文件/目录中,而不是存储在一个中央数据存储库中?

Database 是否可以将单个PostgreSQL数据库存储在单个文件/目录中,而不是存储在一个中央数据存储库中?,database,postgresql,Database,Postgresql,一般来说,我对软件开发是新手。我的技能最好用中级来形容。我已经做了很多编程,但我还没有掌握任何特定的语言。我有很多学习要做,学习所有必要的技能 我想开发一个桌面会计应用程序,如PeachTree或QuickBooks。所有数据都托管在本地计算机上,不需要web服务器。在某种程度上,我可能希望能够在网络上托管本地服务器,并通过其他计算机上的客户端访问应用程序。而且,不需要让多个用户同时访问同一个数据库。这两种情况在未来可能会发生变化,但我现在不需要解决(我不相信) 几年前,我使用Microsoft

一般来说,我对软件开发是新手。我的技能最好用中级来形容。我已经做了很多编程,但我还没有掌握任何特定的语言。我有很多学习要做,学习所有必要的技能

我想开发一个桌面会计应用程序,如PeachTree或QuickBooks。所有数据都托管在本地计算机上,不需要web服务器。在某种程度上,我可能希望能够在网络上托管本地服务器,并通过其他计算机上的客户端访问应用程序。而且,不需要让多个用户同时访问同一个数据库。这两种情况在未来可能会发生变化,但我现在不需要解决(我不相信)

几年前,我使用Microsoft Access(不确定是否将其视为应用程序)构建了一个具有拆分数据库设计的会计应用程序。整个数据库包含在两个文件中:mydb和mydb_be(前端和后端)。我已经很多年没有使用过这些其他会计应用程序了,但我记得,这些数据存储在单个文件或单个目录中,但肯定不会像Postgres(可能还有许多/所有其他应用程序)那样深入嵌套在数据库程序的默认文件结构和数据目录中的中央存储库中名字是“16254”而不是“MyBiz”

对于我的MS Access应用程序,我可以使用典型的操作系统命令(如剪切/粘贴/删除和拖放)移动、复制和删除mydb。没有什么可以出口或进口的。我还记得,它和商业应用程序是类似的

我可能有15个不同的数据库,每个数据库针对不同的实体。我可能想更改我的“记帐”目录的文件结构,或者复制到usb驱动器并将其移动到另一台计算机,在那里打开,或者可能备份到外部驱动器。每个实体的目录可能包含数据库文件以外的文件或文件夹(例如,税务目录),它们都需要保存在一起。我不能期望我的目标用户(可能10岁以上)执行这样的数据库管理任务。除此之外,该应用程序旨在教孩子们如何做会计,而不是数据库管理

因此,问题是,是否有一种方法可以将单个Postgres数据库以打包方式存储在不同的位置,其中单个数据库的所有必要数据都存储在单个文件(如MS Access)或单个目录中,以便我可以移动文件并从应用程序中打开它们?换句话说,单击“打开文件”将允许我导航到~/myaccounting/entity1/entity1db.file或/entity2/entity2.file,或者可能是一个目录而不是一个文件。也许我的文件扩展名是“kac”,所以我会双击扩展名为.kac的文件来启动应用程序

我计划使用PostgreSQL和Python开发一个交互式控制台应用程序。一旦我证明了这个概念,我将开发GUI

显然,有许多概念我还没有学会。我觉得在深入研究我的应用程序之前,我需要了解这一点

编辑 如果没有,我还应该调查什么(谢谢阿德里安·克拉弗)?我应该搜索哪些关键词或学习哪些概念

谢谢你的帮助

是否可以在单个文件中存储单个PostgreSQL数据库

否。Postgres旨在成为企业强大可靠的集中式数据库服务器。Postgres从未打算捆绑在桌面应用程序中

嵌入式数据库 你要找的东西被称为

就是这样一种产品。H2是一个关系数据库,由SQL驱动。与博士后兼容是其目标之一。内置于纯Java中,因此它可以在多种主机操作系统上运行。H2可以在嵌入式模式下运行,仅由应用程序访问,也可以在服务器模式下同时接受来自各种应用程序的连接

提到的评论。虽然该产品是一个嵌入式数据库,但请注意它确实是“lite”。它的创建者打算将该产品从简单的文件升级到强大的数据库引擎……引用一句话:“SQLite不是PostgreSQL的替代品。SQLite是fopen()的替代品”()。虽然许多人已经用SQLite成功地完成了许多项目,但要求SQLite支持完整的会计包可能要求过高。如果您正在考虑此产品,请仔细研究

云彩 另一个途径是使用云。许多公司已经开始提供数据库服务。通常称为“托管数据库”,因为出于明显的安全原因,并且由于服务公司处理备份、故障切换、软件更新等,您没有完全的超级用户访问权限。供应商包括Digital Ocean、Heroku、Amazon AWS、Microsoft Azure等

Postgres和MySQL是常见的产品,有些产品提供Microsoft SQL Server或Oracle

如果您可以合理地期望用户在使用您的产品时连接到internet,那么这可能是可行的。但我不太愿意推荐这条路线。虽然internet连接不需要有大的吞吐量,但internet连接确实需要可靠。但“可靠”和“互联网连接”通常不会同时进行

在使用时,您必须对数据库进行编码,使其在面对中断的网络访问时非常健壮。当然,你应该一直这样做。但实际上,我们中的大多数人在这方面都很松懈,特别是如果我们可以依靠非常可靠的连接的话。例如,当数据库服务器位于同一台计算机的本地时,或者当数据库服务器连接到服务器机房附近的应用程序服务器时

另一个问题是