除了 MySQL 数据库,你还要了解的一些数据库

数据库是我们在项目开发过程中必不可少的一项服务。 相信技术大大也都接触过各种类型的数据库,例如Oracle、MySQL、MongoDB、Redis等大众熟知的数据库。

数据库的选型,在我架构过程中也是重中之重。什么场景适合合适什么数据库,每种数据库的特点是什么,在架构中起到什么样的作用,承担的重点业务是什么?

我们在 DB-ENGINES (https://db-engines.com/en/ranking)看到,参与排名的数据库就多达354种。如下图,这里2021年7月的一个数据库排名供参考。

所以,本篇文章主要是科普一些常用的或者热门的数据库供大家了解,在以后选用数据库的时候也可以多方面考虑,选用适合的业务场景的数据库。

人的精力有限,我们不需要清楚每一种数据库里的细节,但是我们可以根据我们业务的使用场景,选择合适范围的数据库,再针对性的进行分析和选择。

数据库按类型可分为以下几类:

关系型数据库

文档型数据库

Key-Value数据库

图数据库

时序数据库

检索型数据库

列存储数据库

根据类型,我们简单的介绍一下我们经常使用、关注或者常见的数据库。
关系型数据库
关系型数据库模型是将复杂的数据结构以行和列的形式进行存储,类似于Excel表格的数据形式。在关系型数据中,对数据的操作几乎都是建立在一个或多个关系表的基础上进行的。通过表的关系来实现数据库的管理。典型的数据库有 Oracle 、 MySQL 等。Oracle、MySQL都是当下最流行的关系型数据,从上面排名可以看出,两都常年居于排行榜Top 2。

Oracle 是甲骨文公司的一款关系型数据库管理系统,它在数据库领域一直处于领先地位的产品,是一种高效率、可靠性好、高吞吐量的数据库解决方案。Oracle的高性能、高可能、可靠性是毋庸置疑的,早些年时,世界500强几乎都选用的Oracle,当然,Oracle是收费的软件。

MySQL 是开放的源码软件,相比Oracle,它可以大大降低成本。MySQL 原开发者为瑞典的MySQL AB公司,在2008年被 Sun Microsystems收购,并于2009年被甲骨文公司收购,成为Oracle旗下产品。目前MySQL有收费的企业版和免费的社区版。对于一般的个人用户或者中小型企业来说,MySQL提供的功能已经绰绰有余。当年,LAMP(LNMP)架构风靡互联网,MySQL在其中扮演了重要角色。

除此之外,PostgreSQL、OceanDB、TiDB、SQL Server、SQLite等属于关系型数据库。 PostgreSQL 是以加州大学伯克利分校计算机开发的Postgres 为基础的对象关系型数据库管理系统,在灵活的BSD许可证下发行,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。

OceanDB 是阿里巴巴和蚂蚁金服100%自主研发的金融级分布式关系数据库,在普通硬件上实现金融级高可用。

TiDB 是PingCAP公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理的融合型分布式数据库产品。适合高可用、强一致性要求较高、数据规模大等应用场景。

MicroSoftSQLServer 相信大家都不陌生,是由微软公司推出的关系数据库解决方案。它的几个初始版本适用于中小企业的数据管理,近年来应用范围有所扩展,已经触及到大型、跨国企业的数据管理。

SQLite 是遵守ACID的关系数据库管理系统,但不同的是,它不是一个客户端/服务器结构的数据库,而是被集成在了用户程序中。

关系型数据库经过几十年的发展后已经非常成熟,强大的SQL功能和ACID的属性使得关系数据库广泛应用于各行各业的系统中,但这并不意味着关系型数据库就是完美无缺的,例如:

关系数据库是行存储,无法存储数据结构

关系数据库的schema是强约束,扩展不方便

在大数据场景下I/O较高

全文检索功能弱

因此,针对关系型数据库的弱点,也就诞生了不同的NoSQL解决方案,NoSQL 可以作为SQL的一个有力的辅助方案,NoSQL != Not SQL,而是Not Only SQL。

文档型数据库
文档型数据库主要解决关系数据库强schema约束的问题,其最大特点就是no-schema,可以存储或读取任意的数据。大部分文档型数据库存储的数据格式是JSON或者BSON,其主要优势在于:

新增字段简单,无须像SQL一样先执行DDL语句修改表结构。

历史数据兼容性强,即使没有新增字段,也不会导致出错,在代码层面做好兼容性即可。

可以存储复杂的数据结构,相对SQL更简便。

当然,文档型数据库的优势也是有代价的,最主要的就是不支持事务,在某些强事务性的应用场景就不适用了。另外一个缺点就是无法使用join操作。因此需要在程序层面来实现相应的业务。以MongoDB为代表。

文档型数据库以MongoDB、CouchDB为代表。 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。2015 年 12 月,在发布的 3.2 版本中,在 MongoDB 的聚合框架(Aggregation)中增加了一个不起眼的操作符: $lookup,同时也开启了支持关系数据库的核心功能:关联。2018年6月,MongoDB推出ACID事务支持,成为第一个支持强事务的NoSQL数据库。

key-value型数据库

提到K-V存储型数据库,大家第一时间想到的NoSQL可能就要数Redis或Memcache了。它主要解决了关系数据库无法存储数据结构的问题,具有极高的读写并发能力。K-V数据库并不支持完整的ACID事务。在高访问量的系统中,我们一般首选会用到redis或者Memcache来做数据缓存,缓解数据库的压力,提升网站或应用的响应速度。

以Redis为例,Redis是K-V型数据库的典型代表,Redis的Value是具体的数据结构,我们常用的有五种,包括字符串、散列、列表、集合、有序集合,随着Redis的不断更新,数据结构也增加了HyperLogLog、位图、流、地理坐标等丰富的数据结构,每种数据结构都适用于解决一些特殊场景的问题。比如热点数据缓存、计数器、排行榜、队列、分布式缓存等。不同于Memcache,Redis也支持持久化,支持RDB模式、AOF模式以及RDB-AOF混合模式(从4.0开始支持)。

这里再介绍一下另一个KV型数据库——Etcd。etcd是一种开源的分布式统一键值存储,用于分布式系统或计算机集群的共享配置、服务发现和调度协调。有助力于促进更加安全的自动更新,协调向主机调度工作,并帮助设置容器的覆盖网络。

图数据库
图数据库(英语:graph database,GDB[1])是一个使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据。该系统的关键概念是图,它直接将存储中的数据项,与数据节点和节点间表示关系的边的集合相关联。这些关系允许直接将存储区中的数据链接在一起,并且在许多情况下,可以通过一个操作进行检索。图数据库将数据之间的关系作为优先级。查询图数据库中的关系很快,因为它们永久存储在数据库本身中。可以使用图数据库直观地显示关系,使其对于高度互连的数据非常有用。【摘自维基百科】

随着社交、电商、金融、物联网的快速发展,图数据库的应用也越来越广泛,例如金融行业风控、反欺诈应用,社交场景的关系图谱,电商领域的商品推荐实现精准营销等。

Neo4j是由Java实现的开源图数据库,支持ACID、集群、备份和故障转移。可以使用其内置的REST WEB API接口从大多数编程语言访问,以及使用官方程序的专有Bolt协议。

从图数据库的排名上也能看出,Neo4j是目前市场上最受欢迎的图数据库之一。


时序数据库
时序数据库全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业数据的典型特点是:产生频率快(每一个监测点一秒钟内可产生多条数据)、严重依赖于采集时间(每一条数据均要求对应唯一的时间)、测点多信息量大(常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生几十GB的数据量)。

目前从 DB-ENGINES 能看出来,InfluxDB比较火爆。

InfluxDB是一个由InfluxData开发的开源时序型数据库,它是由Go编写,着力于高性能地查询和存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

检索型数据库
搜索是我们项目中必不可少的功能之一。传统的关系型数据库通过索引来达到快速查询的目的,但是在全文搜索的业务场景下,索引也是无效的。比如用like查询是整表扫描,效率很低。而我们经常会用到的搜索引擎有Sphinx、Solr、Elasticsearch等。他们支持复杂的搜索表达式、全文搜索、词干分析、搜索结果的排序与分组等,并且相对关系型数据库来说有很大的性能优势。


列存储数据库
列式数据库就是按照列来存储数据的数据库,而我们经常用到的关系型数据库则被称为“行式数据库”。宽列存储,也称为可扩展记录存储,将数据存储在记录中,能够保存大量动态列。由于列名和记录键不是固定的,而且记录可以有数十亿列,因此宽列存储可以看作是二维键值存储。

列式数据库主要解决关系数据库大数据场景下的I/O问题,以HBase、Cassandra为代表。


写在最后
没有最好的数据库,只有最合适的数据库。项目在选用数据库时,肯定是结合自己的业务特点,架构选择、成本等多方面因素综合考虑的。同时也不要局限在自己熟悉的数据库,不能因为熟悉MySQL,不管实际业务场景和特点,全部使用MySQL。

多多支持Remi酱啦啦啦啦~~

文章来源:https://www.tuicool.com/articles/bYVbyyN

除了 MySQL 数据库,你还要了解的一些数据库相关推荐

  1. 除了MySQL数据库,你还要了解的一些数据库

    数据库是我们在项目开发过程中必不可少的一项服务.相信技术大大也都接触过各种类型的数据库,例如Oracle.MySQL.MongoDB.Redis等大众熟知的数据库. 数据库的选型,在我架构过程中也是重 ...

  2. 如何理解mysql数据库_怎么简单地理解数据库的概念?

    1.什么是数据库呢? 每个人家里都会有冰箱,冰箱是用来干什么的?冰箱是用来存放食物的地方. 同样的,数据库是存放数据的地方.正是因为有了数据库后,我们可以直接查找数据.例如你每天使用余额宝查看自己的账 ...

  3. MySQL 数据库基础(一)(数据库的简介)

    文章目录 前言 一.数据库的基本概念 1. 数据(Data) 2.数据库表与和数据库(DB) 3.数据库管理系统(DBMS) 4.数据库系统(DBS) 二.数据库发展史 1.初级阶段--第一代数据库 ...

  4. mysql 分库分表策略_【数据库】分库分表策略

    关系型数据库本身比较容易成为系统瓶颈,单机存储容量.连接数.处理能力都有限.当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库.优化索引,做很多操作时性能仍下降严重.此时就要考 ...

  5. mysql数据库中插入表信息_mysql数据库中插入表

    通过binlog恢复mysql数据库 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用binlog日志 ...

  6. mysql rpo是什么意思_揭开数据库RPO等于0的秘密(上)

    前言 传统商业关系数据库都声称可以做到故障恢复后不丢数据(即RPO为0),跟故障前的数据状态是强一致的,实际是否一定如此? 开源数据库MySQL在金融核心业务都不敢用,最重要的一个原因是做不到不丢数据 ...

  7. mysql分库分表按时间_数据库分库分表思路

    一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量.连接数.处理能力都有限.当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库.优化索引,做很多操作时性能仍下降 ...

  8. oracle的免费 mysql数据库服务器地址_Oracle 免费的数据库

    一.Oracle XE 数据库与连接工具安装使用 Oracle数据库历来以价格昂贵出名,当然贵有贵的道理,成为一个Oracle DBA也是令人羡慕的事情,如果程序员熟悉Oracle使用也有机会接触到大 ...

  9. 【MySQL系列】数据库基础学习_简单认识数据库

    「前言」文章内容大致是数据库基础,以及数据库的基本知识. 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 「枫叶先生有点文青病」「句子分享」 我见青山多妩媚,料青山.见我应如是 ...

最新文章

  1. 数组-丢失的数字(哈希表法)
  2. 方法---课程作业02
  3. java系统的标准输出对象_到了宋代,虽然司法证明已经发展到以物证为主,用刑讯方式逼问当事人口供在官府断案过程中却一直长期存在。...
  4. 检测日期格式是否为yyyy-MM-dd
  5. 直面Java第45期
  6. CentOS 7 yum 安装php5.6
  7. C++学习之路 | PTA乙级—— 1029 旧键盘 (20 分)(精简)
  8. maven中的oracle,maven中安装SQL SERVER 和 Oracle JDBC驱动
  9. java ee笔试题_【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)
  10. MSM8937的sbl1和CDT
  11. 08.15恒指/德指做单思路导图及晚盘前瞻
  12. NGS可变剪切之STAR+rmats软件使用
  13. (SOJ) check if a word is on a given Boggle board
  14. 数据类型与堆栈内存练习数据类型检测
  15. 父子组件间传值,父传子,子传父
  16. linux 系统睡眠.休眠命令
  17. 重置 oracle ogg,重置DML配置下ogg步骤
  18. PRML笔记:1-介绍
  19. Trister World共识研讨会在郑州顺利举办 四季度将上线Trister‘s Lend
  20. 915Resolution补丁——支持“GM965”,G33, GM45 (GMA 4500MHD), GMA3150

热门文章

  1. 设置ALV不同行的小数点位数
  2. QM模块常见检验分类术语
  3. see的口语高频用法
  4. SAP 选择屏幕的收起与展开(Collapse and Expand)
  5. EXCEL文件上传与下载
  6. 疫情过后,未来只有三种企业:华为、海尔和腾讯!
  7. java web从入门到精通视频_JavaWeb从入门到精通(视频实战版)
  8. java继承中构造方法_java之继承中构造方法总结(文字版)
  9. android html audio,html5 用audio的playbackRate属性控制播放速度在安卓手机不起作用?...
  10. 中压缩数组_Java稀梳数组,什么是稀梳数组?为什么使用稀梳数组?