什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。
数据库如何分类?
数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。而不同的数据库是按不同的数据结构来联系和组织的。在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。
关系型数据库比较
非关系型数据库比较
下面看看一些常用的关系型数据库
1、Neo4j
是一个高性能的 NoSQL 图形数据库,把数据保存为图中的节点以及节点之间的关系。Neo4j 中两个最基本的概念是节点和边
节点表示实体,边则表示实体之间的关系。节点和边都可以有自己的属性,不同实体通过各种不同的关系关联起来,形成复杂的对象图。
Neo4j 提供了在对象图上进行查找和遍历的功能:深度搜索、广度搜索。
特点:
完整的ACID支持;高可用性;轻易扩展到上亿级别的节点和关系;通过遍历工具高速检索数据;属性是由Key-Value键值对组成。
应用:社交网络,歌曲信息,状态图
2、Hbase
列式存储以流的方式在列中存储所有的数据。对于任何记录,索引都可以快速地获取列上的数据;列式存储支持行检索,但这需要从每个列获取匹配的列值,并重新组成行。
HBase(Hadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase是Google BigTable的开源实现,模仿并提供了基于Google文件系统的BigTable数据库的所有功能。HBase可以直接使用本地文件系统或者Hadoop作为数据存储方式,不过为了提高数据可靠性和系统的健壮性,发挥HBase处理大数据量等功能,需要使用Hadoop作为文件系统。HBase仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务,主要用来存储非结构化和半结构化的松散数据。
Hbase中表的特点:大,稀疏,面向列
3、MongodDB
一个基于分布式文件存储的开源数据库系统,为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key value)对组成。
特点:
面向集合存储,易存储对象类型的数据;模式自由;支持动态查询;支持完全索引,包含内部对象;支持查询;支持复制和故障恢复;使用高效的二进制数据存储,包括大型对象(如视频);自动处理碎片,以支持云计算层次的扩展性;支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言;文件存储格式为BSON(一种JSON的扩展);可通过网络访问。
适用场景:网站数据;缓存;大尺寸,低价值的数据;高伸缩性的场景;用于对象及JSON 数据的存储。
不适用场景:高度事务性的系统;传统的商业智能应用;需要SQL 的问题。
4、Redis
Redis是一个key-value存储系统,key为字符串类型,只能通过key对value进行操作,支持的数据类型包括string、list、set、zset(有序集合)和hash。Redis支持主从同步,数据可以从主服务器向任意数量的从服务器上同步。
Redis事务允许一组命令在单一步骤中执行。事务有两个属性:在一个事务中的所有命令作为单个独立的操作顺序执行;Redis事务是原子的,原子意味着要么所有的命令都执行,要么都不执行。
Redis 事务由指令 MULTI 发起的,之后传递需要在事务中和整个事务中,最后由 EXEC 命令执行所有命令的列表。
举个例子:假设我们用关系型数据设计出以下学生选课的数据库
对比一下优点缺点
5、NewSQL
是对各种新的可扩展/高性能数据库的简称。具有NoSQL对海量数据的存储管理能力,保持了传统数据库支持ACID和SQL等特性。
NewSQL共同特点:支持关系数据模型;使用SQL作为其主要的接口。