如何将数据存储在非基于Web的应用程序中?

时间:2017-10-19 12:29:54

标签: database postgresql compilation

问题的主要范围是确定非基于Web的应用程序(也称为可执行文件)存储信息的方式/方式。

当然,基于Web的应用程序使用数据库。 非基于Web的应用程序是否在数据库模块的编译中存储信息? 例如,如果我们有postgres,我们是否会编译postgres源并使用驱动程序在本地存储信息?

如果没有,信息是如何存储的?数据库仅适用于基于Web的应用程序吗?为什么有人会编译/构建/创建数据库的源?

TLDR:一个示例情况;

我们有一个非基于网络的游戏,你在哪里存储角色统计数据,进度,遭遇等等。你使用数据库吗?如果不是如何?

1 个答案:

答案 0 :(得分:1)

有很多选择:

  • 静态文件(json,yaml,xml,.ini,自定义文本格式......)读入内存,定期修改和写出,和/或退出。注意写入新文件,然后重命名以覆盖旧文件。

  • 嵌入式SQL数据库,如SQLite,Firebird,Microsoft JET,HSQLDB,Derby等

  • 嵌入式键/值存储,如Berkely DB

  • 与应用程序安装程序捆绑在一起的Standlone SQL数据库,如PostgreSQL,MySQL,MS-SQL等。或者由用户单独安装的相同数据库,然后将应用程序配置为使用现有数据库。 / p>

  • Windows注册表等系统配置数据库。不适合存储变化很大,频繁更新或存储大量数据的数据。请不要这样做。

  • 平台和语言特定的工具,如Java或Swift对象序列化。最好避免,但他们有自己的位置。

  • 各种古怪的自定义格式和方案

这与您是否编译源等完全无关。大多数嵌入式数据库都可以作为带头的共享库(DLL,dylib等)使用。您可以在编译时将它们链接到您的程序,但只是将您将某些其他数据库(或ODBC等驱动程序框架)的数据库驱动程序链接到您的应用程序中。

无论您实际使用什么,在大多数情况下,数据都会存储在桌面用户的个人资料中,或存储在移动应用数据存储沙箱中。主要的例外是数据库服务器