跳转到内容

Linux:修订间差异

轻之舟百科,让知识轻装启航
云云​(留言 | 贡献)
无编辑摘要
TeodoroSeccombe​(留言 | 贡献)
小 创建页面,内容为“。”
第1行: 第1行:
Linux(全称:GNU/Linux)是一套免费使用和自由传播的类Unix操作系统,其内核由芬兰程序员林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布<<ref name=":0">[https://www.kernel.org/ The Linux Kernel Archives]</ref>。严格来说,Linux一词本身仅指操作系统的内核,但在日常语境中,人们通常用Linux指代基于[[Linux内核]]、并搭配GNU计划各种工具软件与应用程序构成的完整操作系统,即[[GNU]]/Linux<<ref name=":1">[https://www.redhat.com/zh-cn/topics/linux/what-is-linux 什么是Linux? - Red Hat]</ref>。Linux采用[[GNU通用公共许可证]](GPL)发布,是全球最大的开源协作项目之一,广泛应用于[[服务器]]、超级计算机、移动设备与嵌入式系统等领域<<ref name=":2">[https://www.ibm.com/cn-zh/think/topics/linux 什么是Linux? - IBM]</ref>。
{{Infobox
{| class="infobox" style="border:1px solid #ccc; background:#f8f9fa; width:24em; float:right; margin:0 0 1em 1em; border-spacing:5px;"
| 标题 = SQLite
! colspan="2" style="text-align:center;" |'''Linux'''
| 内容 =
|-
{{!}}-
|中文名
! 开发者
|'''Linux操作系统'''
{{!}} D. Richard Hipp
|-
{{!}}-
|英文名
! 首次发布
|'''Linux'''
{{!}} 2000年8月
|-
{{!}}-
|开发者
! 稳定版本
|林纳斯·托瓦兹(Linus Benedict Torvalds)及全球开源社区
{{!}} 3.x(持续更新)
|-
{{!}}-
|首次发布
! 编程语言
|1991年9月17日(内核0.01)
{{!}} ANSI-C
|-
{{!}}-
|内核类型
! 操作系统
|宏内核(Monolithic kernel)
{{!}} 跨平台
|-
{{!}}-
|许可证
! 类型
|GNU通用公共许可证(GPL)等
{{!}} 嵌入式关系数据库引擎
|-
{{!}}-
|官方网址
! 许可证
|[https://www.kernel.org/ kernel.org]
{{!}} 公有领域
|-
{{!}}-
|Logo
! 官方网站
|[[File:Linux Logo.png|thumb|200x200px|'''Linux Logo''']]
{{!}} https://sqlite.org
|}
}}
 
'''SQLite'''是一个嵌入式关系[[数据]]库引擎,以自包含(self-contained)、无[[服务器]](serverless)、零配置(zero-configuration)及事务性(transactional)为设计特征。<ref name=":0">[https://sqlite.org/different.html Distinctive Features Of SQLite - sqlite.org]</ref> 由美国开发者D. Richard Hipp于2000年创建,其源代码处于公有领域,可自由用于任何目的。<ref name=":1">[https://sqlite.org/src SQLite Source Repository - sqlite.org]</ref> 整个[[数据库]][[存储]]于单个[[跨平台]]磁盘文件中,应用程序通过链接SQLite库直接读写该文件,无需独立的服务器进程或管理配置。<ref name=":0" /> 据官方估计,[[全球]]活跃的SQLite数据库数量超过一万亿个,使其成为历史上部署最广泛的数据库引擎。<ref name=":2">[https://neomano.com/en/the-programmers-who-gave-away-empires/ The Programmers Who Gave Away Empires - Neomano]</ref>


== 历史 ==
== 历史 ==


=== 起源 ===
SQLite诞生于2000年春季,创始人D. Richard Hipp当时受雇于General Dynamics,为美国海军导弹驱逐舰项目开发[[软件]]。<ref name=":3">[https://db.cs.cmu.edu/events/databaseology-2015-richard-hipp-sqlite/ SQLite, A Database for the Edge of the Network - Carnegie Mellon Database Group]</ref> 项目最初使用HP-UX系统与IBM Informix数据库,但数据库服务器频繁故障导致应用程序崩溃,促使Hipp思考"为什么我们需要一个服务器?"<ref name=":2" /> 这一疑问催生了SQLite的设计理念:一个无需安装、无需管理、直接嵌入应用程序的数据库引擎。
Linux的诞生深受[[Unix]]操作系统、MINIX教学系统、[[GNU计划]]与POSIX标准的影响。1983年,理查德·斯托曼(Richard Stallman)发起GNU计划,旨在开发一套完全自由的操作系统,但GNU内核(HURD)长期未能完成<<ref name=":3">[https://baike.baidu.com/item/Linux/27050 Linux - 百度百科]</ref>。1991年初,就读于赫尔辛基大学的林纳斯·托瓦兹开始接触MINIX系统,并尝试为其编写驱动程序。同年8月25日,他在Usenet新闻组comp.os.minix上发布了著名的帖子,宣告正在开发一个免费的操作系统内核。1991年9月,Linux内核0.01版本发布;10月5日,0.02版本附带源代码正式对外公布,标志着Linux项目的诞生<<ref name=":3" />。
 
2000年8月,SQLite 1.0正式发布,最初基于[[GNU]] Database Manager(gdbm)构建。<ref name=":4">[https://www.tutorialspoint.com/sqlite/sqlite_overview.htm SQLite - Overview - TutorialsPoint]</ref> 随后SQLite 2.0以自定义B树实现替代gdbm,并加入事务支持。2004年6月,SQLite 3.0.2 beta发布,引入了动态类型系统、UTF-8/UTF-16支持及更灵活的数据库模式,奠定了现代SQLite的[[架构]]基础。<ref name=":4" />
 
2006年,SQLite被纳入[[Android]][[操作系统]];2007年,被纳入[[Apple]] [[iOS]]。<ref name=":5">[https://www.hackers-arise.com/post/the-sqlite-database-the-ubiquitous-database-that-few-understand The SQLite Database: The Ubiquitous Database that Few Understand - Hackers Arise]</ref> 此后,SQLite迅速渗透至各类计算平台。2011年,Hipp宣布计划为SQLite添加UNQL接口,并开发文档型数据库UNQLite。<ref name=":4" />


=== 发行版发展 ===
SQLite的源代码由Hipp及其小型团队通过Fossil分布式版本控制系统维护,不接受外部贡献,以确保代码完全处于公有领域。<ref name=":1" /> Hipp将SQLite测试至航空软件标准,实现了100%分支覆盖率,此后Android等平台的bug报告显著减少。<ref name=":2" />
1994年3月,Linux 1.0版本正式发布,采用[[GPL]]许可证,代码量约17万行。1995年,鲍勃·扬(Bob Young)创办Red Hat公司,推出Red Hat Linux发行版,开创了Linux商业发行版的先河。此后,Debian、Slackware、SUSE、Ubuntu等发行版相继问世,形成了覆盖服务器、桌面与嵌入式设备的完整生态系统<<ref name=":3" />。


== 技术特性 ==
== 技术特性 ==


=== 内核架构 ===
=== 无服务器架构 ===
Linux内核采用宏内核架构,以C语言与汇编语言编写,符合POSIX标准。内核负责管理进程调度、内存管理、文件系统、网络协议栈与设备驱动等核心功能,同时通过可加载内核模块(LKM)支持动态扩展<ref name=":1" />。其设计继承了Unix"一切皆文件"的哲学,将硬件设备、进程与系统接口均抽象为文件进行操作。
 
与传统客户端/服务器数据库不同,SQLite没有独立的服务器进程。<ref name=":6">[https://www.sqlite.org/serverless.html SQLite Is Serverless - sqlite.org]</ref> 应用程序通过函数调用直接与数据库文件交互,在同一进程内完成数据读写,避免了进程间通信的开销。<ref name=":0" /> 任何能够访问磁盘的程序均可使用SQLite数据库,无需安装、配置或启动服务。
 
=== 零配置 ===
 
SQLite无需安装程序、配置文件或管理权限。不存在需要创建的数据库实例,也无需分配[[用户]]访问权限或进行恢复操作。<ref name=":0" /> 系统崩溃或断电后无需人工干预即可自动恢复。这一特性使其特别适合嵌入式系统、移动应用及需要简化部署流程的场景。
 
=== 单文件存储 ===


=== 文件系统与多任务 ===
完整的SQLite数据库——包括表、索引、触发器、视图及数据本身——存储于单个跨平台磁盘文件中。<ref name=":7">[https://www.loc.gov/preservation/digital/formats/fdd/fdd000461.shtml SQLite, Version 3 - Library of Congress]</ref> 该文件格式可在32位与64位系统之间、大端序与小端序架构之间自由复制。数据库文件大小仅受限于底层文件系统,理论上限约140TB。<ref name=":7" />
Linux支持多用户、多任务与多线程操作,各用户拥有独立的文件权限与资源配额。在文件系统方面,Linux原生支持ext系列(ext2/3/4)、XFS、Btrfs等文件系统,并通过虚拟文件系统(VFS)层实现对不同文件系统的统一访问。此外,Linux具备完善的网络功能,原生支持TCP/IP协议栈,这使其成为网络服务器与云计算基础设施的首选平台<ref name=":2" />。


== 应用与影响 ==
=== 事务与并发 ===


=== 服务器与超级计算机 ===
SQLite支持完全兼容ACID(原子性、一致性、隔离性、持久性)的事务,即使在系统崩溃或断电后也能保证数据完整性。<ref name=":0" /> 其采用数据库级锁定机制,在事务开始时锁定整个数据库文件。在嵌入式数据库中,SQLite是唯一允许多个应用程序同时访问同一数据库的实现。<ref name=":6" />
Linux在服务器市场占据主导地位,根据行业统计,全球绝大多数Web服务器与云计算实例运行Linux系统。在超级计算机领域,Linux更是几乎垄断了TOP500榜单,世界上性能最强的500台超级计算机全部运行Linux操作系统<ref name=":1" />。其稳定性、安全性与可定制性使其成为企业级数据中心的核心基础设施。


=== 移动设备与嵌入式 ===
=== 体积与性能 ===
基于Linux内核的[[Android]]操作系统已成为全球市场份额最高的移动平台。此外,Linux广泛应用于路由器、智能电视、工业控制与物联网设备等嵌入式场景。其开源特性与对多种硬件架构(x86、ARM、RISC-V等)的支持,使其成为嵌入式开发的主流选择<ref name=":2" />。
 
SQLite核心库体积小巧,完整配置下不足400KiB,省略可选功能后可降至250KiB以下。<ref name=":0" /> 引擎以ANSI-C编写,不依赖外部库,可直接编译为单一源文件嵌入其他项目。<ref name=":7" /> 尽管体积极小,SQLite实现了SQL92标准的大部分功能,包括子查询、事务、触发器及视图等。
 
== 应用领域 ==
 
SQLite的部署范围极为广泛。它内置于Android、iOS、[[macOS]]、[[Windows]] 10及主流[[Linux]]发行版中,亦是[[Chrome]]、[[Firefox]]、[[Safari]]等[[浏览器]]的组成部分。<ref name=":7" /> 此外,Skype、iTunes、Dropbox、TurboTax、QuickBooks及Adobe Photoshop Lightroom等应用均采用SQLite作为本地数据存储方案。<ref name=":5" /> 在[[编程]]语言层面,[[PHP]]、[[Python]]及Tcl/Tk的标准库均包含SQLite绑定。
 
在嵌入式与物联网领域,SQLite被用于汽车多媒体系统、机顶盒、智能电视及航空电子系统(如Airbus A350)。<ref name=":2" /> 其作为应用文件格式的角色亦日益重要,例如OGC GeoPackage地理数据格式即基于SQLite构建,质谱数据格式mzDB亦采用其作为基础。<ref name=":7" />
 
== 与客户端/服务器数据库的比较 ==
 
SQLite与[[MySQL]]、PostgreSQL、Oracle等客户端/服务器数据库的设计目标不同。后者旨在实现企业级数据的共享存储,支持高并发、多用户及复杂查询优化;SQLite则专注于为单个应用程序提供本地数据存储,强调零管理开销与嵌入式部署。<ref name=":7" />
 
在客户端/服务器架构中,独立的服务器进程可提供更强的内存隔离与更精细的并发控制;SQLite的无服务器设计则消除了安装、配置与维护服务器的负担,但在高写入并发场景下性能受限。<ref name=":6" /> 因此,SQLite适用于移动应用、桌面软件、嵌入式设备及中小型网站,而传统客户端/服务器数据库更适合高并发[[Web]]服务、数据仓库及企业级应用。


== 参考文献 ==
== 参考文献 ==
<references />
<references />

2026年7月15日 (三) 21:04的版本

SQLite是一个嵌入式关系数据库引擎,以自包含(self-contained)、无服务器(serverless)、零配置(zero-configuration)及事务性(transactional)为设计特征。[1] 由美国开发者D. Richard Hipp于2000年创建,其源代码处于公有领域,可自由用于任何目的。[2] 整个数据库存储于单个跨平台磁盘文件中,应用程序通过链接SQLite库直接读写该文件,无需独立的服务器进程或管理配置。[1] 据官方估计,全球活跃的SQLite数据库数量超过一万亿个,使其成为历史上部署最广泛的数据库引擎。[3]

历史

SQLite诞生于2000年春季,创始人D. Richard Hipp当时受雇于General Dynamics,为美国海军导弹驱逐舰项目开发软件。[4] 项目最初使用HP-UX系统与IBM Informix数据库,但数据库服务器频繁故障导致应用程序崩溃,促使Hipp思考"为什么我们需要一个服务器?"[3] 这一疑问催生了SQLite的设计理念:一个无需安装、无需管理、直接嵌入应用程序的数据库引擎。

2000年8月,SQLite 1.0正式发布,最初基于GNU Database Manager(gdbm)构建。[5] 随后SQLite 2.0以自定义B树实现替代gdbm,并加入事务支持。2004年6月,SQLite 3.0.2 beta发布,引入了动态类型系统、UTF-8/UTF-16支持及更灵活的数据库模式,奠定了现代SQLite的架构基础。[5]

2006年,SQLite被纳入Android操作系统;2007年,被纳入Apple iOS。[6] 此后,SQLite迅速渗透至各类计算平台。2011年,Hipp宣布计划为SQLite添加UNQL接口,并开发文档型数据库UNQLite。[5]

SQLite的源代码由Hipp及其小型团队通过Fossil分布式版本控制系统维护,不接受外部贡献,以确保代码完全处于公有领域。[2] Hipp将SQLite测试至航空软件标准,实现了100%分支覆盖率,此后Android等平台的bug报告显著减少。[3]

技术特性

无服务器架构

与传统客户端/服务器数据库不同,SQLite没有独立的服务器进程。[7] 应用程序通过函数调用直接与数据库文件交互,在同一进程内完成数据读写,避免了进程间通信的开销。[1] 任何能够访问磁盘的程序均可使用SQLite数据库,无需安装、配置或启动服务。

零配置

SQLite无需安装程序、配置文件或管理权限。不存在需要创建的数据库实例,也无需分配用户访问权限或进行恢复操作。[1] 系统崩溃或断电后无需人工干预即可自动恢复。这一特性使其特别适合嵌入式系统、移动应用及需要简化部署流程的场景。

单文件存储

完整的SQLite数据库——包括表、索引、触发器、视图及数据本身——存储于单个跨平台磁盘文件中。[8] 该文件格式可在32位与64位系统之间、大端序与小端序架构之间自由复制。数据库文件大小仅受限于底层文件系统,理论上限约140TB。[8]

事务与并发

SQLite支持完全兼容ACID(原子性、一致性、隔离性、持久性)的事务,即使在系统崩溃或断电后也能保证数据完整性。[1] 其采用数据库级锁定机制,在事务开始时锁定整个数据库文件。在嵌入式数据库中,SQLite是唯一允许多个应用程序同时访问同一数据库的实现。[7]

体积与性能

SQLite核心库体积小巧,完整配置下不足400KiB,省略可选功能后可降至250KiB以下。[1] 引擎以ANSI-C编写,不依赖外部库,可直接编译为单一源文件嵌入其他项目。[8] 尽管体积极小,SQLite实现了SQL92标准的大部分功能,包括子查询、事务、触发器及视图等。

应用领域

SQLite的部署范围极为广泛。它内置于Android、iOS、macOS、Windows 10及主流Linux发行版中,亦是Chrome、Firefox、Safari等浏览器的组成部分。[8] 此外,Skype、iTunes、Dropbox、TurboTax、QuickBooks及Adobe Photoshop Lightroom等应用均采用SQLite作为本地数据存储方案。[6] 在编程语言层面,PHP、Python及Tcl/Tk的标准库均包含SQLite绑定。

在嵌入式与物联网领域,SQLite被用于汽车多媒体系统、机顶盒、智能电视及航空电子系统(如Airbus A350)。[3] 其作为应用文件格式的角色亦日益重要,例如OGC GeoPackage地理数据格式即基于SQLite构建,质谱数据格式mzDB亦采用其作为基础。[8]

与客户端/服务器数据库的比较

SQLite与MySQL、PostgreSQL、Oracle等客户端/服务器数据库的设计目标不同。后者旨在实现企业级数据的共享存储,支持高并发、多用户及复杂查询优化;SQLite则专注于为单个应用程序提供本地数据存储,强调零管理开销与嵌入式部署。[8]

在客户端/服务器架构中,独立的服务器进程可提供更强的内存隔离与更精细的并发控制;SQLite的无服务器设计则消除了安装、配置与维护服务器的负担,但在高写入并发场景下性能受限。[7] 因此,SQLite适用于移动应用、桌面软件、嵌入式设备及中小型网站,而传统客户端/服务器数据库更适合高并发Web服务、数据仓库及企业级应用。

参考文献