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