本文正在参加「技术专题19期 漫谈数据库技术」活动
作为一个前端,以往我对数据库的认识只有增删改查,有时候会提出让后端同学为难的要求,甚至在他解释为什么不能做到时表示不理解,为了更好地和后端同学交流,特地写一篇文章了解各大数据库,以及他们之间的差别。
一、数据库类型
数据库分为关系型数据库和非关系型数据库。
在开发中,我最常听到的是MySQL、Oracle、SQL Server、redis、MongoDB,所以我只了解我听过的这些数据库,上面说的那些数据库分类后如下:
| 数据库类型 | 数据库名称 |
|---|---|
| 关系型数据库 | MySQL、Oracle、SQL Server |
| 非关系型数据库 | redis、MongoDB |
现在,我了解了这些数据库的类型,那么不同的数据库类型又有什么差别呢?我大致整理了下表:
| 数据库类型 | 数据结构 | 优点 | 缺点 |
|---|---|---|---|
| 关系型数据库 | 由表以及他们之间的联系组成的数据结构 | 易使用;易维护;复杂语句 | 读写性能较差;灵活度较差;高并发较难处理 |
| 非关系型数据库 | 数据结构化存储(键值对存储、文档存储等) | 格式灵活;可扩展;速度较快;开源 | 难使用;无事务处理;复杂查询较弱 |
以上就是数据库类型的大致介绍,下面介绍数据库以及他们之间的对比。
数据库介绍及对比
| 数据库名称 | 优点 | 缺点 |
|---|---|---|
| MySQL | 体积小;速度快;开源;支持多种操作系统;支持多种语言连接操作;多线程;稳定性高;灵活且安全的权限口令系统;可扩展;支持大型数据;操作方便 | 不支持热备份;安全系统复杂且非标准;没有存储过程 |
| Oracle | 安全性高;处理速度快;性能好;支持多种工业标准 | 对硬件的要求高;不开源,贵;管理维护性差;操作复杂 |
| SQL Server | 事务处理功能强;数据的完整性高;高性能;管理维护性高 | 只能运行在windows平台;只支持 C/S 模式;难以处理大规模数据;多用户时性能差;安全性低; |
| redis | 读写速度快;支持数据持久化;支持简单事务;支持多种数据类型;读写分离;支持哨兵机制 | 数据易丢失;大数据量性能差;在线扩容较困难 |
| MongoDB | 访问速度快;性能高;支持丰富的查询语言;支持海量数据;最像SQL;集群部署较简单;分片集群配置较简单 | 数据量大时写入性能不稳定;磁盘空间占用比较大;不易维护;占用空间过大;不支持事务;开源 |