数据持久化介绍
在程序中,我们会将数据放在变量里。而在程序运行过程中,变量里的数据存放在内存(RAM)里。
我们知道,内存里的数据断电即消失。对于程序来讲,内存里的数据则是关闭即消失。在开发过程中,我们只需要将程序关闭,再次打开同一个程序,变量里的数据会恢复到初始值。对于一些比如游戏里的数值、Web 应用的用户信息等内容来说,这种处理方式显然是不太妥当的。由此催生出了数据持久化的需求。
数据持久化有三种常见路径,分别是文本文件、数据库、二进制文件。
文本文件
文本文件,顾名思义就是把数据用文本的形式存在文件内。这一类文件都可以直接用记事本打开。
如果我们需要将数据按文本的形式存储,我们可以使用XML或者JSON格式。前者是曾经很多大项目使用的数据格式,而后者是现在比较流行的数据格式。
对于Python等高级语言,有很多库可以帮助我们序列化和反序列化这两个格式的内容。
数据库
数据库(此处指关系型数据库),是类似于 Excel 格式的数据集合。
对于小型项目,我们可以使用 sqlite,一个文件就是一个数据库。而对于大型网络项目,我们会使用如 MySQL 等独立的数据库。
很多教材里面讲到数据库的时候讲的是SQL语句。而在实际开发中,我们很少直接写SQL语句。我们会使用一类统称为 ORM 的库进行数据库的读写操作。它可以看成是高级语言里的数据结构(如 Python 里的列表、字典,Go 里的 struct等)和数据库之间的桥梁。
Python 里的 ORM 有 SQLAlchemy, Django ORM等。
二进制文件
二进制文件,可以简单理解为不能直接用文本编辑器打开的文件,比如我们常见的图片、音视频。使用 sqlite 数据库时,那个.db数据库文件也是二进制文件。
二进制文件在我们目前的开发中接触的较少,此处不讲。