问题的主要范围是确定非基于Web的应用程序(也称为可执行文件)存储信息的方式/方式。
当然,基于Web的应用程序使用数据库。 非基于Web的应用程序是否在数据库模块的编译中存储信息? 例如,如果我们有postgres,我们是否会编译postgres源并使用驱动程序在本地存储信息?
如果没有,信息是如何存储的?数据库仅适用于基于Web的应用程序吗?为什么有人会编译/构建/创建数据库的源?
TLDR:一个示例情况;
我们有一个非基于网络的游戏,你在哪里存储角色统计数据,进度,遭遇等等。你使用数据库吗?如果不是如何?
答案 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等驱动程序框架)的数据库驱动程序链接到您的应用程序中。
无论您实际使用什么,在大多数情况下,数据都会存储在桌面用户的个人资料中,或存储在移动应用数据存储沙箱中。主要的例外是数据库服务器