数据库的分类
根据存储数据时所用数据模型的不同,当今互联网中的的数据库主要分为两种:关系型数据库和非关系型数据库。
1. 关系型数据库
关系型数据库是指采用关系模型(即二维表格形式)组织数据的数据库系统,它由数据表和数据表之间的关系组成,主要包含以下核心元素:
数据行:一条记录,相当于Python对象;
数据列:字段,相当于Python对象的属性;
数据表:数据行的集合;
数据库:数据表的集合。
下面看一个数据表的示例,如图1所示。
图1 数据表示例
关系型数据库经历了几十年的发展,技术比较成熟,因其具有容易理解、操作简单、便于维护的特点,而被广泛应用到各个行业的数据管理中。目前,主流的关系型数据库有Oracle、MySQL、IBM Db2、PostgreSQL、Microsoft SQL Server、Microsoft Access等,其中使用较多的有Oracle和MySQL数据库。
2. 非关系型数据库
非关系型数据库也被称为NoSQL(Not Only SQL)数据库,是指非关系型的、分布式的数据存储系统。与关系型数据库相比,非关系型数据库无需事先为要存储的数据建立字段,它没有固定的结构,既可以拥有不同的字段,也可以存储各种格式的数据。
非关系型数据库的种类繁多。按照不同的数据模型,非关系型数据库主要可以分为列存储数据库、键值存储数据库、文档型数据库,下面分别介绍这些数据库各自的特征及适用范围。
(1) 键值(Key-Value)存储数据库
键值存储数据库采用键值结构存储数据,每个键分别对应一个特定的值。这类数据库具有易部署、查询速度快、存储量大、高并发操作等特点,适用于处理大量数据的高访问负载和一些日志系统等。
键值存储数据库的典型代表有Redis、Flare、MemcacheDB等。
(2) 列式(Column-Oriented)存储数据库
列式存储数据库采用列式结构存储数据,将同一列数据存储到一起。这类数据库具有查询速度快、可扩展性强等特点,更容易进行分布式扩展,适用于分布式的文件系统。
列式存储数据库的典型代表有Hbase、Cassandra等。
(3) 文档型(Document-Oriented)存储数据库
文档型存储数据库的结构与键值存储数据库类似,采用文档(如JSON或XML等格式)结构存储数据,每个文档中包含多个键值对。这类数据库的数据结构要求并不严格,具有表结构可变、查询速度更快的特点,适用于Web应用的场景。
文档型数据库的典型代表有MongoDB、CouchDB等。
为了让读者更好地理解文档型数据库的数据结构,这里以MongoDB为例进行介绍。MongoDB数据库主要包含3个核心元素,分别为文档、集合和数据库,各个元素的介绍如下。
文档:由JSON或XML数据构成的对象,对应关系数据库中的行;
集合:文档的物理容器,对应关系数据库中的表;
数据库:集合的物理容器,一个数据库中可以包含多个文档;
在众多数据库中,MySQL、MongoDB和Redis都是比较突出的,应用也比较广泛。针对这些主流的数据库,Python提供了包或模块实现程序与数据库交互。例如,使用pymysql库操作MySQL数据库,使用pymongo模块操作MongoDB数据库,使用redis模块操作Redis数据库。