我知道 SQLite 数据库用于移动设备(Android、iPhone),它很轻,只占用 Kb 空间。SQLite 有什么限制吗?我想知道它们有何不同。
7 回答
每个 SQL 数据库都使用自己的语言实现,但略有不同。虽然基本查询几乎是通用的,但 MySQL、PostgreSQL、Microsoft SQL Server、Oracle 数据库等之间存在显着的细微差别。
SQLite 特别值得注意的是,与上面提到的所有其他软件不同,该数据库软件没有附带查询通过的守护程序。这意味着如果多个进程同时使用数据库,它们将直接通过 SQLite 库更改数据,并对操作系统本身进行读/写数据调用。这也意味着锁定机制不能很好地处理争用。
对于大多数考虑使用 SQLite 的应用程序来说,这不是问题——开销小好处和数据检索简单是值得的。但是,如果您将使用多个进程访问数据库,或者不考虑通过一个线程映射所有请求,则可能会有些麻烦。
Sqlite 是非常轻量级的 SQL 版本,支持 SQL 的许多特性。基本上是为手机、平板电脑等小型设备开发的。
SQLite 是一个第三方的、开源的、进程内的数据库引擎。SQL Server Compact 来自 Microsoft,是 SQL Server 的精简版。它们是两个相互竞争的数据库引擎。
SQL 是查询语言。Sqlite 是嵌入式关系数据库管理系统。
编辑:(来自以下对我的回答的评论)
Sqlite 也不需要特殊的数据库服务器或任何东西。它只是一个使用 SQL 语法的直接文件系统引擎。(作者:亚当·普洛彻)
从技术上讲,SQLite 不是开源软件,而是公共领域。没有许可证。(作者:拉里·拉斯提格)
SQL 是查询语言。Sqlite 是嵌入式关系数据库管理系统。
与其他数据库(如 SQL Server 和 MySQL)不同,SQLite 不支持存储过程。
SQLite 是基于文件的,不像其他数据库,如基于服务器的 SQL Server 和 MySQL。
什么是 SQLite?
SQLite 是一个开源、零配置、自包含、独立的事务关系数据库引擎,旨在嵌入到应用程序中。
Python SQLite 可以定义为使用 ANSI-C、轻量级基于磁盘的数据库开发的 C 库;不需要额外的或任何其他单独的服务器进程。
SQLite 有哪些特点?
SQLite不需要服务器来运行(RDBMS 如 MySQL、PostgreSQL 等,需要单独的服务器进程来运行)。
是独立的,它需要操作系统或外部库的最少支持。这使得 SQLite 可以在任何环境中使用,尤其是在 iPhone、Android 手机、游戏机、手持媒体播放器等嵌入式设备中。
不使用任何配置文件。
符合ACID标准。这意味着所有查询和更改都是原子的、一致的、隔离的和持久的,即使发生应用程序崩溃、电源故障或操作系统崩溃等意外情况,事务中的所有更改都完全发生或根本不发生。
能够创建非常快速的内存数据库。
对表使用动态类型。这意味着您可以在任何列中存储任何值,而不管数据类型如何。
允许单个数据库连接同时访问多个数据库文件。
SQLite 和酸
SQLite 保证所有事务都符合ACID,即使事务因程序崩溃、操作系统转储或计算机电源故障而中断。
原子的:事务应该是原子的。这意味着不能将更改分解为较小的更改。提交事务时,要么应用整个事务,要么不应用。
一致:事务必须确保将数据库从一种有效状态更改为另一种有效状态。当事务启动并执行修改数据的语句时,数据库变得不一致。然而,当事务被提交或回滚时,事务必须保持数据库一致是很重要的。
隔离:一个会话执行的待处理事务必须与其他会话隔离。当会话启动事务并执行 INSERT 或 UPDATE 语句来更改数据时,这些更改仅对当前会话可见,其他会话不可见。另一方面,其他会话在事务开始后提交的更改不应该对当前会话可见。
持久性:如果事务成功提交,无论电源故障或程序崩溃等情况如何,更改都必须在数据库中永久存在。相反,如果程序在事务提交之前崩溃,则更改不应持续存在。
SQLite和SQL之间最基本的区别是:
SQL是一种查询语言,被不同的 SQL 数据库使用。它本身不是数据库。
SQLite是一个使用 SQL 的数据库管理系统。
SQL 是一种数据库查询语言,而 SQLite 是一种使用 SQL 规范的数据库 (RDBMS)。SQLite 可以说是微软 SQL Server 的竞争对手。
这个名字本身就表明它是 SQL RDBMS 的轻量级版本。它用于大多数小型便携式设备,例如 Android 和 iOS 设备。
SQLite:数据库管理系统(DBMS)。
SQL:结构化查询语言是一种计算机语言,用于通过查询从 DBMS 创建、编辑和获取数据。