一般的单机版软件(不联网)用什么存储数据:1、SQLite;2、键值对存储;3、本地文件系统;4、内存存储。SQLite是一种轻量级的关系型数据库引擎,可以直接将数据存储在一个文件中,无需单独安装数据库服务。
一、一般的单机版软件(不联网)用什么存储数据
1、SQLite
SQLite是一种轻量级的关系型数据库引擎,可以直接将数据存储在一个文件中,无需单独安装数据库服务。SQLite支持标准的SQL语言,并提供了对事务、索引、触发器等数据库特性的支持,适用于小规模的数据存储和管理。
2、键值对存储
键值对存储是一种轻量级的非关系型数据库,使用简单,并且支持高速读写,常见的键值存储有Redis、LevelDB等。但键值对存储不支持SQL,其功能比较简单,适用于小型应用,对于关联查询等复杂操作支持不太理想。
3、本地文件系统
将数据以文本或二进制格式的文件保存在计算机的硬盘上,可以使用常见的TXT、XML、JSON、CSV等格式。这种方式简单易用,适用于小规模数据存储,但数据访问效率相对较低,对大规模数据存储和处理不太适合。
4、内存存储
将数据存储在内存中,可以提供非常快速的读写速度和响应时间,适用于小规模的数据,如缓存和临时数据存储等。但由于内存大小限制,不能存储大规模数据且不支持永久存储。
二、SQLite介绍
1、简介
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界知名数据库管理系统来讲,它的处理速度比他们都快。SQLite名列前茅个Alpha版本诞生于2000年5月。 至2021年已经接近有21个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
2、工作原理
不像常见的客户—服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。
3、功能特性
- ACID事务
- 零配置,无需安装和管理配置
- 储存在单一磁盘文件中的一个完整的数据库
- 数据库文件可以在不同字节顺序的机器间自由的共享
- 支持数据库大小至2TB
- 足够小,大致13万行C代码,4.43M
- 比一些流行的数据库在大部分普通数据库操作要快
- 简单,轻松的API
- 包含TCL绑定,同时通过Wrapper支持其他语言的绑定
- 良好注释的源代码,并且有着90%以上的测试覆盖率
- 独立,没有额外依赖
- 源码完全的开源,你可以用于任何用途,包括出售它
- 支持多种开发语言,C,C++,PHP,Perl,Java,C#,Python,Ruby等
同时它还支持事务处理功能等等。也有人说它象Microsoft的Access,有时候真的觉得有点象,但是事实上它们区别很大。比如SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么你可以考虑使用SQLite。到2013年10月17日最新版本是 3.8.1 。能在上面获得源代码和文档。同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业人士。
4、常用函数
SQLite 有许多内置函数用于处理字符串或数字数据。下面列出了一些有用的 SQLite 内置函数,且所有函数都是大小写不敏感,这意味着您可以使用这些函数的小写形式或大写形式或混合形式。欲了解更多详情,请查看 SQLite 的官方文档:
- SQLite COUNT 函数:SQLite COUNT 聚集函数是用来计算一个数据库表中的行数。
- SQLite MAX 函数:SQLite MAX 聚合函数允许我们选择某列的最大值。
- SQLite MIN 函数:SQLite MIN 聚合函数允许我们选择某列的最小值。
- SQLite AVG 函数:SQLite AVG 聚合函数计算某列的平均值。
- SQLite SUM 函数:SQLite SUM 聚合函数允许为一个数值列计算总和。
- SQLite RANDOM 函数:SQLite RANDOM 函数返回一个介于 -9223372036854775808 和 +9223372036854775807 之间的伪随机整数。
- SQLite ABS 函数:SQLite ABS 函数返回数值参数的绝对值。
- SQLite UPPER 函数:SQLite UPPER 函数把字符串转换为大写字母。
- SQLite LOWER 函数:SQLite LOWER 函数把字符串转换为小写字母。
- SQLite LENGTH 函数:SQLite LENGTH 函数返回字符串的长度。
- SQLite sqlite_version 函数:SQLite sqlite_version 函数返回 SQLite 库的版本。
5、语言绑定
可以从C/C++程序中使用这个库,还可以获得对Tcl和一些其他脚本语言的绑定。在CPAN的DBD::SQLite上有一个Perl的DBI/DBD模块,它不是到SQLite的接口,而是包括整个SQLite数据库引擎在其中并不需要任何额外的软件。还有一个Python模块叫做PySQLite。PHP从PHP5.0开始包含了SQLite,但是自5.1版之后开始成为一个延伸函式库。SQLite能与PHP4一起工作但不包含在其中。Rails2.0.3将缺省的数据库配置改为了SQLite 3。
延伸阅读1:WAL恢复法简介
WAL是关系型数据库中用于实现事务性和持久性的一系列技术。数据文件(存储着表和索引)的修改必须在这些动作被WAL记录之后才被写入,即在描述这些改变的日志记录被刷到持久存储以后,数据库在执行命令之前先将它记下来。比如,人们平时会写备忘录,记录自己要做的事,WAL就是那个备忘录。SQLite3可以通过命令“PRAGMA journal_mode=WAL”打开WAL模式。