我知道你一定听过Mysql,听过oracle,也可能听过redis,hive和mariaDB等等,他们都被人们称作数据库。但是你知道为什么数据库要分这么多种么?这么多数据库存在的价值是什么?这篇我们放轻松,浅略一下数据库的种类和各自特性。
一,从数据库的历史说起
我之前在技术面试中区分过数据库和DBMS的区别,这里指的数据库概念要自己区分好。
数据库是用来存储数据的,随着计算机技术的发展,数据库被赋予了更多的功能并作为后端不可缺少的一部分。数据库的发展历史大致可以分为:
磁盘文件存储->导航类型数据库(层次结构模型->网络结构模型)->关系结构模型数据库->后关系模型数据库
导航类型数据库
上世纪60年代的数据库模型有点类似于传递指针,命令请求数据就像导航一样在存储介质中快速进行查找,由此人们终于可以抛弃基于磁带系统的批处理的方式进行数据查找,而是可以通过数据库共享交互式使用数据。
关系型数据库
转眼到了70年代,导航型数据库得到改进,因为他缺乏了很多紧缺的功能,比如搜索,事务的安全性,存储数据的规范等等。抛弃链接和指针,一个关键的概念“表”产生了,从此,慢慢开始为关系型数据库演化出查询语言SQL,建设关系型数据库的关系模型,表和表之间的运算,增加索引等等,关系型数据库的演化周期很长,到今天仍然不断更新来适用人们的需求。从而市场上开始涌现越来越多的数据库,以至于每个月都会根据不同数据库查询性能更新数据库排行榜。
后关系型数据库
当关系型数据库发展壮大,恰逢计算机技术又上一个台阶,分布式的需求日益增长迫使现有的数据必须解决CAP造成的问题,这样必定引起数据库类型的分化来适应不同需求不同场景的数据,其他类型数据库就如雨后春笋,在市场上开发流行,如xml数据库,Nosql数据库,NewSQL数据库,搜索引擎数据库,图数据库, RDF数据库等等。
二,数据库种类
根据DB-Engines三月的排名(一个根据搜索引擎及论坛为数据库流行度评分的排行榜),共有300+种数据库上榜,然而在oracle评分1300+的情况下,评分上百的只有11家,可见市场上绝大多数还是选择oracle和mysql稳定的服务的,接着这个排行榜简要介绍下各个流行的数据库。
oracle
前阶段,全国掀起的去IOE化之中O指的就是oracle,oracle数据库系统一直是数据库行业中的龙头老大,是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。作为商业型数据库系统,非开源,按核收费好像几十万一个cpu,对于大型企业使用DBMS价格就很可观了,不过熬不住oracle功能稳定,而且提供售后保障,很适合没有能力自研数据库的传统企业,不过可能就要花上大价钱先在数据库上了。
MySQL
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。你能下还能进行二次开发,大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。关于企业级Mysql和oracle的比较,在企业的角度即使两者性能相当也会偏向于oracle,因为oracle不仅产品稳定,而且配套服务,配套全套产品辅助,不像mysql。数据库这种东西出了大问题问责就会损失更多。
Microsoft SQL Server
SQL server在微软平台上开发的数据库系统,和oracle一样生态好,适合windows开发的ldy们,而且也是按核收费,价格比oracle略低。
PostgreSQL
PostgreSQL是为了解决ORM,相对于竞争者的主要优势为可编程性:对于使用数据库资料的实际应用,PostgreSQL让开发与使用变得更简单。
因为转换来自SQL世界的信息到面向对象编程世界体现得很困难,因为两者有非常不同的数据组织的模型。工业界把这个问题称为对象关系不匹配,要花费项目开发者40%的时间。一些映射解决方案,典型的称为对象关系映射,致力于这个问题,但是它们花费很多并有自身的问题,导致糟糕的性能或强制所有的数据访问通过映射所支持的一种语言来进行,话说华为的高斯DB就好像和postgresql是一个类型。
MongoDB
MongoDB是一种面向文档的数据库管理系统,用C++等语言撰写而成,开源,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
Elasticsearch
Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,利用lucene倒排索引比B+树查询快,更新慢。这就很适合一些大数据搜索引擎场景了,分布式处理,海量数据实时查询等。
Redis
开源,基于k-v,基于内存,单线程,可扩展性强,可选持久性nosql数据库,可见我之前的blog
Access
很久前的学生时代和微软office配套的那个数据库系统,当时计算机二级还要考的那个,他的角色其实并不是对应oracle数据库这种,可以看wiki的评述:“Access能够访问Access/Jet、Microsoft SQL Server、Oracle数据库,或者任何ODBC兼容数据库内的数据。熟练的软件设计师和数据分析师利用它来开发应用软件,而一些不熟练的程序员和非程序员的高级用户则能使用它来开发简单的应用软件。虽然它支持部分面向对象技术,但是未能成为一种完整的面向对象开发工具。”
MariaDB
mariadb就是mysql的一个复刻,据说是因为oracle收购mysql之后保险的另一个分支,可以把mysql上的数据迁移到mariadb,反过来不行,具体区别可以看mysql vs mariadb,总之就是比较少。
Hive
Apache Hive是另一个分支上的事情了,Hive 依赖于 HDFS 存储数据,Hive 将 HQL 转换成 MapReduce 执行,所以说 Hive 是基于 Hadoop 的一个数据仓库工具,实质就是一款基于 HDFS 的 MapReduce 计算框架,对存储在 HDFS 中的数据进行分析和管理。
也就是说,我们使用hive就可以避免编写繁杂的mapreduce,是Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行
扯点别的,
以上都是西方的数据库系统技术,现在国内很多厂家都会研发自己的数据库以迎合市场多种数据类型和场景的需要,oracle的性能也不是在所有场景下都是最好的了,不过几乎所有的数据库系统都会以现有流行的为标杆去开发,所以对于学习后端开发的人来说,掌握流行数据库的知识是必要的,而同时也暴漏出,很多企业的技术人员其实并不是所谓的“铁饭碗”,一旦市场紧缩,公司转型选择oracle,很多人其实并不需要,不过目前一切向好,虽然市场的风向标随时会改变,数据库自研系统成为热潮之后过往的权威有被后起之秀推翻的“气势”,这也是西方害怕中国技术崛起的原因之一,这种真正的刚需技术一旦研发成功,必定会引发市场改革,国际形势逆流。
来源:CSDN
作者:lishinho
链接:https://blog.csdn.net/wannuoge4766/article/details/104738425