前言
本文以MySQL、Postgresql、MongoDB、Redis数据库的对比
环境
系统环境
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
Linux version : 5.3.0-46-generic ( buildd@lcy01-amd64-013 )
Gcc version: 7.5.0 ( Ubuntu 7.5.0-3ubuntu1~18.04 )
软件信息
version :
None
正文
MySQL | Postgresql | MongoDB | Redis | InfluxDB | |
---|---|---|---|---|---|
数据库模式 | 关系型(RDBMS)-Relational | 关系型(RDBMS)-Relational | 非关系型(Nosql database)-Document | 非关系型(Nosql database)-Key-value | 非关系型(Nosql database)-Time Series |
存储方式 | 不同的引擎有不同的存储方式 | 不同的引擎有不同的存储方式 | 不同的引擎有不同的存储方式虚拟内存+持久化 | ||
查询语句 | 传统sql语句 SELECT * FROM users |
传统sql语句 SELECT * FROM users |
独特的Mongodb查询 db.users.find() |
||
架构特点 | 常见有单点,M-S,MHA, MMM, Cluster等架构方式 | 可以通过副本集,以及分片来实现高可用 | |||
数据处理方式 | 不同的引擎拥有自己的特点 | 处理结构化和非结构化的数据 | 基于内存,将热数据存在物理内存中,从而达到高速读写 | ||
成熟度 | 拥有较为成熟的体系,成熟度较高 | 新型数据库,成熟度较低 | |||
广泛度 | 开源数据库的份额在不断增加,mysql的份额也在持续增加 | Nosql数据库中,mongodb是较为完善的db之一,使用人群也在不断增加 | |||
优势 | 1、数据类型多! PG不止支持传统数据类型:numeric、strings、date、decimal等,还支持非结构的数据类型:json、xml、hstore等以及网络数据类型、bit字符串,还有ARRAYS,地理数据类型。 2、支持地理信息处理扩展!PostGIS 为PostgreSQL提供了存储空间地理数据的支持,使PostgreSQL成为了一个空间数据库,能够进行空间数据管理、数量测量与几何拓扑分析。在功能上,PostGIS具有下列优势:O2O业务场景中的LBS业务使用PostgreSQL + PostGIS有无法比拟的优势。 3、快速构建REST API!PostgREST 可以方便的为任何 PostgreSQL 数据库提供完全的 RESTful API 服务 4、支持树状结构!支持R-trees这样可扩展的索引类型,可以更方便地处理一些特殊数据。 |
1、快速!拥有适量级内存的Mongodb的性能是非常迅速,它将热数据存储在物理内存中(而不仅仅是索引和少部分数据),使得热数据的读写变得十分快速,从而提高了整体的数据和效率; 2、高扩展性!Mongodb的高可用与集群架构拥有十分高的扩展性,通过物理机器的增加,以及sharding的增加,Mongodb的扩展将地道一个十分惊人的地步。 3、自身的Failover机制!Mongo的副本集配置中,当主库遇到问题,无法继续提供服务的时候,副本集将选举出一个新的主库来继续提供服务。 4、Json的存储格式,Mongodb的json和Bson的存储格式十分适合文档格式存储与查询 |
|||
缺点 | 在海量数据处理的时候效率会显著变慢。 | 不支持事务,开发文档不是很完善 | |||
适用场景 | 事件的记录,内容管理或者博客平台等等 |
后记
@TOC