世界上使用最广泛的数据库
#python #linux #go #sqlite

世界上使用最广泛的数据库

Photo by [Jan Antonin Kolar](https://unsplash.com/@jankolar?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)
Jan Antonin Kolar摄于Unsplash

一块琐事

对于程序员来说,这将是一个很好的问题(顺便说一句,我一定会看!):

世界最广泛使用的数据库是什么?

  1. mysql

  2. oracle

  3. mongodb

  4. Microsoft Access

  5. 其他东西

答案当然是其他的,即sqlite。根据他们的homepage,有超过1万亿(1E12)sqlite数据库活​​跃使用!

什么是sqlite?

SQLite是一种独立的,无服务器,零配置,交易SQL数据库引擎。让我们一一介绍这些特征。

sqlite是独立的或self-contained,因为它的依赖项很少。它在任何操作系统上运行,整个SQLite库都封装在单个源代码文件中,该文件不需要特殊的设施或工具才能构建。同样,完整的SQLite数据库不过是一个文件。

sqlite是serverless,因为与大多数SQL数据库引擎不同,它并未作为客户端服务器流程实现。使用SQLITE,希望访问数据库的过程读取和直接从磁盘上的数据库文件进行写入。没有中介服务器流程。

这也解释了为什么SQLITE是zero-configuration数据库。它在使用之前不需要安装,没有设置,管理员不需要创建新的数据库实例或为用户分配访问权限。 sqlite只是工作,正如主页所说的。

最后,这是一个transactional数据库,其中所有操作似乎都是原子,一致,孤立和耐用的(ACID),这是数据库中最重要的质量标准。 SQLITE明确保证单个事务内的更改是否完全完全完全不是,即使将更改写入磁盘的行为被程序崩溃中断,操作系统崩溃甚至电源故障!

启动,sqlite是public domainsmall(约600 kb),fast(sqlite可以比您的文件系统更快),reliable,cross-platform,并提供SQL Legurchance的完整风味 - 确实是世界上最广泛部署的数据库,famous users如Adobe,Dropbox,Facebook或Google,他们将其用于Android OS和Chrome。

然而,尽管有SQLite的所有积极方面,但仍有一些缺点。毫无疑问,最重要的是,SQLite不允许并发写作进程( Reading 不是问题)。如果您需要并发写作,则可以看一下PostgreSQL,这也是开源的。此外,SQLITE数据库的数据类型有限(例如,缺少日期或时间类型),与标准SQL相比,其SQL方言具有一定的限制。

SQLite是用什么?

sqlite数据库文件是美国国会图书馆的recommended storage format,作为Application File Format的流行而出色的选择。例如,让您说您正在为智能手机编写联系人应用程序。除了漂亮的用户界面外,您还需要一个可靠,快速,轻巧的数据库来存储您的联系人数据。 etvoilã,输入sqlite�,这正是发生的。智能手机,小工具,桌面应用程序 - 实际上每天都有数千亿个SQLITE数据库文件。仅引用另一个示例,SQLite也是使用Django制造的应用程序的默认数据库引擎,这是一个流行的Python Web框架。

如何使用sqlite

对于下一节,我将使用一个基本数据库演示如何与SQLITE数据库进行交互。这里是CSV格式的外观(第一行包含列标题):

identifier,product,colour
1,apples,red
2,bananas,yellow
3,grapes,purple

GUI

首先,我们应该指出,非技术用户也可以轻松地操纵SQLite。有几个出色的开源SQLite浏览器或编辑器可用,可以使用图形用户界面来操纵SQLITE数据库。两个值得注意的例子是DB BrowserSqlite Viewer

DB Browser

CLI

SQLITE项目提供了一个名为** SQLITE3 **的简单命令行程序,该程序允许用户使用SQLITE数据库手动输入和执行SQL语句。您可以通过两种方式使用此程序。

首先,您可以在直接模式下使用它,即可以在终端环境或shell脚本中使用二进制sqlite3。这也意味着您可以从任何其他编程语言中执行SQLite操作,只要您选择的语言能够产生外壳过程。

例如,为上述数据库创建架构,看起来像这样:

tdeneire@XPS-13-9370:~/tmp$ sqlite3 mydb.sqlite 'CREATE TABLE fruit (identifier integer, product text, colour text)'

另外,Sqlite还提供了一个交互式命令行壳,我个人不经常使用,除非出于教学目的而偶尔进行调试。

插入我们的数据库值,例如,看起来像这样:

tdeneire@XPS-13-9370:~/tmp$ sqlite3 mydb.sqlite
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> INSERT INTO fruit VALUES(1,'apples','red');
sqlite> INSERT INTO fruit VALUES(2,'bananas','yellow');
sqlite> INSERT INTO fruit VALUES(3,'grapes','purple');
sqlite> .quit

蜜蜂

有许多编程语言的sqlite API,包括C/C ++,C#,GO,Java,Perl,Php,Php,Python,请首先看一下Python模块,这是该模块的一部分标准库:


该程序的输出为[(2,'Bananas')]。

在Go中,您需要首先要install go-sqlite3软件包。之后,使用也很简单:

Sqlite团队的更多信息

这似乎是总结我们介绍SQLite的好点。但是,关于这项方便的技术,仍然有很多话要说!

此外,

Sqlite team(由辉煌的D. Richard Hipp领导)负责更多有趣的工具。例如:

  • Fossil是一种专门用于支持SQLITE开发的分布式版本控制系统,但非常可用作为Git的替代方案。化石使用sqlite作为存储。

  • SQLite Archiver是一种使用SQLite进行存储的ZIP状档案程序。它允许用户存档文件,并包含任何数量的数据库表和可能与存档有关的数据。

因此,下次您需要存储一些应用程序的应用程序时,为什么不考虑sqlite?


嗨! ð我汤姆。我是软件工程师,技术作家和IT倦怠教练。如果您想取得联系,请查看https://tomdeneire.github.io