5大数据库种类,如果你全部在实际项目中用过,绝对是大神!
数据是一个企业的核心资产,几乎所有的企业应用系统都是围绕数据来进行的,包括数据的增删改查,数据对企业,甚至国家来说,有着不可估量的价值,比如,一个企业的所有客户的信息,一个投资机构的投入和收益信息,BAT公司的应用系统的源代码,京东的物流配送信息等等。在数据积累中,虽然有些把数据作为文本文件来保存的,但大多数情况下,为了方便地管理和提取数据,一般都会采用数据库来积累数,随着技术的发展,业务需求的多样化,出现了各种各样的数据库类型。
关系数据库
列式数据库
键值数据库
图像图形数据库
分布式文档数据库
下面分别一一说明其代表的产品以及其主要特点。
关系数据库
关系型数据一直为我们所用,比如Oracle,MySQL,SQL Server,Postgress.保存到关系数据库的数据必须满足一定要求,用通用的话来说就是满足一定的数据范式,比如主键,外键,数据的冗余;举个例子,学生的信息可以保存到数据库中,班级的信息也可以保存到数据库中,而且一个班级包括很多学生,他们之间通过外键还可以建立一种1对多的对应关系,这些信息和关系可以通过关系型数据库进行存储,值得注意的是,关系型数据库,需要预先定义其表结构,而且存储前需要定义其对应的数据类型或者长度,一旦有新的属性加入,就要修改其表的结构。传统的关系型数据库其实就是行式数据库,就是一行一行的方式来存储信息的。
列式数据库一般应用于对应大量的字符串数据,实例如HBase,cassandra,Sybase IQ,HP Vertica、EMC Greenplum等。列式数据库从一开始就是面向大数据环境下数据仓库的数据分析而产生,主要适合于批量数据处理和即时查询。下面这2张图形象的说明了什么是列式数据库,什么是行式数据库已经两者之间的区别。
极高的装载速度 (最高可以等于所有硬盘IO 的总和,基本是极限了)
适合大量的数据而不是小数据
实时加载数据仅限于增加(删除和更新需要解压缩Block 然后计算然后重新压缩储存)
高效的压缩率,不仅节省储存空间也节省计算内存和CPU,为什么具有高压缩率呢?因为存储的数据类型是一样的。
非常适合做聚合操作。
键值数据库
即Key-Value存储,简称KV存储。它是NoSQL存储的一种方式。它的数据按照键值对的形式进行组织,索引和存储。KV存储非常适合不涉及过多数据关系业务关系的业务数据,同时能有效减少读写磁盘的次数,比SQL数据库存储拥有更好的读写性能。典型的产品有: 亚马逊的DynamoDB,redis。
图形数据库
图形数据库不是专门用来存储图形图像的,而是因为其用图状结构来维持其数据之间的关系,所以叫做图形数据库。Neo4j,Sones就是其典型代表。
在图数据结构中,只有两种基本的数据类型 即节点(Node)和关系(Relationship),节点(Node)可以拥有属性,关系(Relationship)也可以拥有属性 ,属性都是以键值对的方式存储,节点(Node)与节点(Node)的联系通过关系(Relationship)进行建立,他们建立的关系是有方向的。
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。其支持几乎所有的主流的开发语言
分布式文档存储数据库
不需要定义,应用灵活,文档存储支持对结构化数据的访问,不同于关系模型的是,文档存储没有强制的架构。与关系模型不同的是,文档存储模型支持嵌套结构。例如,文档存储模型支持XML和JSON文档,字段的“值”又可以嵌套存储其它文档。文档存储模型也支持数组和列值键。与键值存储不同的是,文档存储关心文档的内部结构。这使得存储引擎可以直接支持二级索引,从而允许对任意字段进行高效查询。支持文档嵌套存储的能力,使得查询语言具有搜索嵌套对象的能力,XQuery就是一个例子。MongoDB通过支持在查询中指定JSON字段路径实现类似的功能。比如,CouchDB,MongoDB等。