各大数据库对比
众所周知我们现在处于大数据时代,维护数据自然使用数据库
今天来对比各大数据库之间的一些优缺点
参与今天对比的数据分别有
MySQL、Redis、SQL Server、Oracle、MongoDB
对比的方面分别有
由来、简介、性能、应用场景、类型、端口
MySQL
由来:
1、MySQL的历史可以追溯到1979年,一个名为Monty Widenius的程序员在为TcX的小公司打工,并且用BASIC设计了一个报表工具,使其可以在4MHz主频和16KB内存的计算机上运行。当时,这只是一个很底层的且仅面向报表的存储引擎,名叫Unireg。
2、1990年,TcX公司的客户中开始有人要求为他的API提供SQL支持。Monty直接借助于mSQL的代码,将它集成到自己的存储引擎中。令人失望的是,效果并不太令人满意,决心自己重写一个SQL支持。
3、1996年,MySQL 1.0发布,它只面向一小拨人,相当于内部发布。到了1996年10月,MySQL 3.11.1发布(MySQL没有2.x版本),最开始只提供Solaris下的二进制版本。一个月后,Linux版本出现了。在接下来的两年里,MySQL被依次移植到各个平台。
4、1999~2000年,MySQL AB公司在瑞典成立。Monty雇了几个人与Sleepycat合作,开发出了Berkeley DB引擎, 由于BDB支持事务处理,因此MySQL从此开始支持事务处理了。
5、2000,MySQL不仅公布自己的源代码,并采用GPL(GNU General Public License)许可协议,正式进入开源世界。同年4月,MySQL对旧的存储引擎ISAM进行了整理,将其命名为MyISAM。
简介:
MySQL(发音为"my ess cue el")是一种开放源代码的关系型数据库管理系统,
因为是开放源代码的,在下载后可以根据自己的需要进行修改。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,
许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
(重点:免费)
性能:
M有SQL性能的弹性很强,影响因素也很多,可以常常看到关于MySQL优化的手法,影响他性能的因素分别有:
1.硬件
(硬件就指的是数据库服务器的配置,服务器说白了就是一台电脑而已,如果电脑的配置高,cpu处理能力强,内存大,硬盘是ssd的,那肯定性能好。当然这种方式成本也是最高的,要花钱的嘛。)
2.系统配置
(系统配置一个指的是操作系统的配置,有一些操作系统的配置会影响mysql的性能,现在咱们大多数服务器都是用的linux服务器,linux上面一切东西都是基于文件的,mysql数据里面的表、数据等等都是文件存在磁盘上的。)
还有一些mysql配置参数会影响mysql的性能
3.数据库表结构
4.SQL以及索引
最适合建索引的列是出现在where子句后面的列。
唯一索引的效果最好,因为是唯一的。
利用最左前缀。
索引并不是越多越好。(常用的就是:1、普通索引 2、主键索引 3、组合索引 4、唯一索引)
应用场景:
Web网站系统
日志记录系统
数据仓库系统
嵌入式系统
类型
关系型数据库
端口
3306
Redis
由来
2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,
然而没过多久该公司的创始人 Salvatore Sanfilippo便 对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,
并于2009年开发完成,这个数据库就是Redis。 不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品,而是希望更多的人使用它,
于是在同一年Salvatore Sanfilippo将Redis开源发布,并开始和Redis的另一名主要的代码贡献者Pieter Noordhuis一起继续着Redis的开发,
直到今天。
Salvatore Sanfilippo自己也没有想到,短短的几年时间,Redis就拥有了庞大的用户群体。Hacker News在2012年发布了一份数据库的使用情况调查,结果显示有近12%的公司在使用Redis。
国内如新浪微博、街旁网、知乎网,国外如GitHub、Stack Overflow、Flickr等都是Redis的用户。
VMware公司从2010年开始赞助Redis的开发, Salvatore Sanfilippo和Pieter Noordhuis也分别在3月和5月加入VMware,全职开发Redis。
简介
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
1、字符串类型
2、散列类型
3、列表类型
4、集合类型
5、有序集合类型。
性能
官方数据:
官方提供测试数据:50个并发执行100000个请求,读的速度是110000次/s,
写的速度是81000次/s 。数据仅供参考,根据服务器配置会有不同结果。
应用场景
- 缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
- 聊天室的在线好友列表。
- 任务队列。(秒杀、抢购、12306等等)
- 应用排行榜。
- 网站访问统计。
- 数据过期处理(可以精确到毫秒)
- 分布式集群架构中的session分离。
大都集中于互联网方向,因为价格便宜,安装使用简便快捷,深受广大互联网公司的喜爱。
类型
非关系型数据库
端口
6379
SQL Server
由来
SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。
在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。
Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。
简介
美国Microsoft公司推出的一种关系型数据库系统。
SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,
提供了基于事务的企业级信息管理系统方案。
性能
(1)高性能设计,可充分利用WindowsNT的优势。
(2)系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
(3)强壮的事务处理功能,采用各种方法保证数据的完整性。
(4)支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。
SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。
应用场景
主看业务需求,而且看你的业务系统需要搭载在什么数据库上, sql server 一般做中小型 数据库(这方面本人接触不多)
类型
关系型数据库
端口
1433
SQL Server不同版本端口号也是有所差异的
Oracle
由来
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
比如SilverStream就是基于数据库的一种中间件。
ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
Oracle数据库最新版本为Oracle Database 19c。
Oracle数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。
此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。
这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c 成为私有云和公有云部署的理想平台。
简介
Oracle Database,又名Oracle RDBMS,或简称Oracle。
是甲骨文公司的一款关系数据库管理系统。
它是在数据库领域一直处于领先地位的产品。
可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。
它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
性能
■ 可用性强
■ 可扩展性强
■ 数据安全性强
■ 稳定性强
他没有向Redis一样精确地告诉你具体数值,但是他的优点也是很直观的
例如:大量数据的管理、保存的持久性、数据的可靠性 这些方面都是毋庸置疑的
应用场景
主要在传统行业的数据化业务中,
比如:银行、金融这样的对可用性、健壮性、安全性、实时性要求极高的业务;零售、物流这样对海量数据存储分析要求很高的业务。
此外,高新制造业如芯片厂也基本都离不开Oracle;电商也有很多使用者,如京东(正在投奔Oracle)、阿里巴巴(计划去Oracle化)。
类型
关系型数据库关系型数据库
端口
1521
MongoDB
由来
MongoDB起源于2007年10gen公司的一个项目,该项目的目的是创建一个类似于谷歌AppEngine的Paas平台,
用来自动管理软硬件基础设施,让开发者将精力集中在程序设计上,但是这样也剥夺了开发人员很多的自主权,
反响不是很好。原本的paas平台由应用服务和数据库组成,发现人们对数据库更感兴趣,于是专注于数据库部分,也就是现在的MongoDB。
简介
MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。
旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
性能
没有直观说明,但是他的优点也都是优质性能:
*面向集合存储,易存储对象类型的数据。
mongodb集群参考
mongodb集群参考
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性。
*支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
*文件存储格式为BSON(一种JSON的扩展)。
*可通过网络访问。
应用场景
以下是官方报出的使用场景
MongoDB 的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS 系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。根据官方网站的描述,Mongo 适用于以下场景。
● 网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
● 缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。
● 大尺寸、低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
● 高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持。
● 用于对象及JSON 数据的存储:Mongo 的BSON 数据格式非常适合文档化格式的存储及查询。
MongoDB 的使用也会有一些限制,例如,它不适合于以下几个地方。
● 高度事务性的系统:例如,银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
● 传统的商业智能应用:针对特定问题的BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
● 需要SQL 的问题。
基于现在的微服务,产生的数据量多,使用起来更合适
类型
介于关系数据库和非关系数据库之间的数据库
端口
27017
以下就是几大数据库厂商的产品,以及简单介绍,也全部都是本人学过用过的。
对于不同业务场景要使用适当的数据库才能事半功倍,对于数据库更深入的一些问题 !
例如:索引优化,
大数据量的吞吐,
缓存的读写,
日志的处理,
事务方面的等...
还有很详细的理解,以及不同情况下的一些处理,本人也会在之后的使用中更加详细的记录并分享
本篇到此~
希望同仁志士,前来参考以及指点!共同进步,发扬文化精神!转载请标明出处!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341