2017-10-19 73 views
0

问题的主要范围是确定非基于web的应用程序又称为可执行程序存储信息的内容。数据如何存储在非基于Web的应用程序中?

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

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

TLDR:示例情况;

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

回答

1

有很多的选择:

  • 静态文件(JSON,YAML,XML的.ini,自定义文本格式,...)读入内存,修改,并定期写出来和/或在出口。注意写入新文件,然后重命名它以覆盖旧文件。

  • 嵌入式SQL数据库,如SQLite的,火鸟,微软JET,HSQLDB,德比等

  • 嵌入式键/值商店,如伯克利DB

  • 并且standlone SQL数据库与应用程序的安装,就像捆绑PostgreSQL,MySQL,MS-SQL等。或者由用户单独安装的相同数据库,然后应用程序被配置为使用现有的数据库。

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

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

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

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

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

+0

我可以知道为什么有人会编译数据库的源? 当你说独立数据库使用现有数据库时,这是否意味着将会有一个例如在应用程序运行时托管的postgres服务器以便进行交互? – Nothingness

+0

如果您希望非标准设置/选项无需重新编译,您可以编译它。或者如果您使用的是二进制软件包不易获取或根本不用的利基平台。或者你是一个控制怪物。或者你正在测试开发版本。 –

+0

正确的独立。无论应用程序是否运行,它都可以作为服务保持活动状态。或者它可能由应用程序管理,并根据需要启动和停止。见例如https://stackoverflow.com/q/24625490/398670,https://stackoverflow.com/q/25269274/398670 –

相关问题