前段时间在网上看到一张大数据行业全景图,几乎涵盖了大数据相关的全部技术。光数据库产品就好几十种,真是眼花缭乱:)
先说说几个概念:结构化和非结构化数据,关系型和非关系型数据库
简单而言,可以用二维表来表示的就是结构化数据(如,包含有不同字段的一条记录);相反,不方便用二维逻辑表来表现的数据,如文本、图片、视频、XML、HTML、图像和音频就是非结构化数据。此外,字段可根据需要扩充,即字段数目不定的,可称为半结构化数据。
(资料图片)
关系型数据库就是由二维表及其之间的联系所组成的一个数据集。可以这样理解,如果数据集(数据库)是关系型,那么数据一定是结构化的,相反如果数据是结构化,那么组成的数据集可能是关系型。关系型数据库的最大特点就是事务的一致性。传统的关系型数据库读写操作都是事务的,具有ACID(不展开讲)的特点,如典型的银行系统。但是,在互联网应用中,一致性却不是显得那么重要:如张三看到的内容和李四看到同一内容更新不一致是可以容忍的,换句话说,两个人看到同一好友的数据更新的时间差那么几秒是可以容忍的。因此,关系型数据库的最大特点在互联网时代已经不那么重要了。
1、关系型数据库
数据库发展的早期,几乎都是集中式的关系型数据库的天下,如商业型数据库ORACLE、SQL Server、IBM DB2、Sybase等,尤其是ORACLE,几乎占到了大型数据库市场份额的70%以上,这也是为什么“去IOE”(IBM的小型机、Oracle的数据库、EMC的存储)工作中去O最难的原因。
后来逐渐发展起来的开源数据库有MySQL、PostgreSQL。据统计,截止2016年11月份,MySQL已超过Oracle数据库,位居关系型数据库排行榜第一。互联网行业如谷歌、FaceBook、阿里、腾讯、京东等,传统行业如顺丰、圆通、上港集团、陆港集团、上汽集团、上交所、宁波银行、恒丰银行、联通、移动、电信等,都有大规模应用MySQL。PostgreSQL主要在GIS领域处于优势地位,有丰富的GIS数据类型和处理算法。
2、非关系型数据库(NoSQL):大部分都是开源的,可谓百花齐放百家争鸣,常见的产品超过20种。其中有很大一部分非关系型数据库都是针对某些特定的应用需求出现的,因此,对于特定应用具有极高的性能。
非关系型数据库主要分为以下几类:
(1)键值(key-value)数据库:面向高性能并发读写,典型代表如Redis。
(2)列存储(Columnar Storage)数据库:面向PB级的分析应用,如:HBase,Hypertable。京东、阿里、腾讯、唯品会、圆通、顺丰等都将HBase大规模应用于准实时的数据分析挖掘计算以及提供历史归档数据的存储和查询服务。
(3)文档数据库:特点是可以在海量的数据中快速地查询数据,如网页和移动应用数据。典型代表:MongoDB,CouchDB,Mark Logic
(4)图形数据库:如应用在推荐系统、关系图谱,典型代表:new4j,InfiniteGraph,OrientDB
3、新式关系型数据库(NewSQL ):NewSQL提供与NoSQL系统相同的扩展性能,且保持传统数据库支持的ACID特性。典型代表:SAP HANA,VoltDB,nuoDB,MariaDB,Pivotal
4、MPP(Massively Parallel Processing)数据库:指使用多个SQL数据库节点搭建的数据仓库系统,MPP解决了单个SQL数据库不能存放海量数据的问题。代表产品有Teradata,Vertica,Redshift,Greenplum