概述
我们常常遇到的数据库有关系数据库和非关系数据库,MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点。所以我们所熟知的那些SQL语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言。今天小编就带着大家一起学习下关系数据库和非关系数据库。
什么是关系数据库
由二维表及其之间的联系所组成的一个数据组织。
- 在不同的引擎上有不同的存储方式。
- 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。
- 开源数据库的份额在不断增加,mysql的份额页在持续增长。
- 缺点就是在海量数据处理的时候效率会显著变慢。
优点:
- 易于维护:表结构
- 使用方便:SQL语言通用
- 复杂操作:支持SQL,支持复杂查询
缺点:
- 读写性能比较差
- 固定的表结构,灵活度稍欠
- 硬盘I/O是一个很大的瓶颈
什么是非关系数据库
非关系型数据库(NoSQL),属于文档型数据库。先解释一下文档的数据库,即可以存放XML、JSON、BSON类型系那个的数据。这些数据具备自述性,呈现分层的树状数据结构。数据结构由键值(key=>value)对组成。是一种数据结构化存储方法的集合。
- 存储方式:虚拟内存+持久化。
- 查询语句:是独特的MongoDB的查询方式。
- 适合场景:事件的记录,内容管理或者博客平台等等。
- 架构特点:可以通过副本集,以及分片来实现高可用。
- 数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
- 成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。
优点:
- 格式灵活:存储格式可以是key,value、文档、图片形式等。
- 速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘。
- 高扩展性
- 成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
- 不提供sql支持
- 无事务处理
- 数据结构相对复杂,复杂查询方面稍欠缺。
常见的数据库分类
传统关系数据库: Oracle、MySQL、Microsoft SQL Server、PostgreSQL、Sqlite
大数据常见数据库: Hive、Impala、Presto、ClickHouse
非关系数据库: redis/hbase/mongoDB/CouchDB/Neo4J
MongoDB优势与劣势
优势:
- 在适量级的内存的MongoDB的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。
- MongoDB的高可用和集群架构拥有十分高的扩展性。
- 在副本集中,当主库遇到问题,无法继续提供服务的时候,副本集将选举一个新的主库继续提供服务。
- MongoDB的Bson和JSon格式的数据十分适合文档格式的存储与查询。
劣势:
- 不支持事务操作。MongoDB本身没有自带事务机制,若需要在MongoDB中实现事务机制,需通过一个额外的表,从逻辑上自行实现事务。
- 应用经验少,由于NoSQL兴起时间短,应用经验相比关系型数据库较少。
- MongoDB占用空间过大。