初识SQLite

SQLite数据库

初识SQLite

最近因为工作需要在使用superset做数据库的展示效果,一直好奇superset在我使用时未配置数据库信息的情况下是如何存储用户的信息以及权限信息的。

后来在度娘的帮助下我发现superset并没有采用本机的数据库,而是采用了SQLite数据库。

在我的认知中数据库是一个服务,可以持久化的保存结构化或者非机构化的数据。日常使用的MySQL、mongodb、redis都需要已安装的方式使用并且会配置一个端口号。但是当我看到SQLite并了解之后发现它完全颠覆了我的认知。

; 什么是SQLite

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。——引用自菜鸟教程

上面这段话的解释就是SQLite与传统的数据库不同他没有服务也没有端口号,相当于一个存在系统中的文件,可以按照你的需求静态或者动态的去访问存储文件,整个数据库(包括定义、表、索引、和数据本身)都在主机上存储在一个单一的文件中。

由此可见SQLite不是一个与程序之间通信的独立进程,而是连接到程序中成为其中一个主要部分。这样的设计使它在编程语言内直接使用API调用,在消耗总量、延迟时间和整体简单性上有了积极的作用。因为所有数据都在一个单一的文件内,所以它的设计就是当开始一个事务时锁定整个数据文件。

为什么要用SQLite

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

SQLite特征

1、SQLite实现了SQL-92标准中的大部分,包括事务、以及实现原子性、一致性、隔离性和持久性(ACID),但是缺失了某些特性如:仅部分支持触发器。尽管它支持大多数的复杂查询,但它的 ALTER TABLE功能有所限制,不能修改或删除列,只能通过重新创建表的方式迂回进行。

2、SQLite不进行类型检查。你可以把字符串插入到整数列中。个人认为这是喜忧参半的,特别是与无类型的脚本语言一起使用的时候。

3、多个进程或线程可以同时访问同一个数据。可以同时平行读取同一个数据库。但是同一时间只能有一个进程或线程进行数据写入;否则会写入失败并得到一个错误消息(或者会自动重试一段时间;自动重试的逻辑以及重试时间的长短是可以设置的)。

4、还提供了一个叫做 sqlite3的独立程序用来查询和管理SQLite数据库文件。SQLite的用户可以把这个程序当作如何写SQLite应用程序的示例。

初识SQLite

; 我是一个努力成长的小白,如果这篇文章对你有帮助记得点赞,如果有不足或者错误欢迎在评论区及时指出。

Original: https://blog.csdn.net/a56546/article/details/121932197
Author: 曼走丶999
Title: 初识SQLite

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816708/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球