数据库分类及简介

数据库

一般来讲,我们在电脑中存储数据都是通过文件来实现的,但是对于后端开发者来讲,我们不可能每次处理数据都通过文件来实现,这个时候数据库就产生了。

我们所说的数据库是指数据库管理系统,数据库中的数据还是存放在文件中的,但是我们可以通过数据库管理系统来很方便的操作这些数据。

什么是数据库

数据库(DataBase,简称DB),是指可以长期存放在计算机内部的、可以进行数据管理的仓库(可以直接理解为储存数据的仓库)。

  • 数据库是依据数据结构来构建的,所以我们看到的数据是比较”条理化“的(数据库分为库、表和一条条记录)

  • 查找的速度较快

  • 数据共享

数据库分类

目前数据库主要分为传统的关系型数据库(SQL)非关系型数据库(NoSQL),当然还有近几年新出现的NewSQL新型数据库分布式数据库等等。

1.关系型数据库(SQL)

传统的关系型数据库有着悠久的历史,从上世纪60年代开始就已经在航空领域发挥作用。因为其严谨的一致性以及通用的关系型数据模型接口,收获了很大一批的用户。

关系型数据库是把数据以表的形式进行储存,然后再各个表之间建立关系,通过这些表之间的关系来操作不同表之间的数据。

常见的关系型数据库有MySQLOraclePostgreSQL等等。

  • 关系型数据库是依据关系模型来创建的数据库,所谓的关系模型是指 “一对一、一对多、多对多”,通过关系模型来构建二维表格
  • 一对一:身份证号、校园卡
  • 一对多:班级-学生、部门-职员
  • 多对多:课程-学生、书籍-作者

以一个简单的学生课程管理系统为例:学生和课程是多对多的关系

学生表:

id name age sex
1 zxy 18 0
2 gn 18 0
3 ljz 18 1

课程表:

course_id name classroom time
1 高数 N107 -
2 线代 N207 -
3 英语 N307 -

学生-课程表:

id student_id course_id
1 1 2
2 3 3
3 2 1
4 1 3

优点

  • 数据安全(磁盘)、数据一致性

  • 二维表结构直观,易理解

  • 使用SQL语句操作非常方便,可用于比较复杂的查询

缺点

  • 读写性能较差
  • 不擅长处理较复杂的关系

2.非关系型数据库(NoSQL)

到了2000年代,由于互联网应用的兴起,互联网应用需要支持大规模的并发用户,并且要保持永远在线。但是传统的关系型数据库却因为无法支持如此大规模数据和访问量而成为了整个系统的瓶颈。最简单直接的办法是不断升级硬件系统,使用更多的CPU,内存和硬盘。但是这种方法只是提高了性能,并且呈现明显的收益递减效应。更糟糕的是,将数据库从一个机器迁移到另一个机器是一个比较复杂的过程,通常需要较长的停机时间。而这对于Web应用来说是不可接受的。

这些问题引发了2000年代NoSQL的诞生。NoSQL的关键是它们放弃了传统关系型数据库的强事务保证关系模型,通过所谓最终一致性和非关系数据模型(例如键值对,图,文档)来提高Web应用所注重的高可用性和可扩展性。

相比于关系型数据库,表与表之间是有关系的,利用表与表之间的关系进行各种操作。而NoSQL没有固定的表结构,且数据之间不存在表与表之间的关系,数据之间可以是独立的,因此NoSQL也可以用于分布式系统上。

NoSQL大致可以分为四种:

分类 数据模型 优势 举例
键值数据库(key-value) 哈希表 查询快、易部署、高并发 Redis、Memcached
列存储数据库 列式数据存储 查询快,数据压缩率高,不需要额外建立索引 HBase
文档型数据库 键值对扩展 将数据以文档的形式储存,数据结构不定 MongoDB
图数据库 节点和关系组成的图 利用图结构的相关算法 Neo4j、JanusGraph
  • 键值数据库(key-value)

键值数据库类似于传统语言中使用的哈希表。可以通过key来添加、删除、查询数据,因为使用key主键来访问,所以键值数据库有很高的性能及拓展性。

例如现在很火的redis,由于其数据是储存于内存,读写速度非常快。Redis在一秒内读写可以超过十万个键值。它虽然是作为数据库来开发的,现在更广泛的应用于缓存、消息队列。

  • 列存储数据库

不同于关系型数据库的以行为单位储存,列存储数据库将数据存储于列族中,一个列族存储经常被一起查询的相关数据。

先来说说行式数据库,行式数据库是一行一行进行存储的,我们进行查询的时候,也要一行一行进行扫描。例如,我们要从上面的课程表中查询 name 是线代的课程,还会同时查询到很多我们不需要的信息。即使我们需要的一列的数据,也要进行整行扫描。这在某些场景下是很浪费IO效率的。

列式数据库主要运用于海量数据分析。因为在进行数据分析的时候,我们通常只会查询表中的一列或者几列,这时只用把这几列拿出来就可以了,其他不需要查询的我们也不关心,大大提高了检索的效率。

关于行列式数据库差别以及各自的应用场景,有兴趣可以再看看:列式数据库和行式数据库的区别什么是ClickHouse?

  • 文档型数据库

文档型数据库与键值数据库是类似的,只不过它将数据用文档的形式储存,数据存储可以是XML、JSON等多种形式。

  • 图数据库

图数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。因为使用的是灵活的图模型,所以可以拓展到多个服务器上。图数据库没有标准的SQL查询语言。许多Graph DB都有restful式的数据接口或者查询API。

图数据库一般用于推荐系统、处理社交网络等等。


有兴趣可以看下:越来越火的图数据库究竟是什么

3.NewSQL 新型关系型数据库

NewSQL可以理解为是传统的关系型数据库与NoSQL结合的产物。它试图将传统关系数据库的数据一致性优势与NoSQL平台的可伸缩性结合起来。

NewSQL is a class of modern relational database management systems that seek to provide the same scalable performance of NoSQL systems for online transaction processing (OLTP) read-write workloads while still maintaining the ACID guarantees of a traditional database system.

关于NewSQL,推荐阅读:NewSQL databases: The bridge between SQL and NoSQLBeyond NoSQL: The case for distributed SQL

关于MySQL的学习:

  • 首先上文档

    官方文档:https://dev.mysql.com/doc/refman/5.7/en/keywords.html

    中文文档:https://www.mysqlzh.com

  • 书籍:《MySQL必知必会》、《SQL基础教程 第2版》

  • 掘金小册:《MySQL是怎样适用的:从零蛋开始学习MySQL》、《MySQL是怎样运行的:从根儿上理解MySQL》

  • 快速上手的话可以看:廖雪峰的MySQL教程、菜鸟教程

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容