数据库基础
什么是数据库?
数据库(database,又名电子化的文件柜)就是存储数据的仓库。数据库是一个以某种有结构的有顺序存储的 数据集合,理解数据库的一种最简单的办法是将其想象为一个文件柜。此文件柜是一个 存放数据的物理位置,不管数据是什么以及如何组织的。
数据库管理系统
数据库管理系统是为管理数据库而设计的电脑软件系统,是数据库系统的核心组成部分主要完成对数据库的操作与管理功能,实现数据库对象的创建、数据库存储数据的查询、添加、修改与删除操作和数据库的用户管理、权限管理等。
类型
关系数据库
关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。 常见的关系型数据库有Mysql,SqlServer等。在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。
非关系型数据库(NoSQL)
指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。适合追求速度和可扩展性、业务多变的应用场景。现在有四种大的分类:
(1)键值对存储(key-value):代表软件Redis,它的优点能够进行数据的快速查询,而缺点是需要存储数据之间的关系。
(2)列存储:代表软件Hbase,它的优点是对数据能快速查询,数据存储的扩展性强。而缺点是数据库的功能有局限性。
3)文档数据库存储:代表软件MongoDB,它的优点是对数据结构要求不特别的严格。而缺点是查询性的性能不好,同时缺少一种统一查询语言。
(4)图形数据库存储:代表软件InfoGrid,它的优点可以方便的利用图结构相关算法进行计算。而缺点是要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用。
NoSQL 与关系型数据库的区别
存储方式
传统的关系型数据库采用表格的储存方式, 数据以行和列的方式进行存储,要读取和查询都十分方便。而非关系型数据不适合这样的表格存储方式,通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图结构或者文档。
存储结构
关系型数据库按照结构化的方法存储数据,先定义好表的结构再,根据表的结构存入数据,整个数据表的可靠性和稳定性都比较高,但一旦存入数据后,修改数据表的结构就会十分困难。而NoSQL数据库由于面对的是大量非结构化的数据的存储,可以根据数据存储的需要灵活的改变数据库的结构。
存储规范
关系型数据库为了避免重复、规范化数据以及充分利用好存储空间,把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然,但随着数据表数量的增加,由于数据涉及到多张数据表,数据表之间存在着复杂的关系,数据管理会越来越复杂。而NoSQL数据库的数据存储方式是用平面数据集的方式集中存放,虽然会存在数据被重复存储,从而造成存储空间被浪费的问题,但是由于基本上单个数据库都是采用单独存放的形式,很少采用分割存放的方式,所以这样数据往往能存成一个整体,这对于数据的读写提供了极大的方便。
扩展方式
关系型数据库只具备纵向扩展能力,只能通过提高处理能力,也就是选择速度更快性能更高的计算机,来进行拓展空间,局限性也大。NoSQL数据库采用横向的方式来开展数据库,也就是可以添加更多数据库服务器到资源池,然后由这些增加的服务器来负担数据量增加的开销。
查询方式
关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询。SQL采用的是非结构化查询语言(UnQL),也可以采用类似索引的方法来加快查询操作。
规范化
可以利用ORM层(也就是对象关系映射)来将数据库中对象模型映射到基于SQL的关系型数据库中去以及进行不同类型系统的数据之间的转换。对于NoSQL数据库则没有这方面的问题,它不需要规范化数据,它通常是在一个单独的存储单元中存入一个复杂的数据实体。
事务性
关系型数据库可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。NoSQL数据库虽然对于事务操作也可以使用,但不能很好的支持,很难满足其全部的需求。
读写性能
关系型数据库十分强调数据的一致性,并为此降低读写性能付出了巨大的代价,面对海量数据的处理的时候效率就会变得很差。而NoSQL数据库恰恰是应对大数据方面,也就是对于大量的每天都产生非结构化的数据能够高性能的读写。
授权方式
关系型数据库常见的有Oracle,SQLServer,DB2,Mysql,除了Mysql大多数的关系型数据库如果要使用都需要支付一笔价格高昂的费用,即使是免费的Mysql性能也受到了诸多的限制。而对于NoSQL数据库,比较主流的有redis,HBase,MongoDb,memcache等产品,通常都采用开源的方式,不需要像关系型数据库那样,需要一笔高昂的花费。