前言

  • 数据库其实跟node关系不大,但是又无法绕过的一个话题
  • 这门知识非常深要研究的很细的话很难,有个职业叫DBA,专门来管理数据库的,也就是说单独学好数据库就可以找工作
  • 对于前端的话,能用就行了,一般面试前端不会问数据库的知识

1. 数据库是什么

数据库是用来 组织、存储和管理数据的仓库

2. 数据库能做什么

2.1 持久的存储数据

之前我们存储数据一般都是直接存到内存中,或则磁盘中

内存中数据

  • 内存中的数据也就是我们代码中的变量、函数这些
  • 优点是:读写速度非常的快
  • 缺点是:内存容量小(一般内存比较贵)。无法持久化保存,一旦程序停止,或则电脑关机,对应的内存的数据就会销毁
  • 存储数据的格式:内存中的数据可以存储任意类型的数据,比如二进制、字符串、数组、数字

磁盘中的数据

  • 我们电脑中的大部分的文件都是存在磁盘中的
  • 优点是:磁盘空间大,可以持久化存储
  • 缺点是:读写速度非常的慢
  • 存储数据的格式:一般是存的是 字符串、二进制,存储格式比较少

总结

磁盘的存储格式比较有限,当程序需要从磁盘中读取数据到内存中的时候,格式可能不一致,需要自己手动转换,非常的麻烦

所以说到底,数据库就是为了适配内存与磁盘之间的存储格式不一致的问题,数据库就是磁盘与内存的中间桥梁,最后数据库也是存储在磁盘上的

2.2 备份和恢复数据

可以制定策略自动备份数据,根据备份的数据来恢复数据,这样就非常灵活,安全性也是非常高

2.3 快速的存取数据

相对于磁盘而言,数据库可以存取数据非常的快,而且可以按量取数据,比如取一条也行,取100条也行,非常的灵活,还包括快速的按条件搜索数据

2.4 权限控制

数据可以分配不同的权限给不同的用户,更加方便,更加精细化的管理存储的数据

3. 数据库类型

3.1 关系型数据库

什么是关系型数据库

就是表达了数据表与数据表之间关系的数据库,你可以简单的把它理解成excel表格

优点

  • 能够表达非常复杂的数据关系(各个表之间的复杂联系关系)
  • 强大的查询语言,能够精准的找到你想要的数据(查询条件非常的细化,非常的强大)

缺点

  • 读写性能差。特别是当数据量大起来之后,读写性能下降的比较严重(相对于非关系型数据库)
  • 数据结构比较死板。类似于excel它的每一列事先定义好,不可以改变,每增加活修改数据,都不能多出来列,也不行少列

用途

一般复杂的数据用关系型数据库,我们日常用的业务数据,一般都会使用关系型数据,比如用户 订单 地址

代表

  • Oracle(太重量级了)
  • Mysql(免费,轻量级,一般选择这个)
  • Sql Serer(太重量级了)

3.2 非关系型数据库

3.2.1 什么是非关系数据库

以非常简单的结构来存储数据

3.2.2 分类

文档型

按照文档的形式存储数据,想写什么信息就什么信息,数据结构不受约束,类似于JS中的对象,对象里面可以包含任何形式的数据。

典型代表就是MongoDB

键值对

以键值对的形式存储数据,就是 keyvalue的形式。典型代表就是 redis

优点

格式灵活

因为的列是不固定的,随时可以改,所以非常的灵活,不像excel一样,列是固定的,不可以修改

读写效率高

特别是在数据量大的时候,读写效率非常高,比关系型数据库高很多,这是由于底层设计导致的

3.2.3 缺点

  • 无法表达复杂的关系结构
  • 对于复杂的查询效率不高

3.2.4 用途

适合存储结构比较简单、数据量大的数据

比如用户访问数据、地理位置信息(车辆轨迹) ,结构简单并且数据量非常大,就非常适合非关系型数据

3.2.5 代表

  • MongoDB
  • redis
  • Membase

3.3 面向对象数据库

  • 一般是请类型语言用到的,比如Java,C#
  • 它可以实现将对象数据结构直接存到数据库,获取的时候也是直接获取对象数据,非常的方便,省去了转换的过程
  • 一般都是商业级的,收费的,比如ObjectDB

三年三月
7 声望0 粉丝