常用数据库及Qt中的用法

一、常用数据库
数据库管理系统(DBMS)是旨在使用、检索和定义规则以验证和操作数据库中的数据的软件。有四种DBMS类型:关系型、面向对象型、分层型和网络型。有很多开源数据库,包括MySQL、SQLite等。

SQLite:是一个开源的关系型数据库管理系统(RDBMS)。 RDBMS在多个二维表中存储数据,而不是一个大表。每张表由包含唯一值的行组成,该值被称为键,用于连接各表。这就是为什么这些DBMS被称为关系型。SQLite,正如它的名字所暗示的,在设置、管理和存储方面是轻量级的。
大多数数据库需要一个服务器进程,但SQLite是无服务器的,这意味着应用程序可以直接读取和写入数据,而不需要客户端-服务器架构。此外,无服务器的SQLite不需要安装或配置,使其自成一体,对操作系统(OS)的依赖性较低。这些特点使SQLite适用于物联网(IoT)、嵌入式应用和桌面应用。

MySQL: 与SQLite不同,MySQL遵循客户端-服务器架构,需要服务器来运行。服务器使用结构化查询语言(SQL)处理检索、操作和添加数据等命令。
MySQL还带有一个内置的图形用户界面(GUI),称为MySQL Workbench,用于访问数据。它还提供了一个名为mysqladmin的命令行界面(CLI),用于管理可用的数据。此外,MySQL是独立于平台的,这意味着它可以在任何操作系统上运行,并与不同的编程语言如Python、Java和C++兼容。
作为最流行的DBMS,还有一个优势:它的社区。互联网上有数以百万计的教程可以帮助你学习MySQL,而且你可以在网上找到几乎任何问题的答案。由于Oracle维护着MySQL,你可以在MySQL网站上找到教程、证书和支持。你还可以在我们的博客上阅读更多关于MySQL的信息。

二、SQLite与MySQL:用例分析
虽然MySQL和SQLite都是开源的RDBMS,但它们的架构和使用情况非常不同。

架构
MySQL遵循一个多层的服务器-客户端架构,由客户端、服务器和存储组成。客户端层使用GUI或CLI处理用户查询和命令。服务器层处理命令的逻辑,为每个请求创建一个新的线程。最后,存储层负责存储数据表格。
SQLite是一个无服务器的DBMS,它将SQL编译成字节码,然后使用虚拟机执行。后端以B树的实现方式将表存储在磁盘上。

数据类型
像大多数DBMS一样,MySQL使用静态类型进行数据存储,这意味着你必须在创建表的时候定义列数据类型。

虽然大多数数据库引擎仍然使用静态类型来存储字符串数据,但SQLite使用动态类型来存储数据–存储在列中的值决定了列的数据类型。例如,如果你在创建时创建了一个整数类型的表,你可以在这个列中存储任何数据类型,因为该类型与值本身相关,而不是它的容器。此外,MySQL对常见的静态类型有向后兼容性。

SQLite使用数据类型,而不是数据的存储类。这些类型比数据类型更通用,可以采用以下存储类之一。NULL、INTEGER、TEXT、BLOB和REAL。

可扩展性
MySQL的服务器-客户端架构是为可扩展性和大型数据库而设计的。服务器层简化了服务器的功能,而无需更新客户端。

相反,SQLite仅限于单用户访问,使可扩展性变得困难。此外,所需的内存量随着数据库的增大而增加。

可移植性
MySQL在移动前需要压缩成一个文件,随着数据库的增加,这可能需要很长的时间。同时,SQLite将数据库保存为一个文件,使得复制和转移很容易。由于SQLite在虚拟机上运行查询,它对操作系统的依赖性很小。
设置的简易性
MySQL需要许多配置,如服务器配置、用户管理和备份。另一方面,SQLite很容易安装,不需要任何配置就可以运行。

三、小结
数据库对大多数应用来说都是必不可少的。比较SQLite与MySQL是具有挑战性的,因为两者都有方便的功能和独特的用例。SQLite是轻量级和可移植的,使它更适合于小规模的应用,如物联网和低流量的网站。另一方面,MySQL有一个庞大的社区基础,更适合可扩展的应用。