关于数据库知识汇总

发布时间:2017-07-18 12:03:22

什么是数据库?

【维基百科】“数据库,简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。“

数据库类型—关系数据库、非关系数据库(NoSQL),对应的主流数据库类型:(截图来自【维基百科】,针对各数据库的具体细节在这里就不多说,个人觉得大家了解有这些主流的数据库类型存在即可,再深入随个人兴趣)



一、云数据库之亚马逊Amazon的数据库服务总览

随着云计算的发展,市面上也出现各种云数据库供客户选择。而哪些是真正可靠而易用的,对用户而言,并不好分析。下面针对Amazon的数据库类型做一个重点了解。
在概念中我们可以做一个类比(功能上有一致性)
Amazon Relational Database Service(RDS)= 阿里云的 RDS
Amazon ElastiCache=阿里云的OCS
Amazon Redshift=阿里云的OTS
SQL services
Amazon Relational Database Service(RDS)
AWS的RDS是第一个云数据库服务,也是目前最完整的数据库服务。如同AWS的大部分服务一样,其作为AWS的管理接口,可以兼容大部分AWS所提供的其他云计算服务。其最初仅是为了AWS自身掌握和管理MySQL服务而存在,而现在RDS还支持Microsoft SQL Server或Oracle Database。这一消息在2012年5月由AWS博客发布,当时称Microsoft SQL Server将成为RDS的一部分。当然,业内分析者认为这是亚马逊为了避免用户认为“被迫绑定”而做出的妥协与让步。用户可以运行装载在Amazon EC2上的Windows SQL Server实例,但是这些操作需要DBA经验以及对工作负荷管理有清晰认识。而RDS则提供了更易实现的管理数据库服务。
NoSQL services
1.Amazon DynamoDB
DynamoDB是亚马逊2012年2月发布的NoSQL产品,其本身基于原始的Dynamo kay-value,最初是为了满足公司内部需求。具体看,就是设计网页或大数据应用时满足快速访问数据和及时实现部署的弹性收放。DynamoDB建立在SSD结构上,并自动实现数据添加功能。据悉,DynamoDB是一个共享型的数据库云服务。所谓共享型的数据库云服务,是指一台机器上的CPU、内存及磁盘资源会给多用户使用。按照AWS CTO Werner Vogels的说法:“DynamoDB是一个性能好、可靠高且具有可扩展性的NoSQL云数据库服务,DynamoDB集15年分布式非关系性数据库开发之精粹,又通过内部使用考验,是AWS团队精心打造的产品。”事实上,在AWS首页的Database列表中,只能看到RDS和DynamoDB,显然DynamoDB已经替换了SimpleDB原来在这个列表中的位置。
2.Amazon ElastiCache
Amazon ElastiCache不是技术上的NoSQL服务,但是其完全可以实现为开发者提供类似Memcached管理服务,以确保用户可以在MySQL部署尽可能快地使用数据。Memcached已被诸多网络所应用,包括Facebook。据了解,Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
3、Amazon Redshift
Amazon Redshift 是一种快速、完全托管的 PB 级数据仓库服务,它使得用现有商业智能工具对您的所有数据进行高效分析变得简单而实惠。Amazon Redshift 使用列存储技术改善 I/O 效率并跨过多个节点平行放置查询,从而提供快速的查询性能。Redshift 使用标准的 PostgreSQL JDBC 和 ODBC 驱动程序,从而使您能够使用各种常见 SQL 客户端。

二、大数据时代之NoSQL数据库

随着大数据的不断发展,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。现今的计算机体系结构在数据存储方面要有庞大的水平扩展性,而NoSQL也正是致力于改变这一现状。除亚马逊数据库中提及的Amazon 的Dynamo外,下面还介绍3种出色的NoSQL数据库。
1、MongoDB(MongoDB在上一季中有和大家提及,这次重点关注它的厉害之处。)

MongoDB是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。MongoDB支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
MongoDB是高性能开源文档数据库,也是目前最受关注的NoSQL技术之一,以敏捷、可扩展和对企业应用友好(支持事务,一致性和数据完整性保证,有大企业应用案例)而著称。有人甚至认为LAMP中的M应该用MongoDB取代MySQL,其火热程度可见一斑。使用MongoDB的公司包括Foursquare, Craiglist, 迪士尼,SAP,Intuit,EA等,国内淘宝、大众点评、视觉中国等公司有应用。
2、Hadoop的HBase(想再详细了解的同学可以看下这个链接:http://jiajun.iteye.com/blog/899632,有很完整的介绍,是高大科的梳理资料)

HBase(Hadoop Database),是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase基于列的而不是基于行的模式。HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据。
虽然大多数人都认为Hadoop及其所有的工具都是作为管理大规模集群的一种机制,其实不然,Hadoop也包括数据库,在HBase中也是通过节点来传播数据。Hadoop的Map /Reduce的架构是非常适合于复杂的计算任务或查询工作。领土在不断的扩张,新的数据库像Accumulo就是Hadoop平台的一个延伸。(Apache Accumulo是一个可靠的、可伸缩的、高性能的排序分布式的Key-Value存储解决方案,基于单元访问控制以及可定制的服务器端处理。使用Google BigTable设计思路,基于Apache Hadoop、Zookeeper和Thrift构建)
崔建伟:小米科技研发工程师;崔建伟表示,随着小米业务的逐渐扩展,特别是大数据时代的到来,原有的关系型数据库MySQL已经逐渐无法满足需求,因此向NoSQL迁移是很自然的事情。小米使用的NoSQL数据库是HBase,之所以选择HBase主要的考虑有两个方面,第一是对运维、容错、可扩展性的支持,第二是HBase的成本相对较低。目前HBase已经支持了小米的米聊以及PUSH服务,并且更多的服务也都在预计迁移当中。
3、BigTable/ Accumulo/ Hypertable

BigTable是非关系的数据库,是一个稀疏的、分布式的、持久化存储的多维度排序Map。Bigtable的设计目的是可靠的处理PB级别的数据,并且能够部署到上千台机器上。Bigtable已经实现了下面的几个目标:适用性广泛、可扩展、高性能和高可用性。Bigtable已经在超过60个Google的产品和项目上得到了应用,包括Google Analytics、GoogleFinance、Orkut、Personalized Search、Writely和GoogleEarth。
谷歌的BigTable开启了NoSQL的热潮,现在很多公司都模仿谷歌的架构搭建了自己的平台。谷歌的AppEngine用户可以把键/值对存储在数据库中,而Hadoop的用户可以把它们放在Accumulo上,其他的可以使用Hypertable。所有的这些基本上都属于键/值存储,只不过添加了一些额外的功能,增加了搜索的速度而已。

三、数据库服务之阿里云数据库产品

再说回到阿里云的数据库产品,RDS在这里就不说了大家都相对熟悉。
1、NoSQL数据库的领域,阿里云提供的产品是OTS(Open Table Service), OTS最核心的优势在于可满足对单表储存能量要求极高的客户需求。官网介绍如下:
开放结构化数据服务(Open Table Service,简称OTS)是一种支持海量结构化和半结构化数据存储与实时查询的服务。
官网产品优势:
一、  大规模,高性能:1、单表百TB级别数据存储,2、毫秒级别单行读写延迟,3、十万级别QPS;
二、  安全:1、用户级别的数据隔离、访问控制和权限管理,2、用户只能访问有权限的表,3、数据冗余备份;
三、  稳定:1、系统可用性99.9%,2、自动故障检测与恢复。
应用场景:
一、存储应用产生的海量数据,如电商交易信息、系统详细日志、科研原始记录等,单表数据量能达到百TB级别,支持分区存储;
二、低延迟的实时数据查询,如实时交易处理、历史数据展示等;
三、高并发数据访问,如拥有千万级甚至更多用户的网站交互信息、大量数据采集源的物联网应用等。
 
2、在Cache服务层面,阿里云即将商业化的产品为OCS(Open Cache Service)。因为商业化后产品特性将发生变化,和原公测期间的官网介绍有所不同,核心区别点就在于原“SSD+内存配置,响应速度远远高于磁盘性能,通过SSD实现数据持久化保存”的产品实现方式改为单内存配置,将不再具备数据持久化保存的能力,但可实现Cache基于算法的数据逐出特性。下面是简单的竞品对比
  阿里云 AWS 腾讯 UCloud
OCS ElastiCache NoSQL高速存储 云内存存储UMem
基本介绍 在线缓存服务,实现热点数据的快速响应,OCS支持Key-Value的数据结构,OCS支持即开即用的方式快速部署,对于动态Web、APP应用,可通过缓存服务减轻对数据库的压力,从而提高网站整体的响应速度。 一种 Web 服务,让用户能够在云中轻松部署、运行和扩展内存缓存。该服务允许您从快速的托管内存缓存系统中检索信息,而无需完全依赖于速度较慢的基于磁盘的数据库,从而提高了 Web 应用程序的性能。 极高性能、持久化、分布式的Key-Value存储服务,支持memcached协议,支持秒级回档、多点备份等功能。(同时提供CRedis和CMongoDB的公测服务) 分布式、高性能、高可用的Key-Value内存存储,兼容常用的Memcache/Redis协议。主要用作持久化数据的存储,也可以用作缓存数据的存储。
兼容协议 兼容Memcached协议。 支持两种开源缓存引擎Memcached和Redis。 兼容memcached协议。 兼Memcache/Redis协议。
资费成本 暂定 微型、标准、增强(内存增强、cpu增强)小时定价 2元/GB/天 试用中,无定价标准
0.12元/GB/小时 1.3GB/小时约0.48元
2.9元/GB/天  
性能参数 QPS3000次/秒 暂无数据 QPS10000次/秒 QPS4000次/秒
(Credis的每G访问上限3000次/秒)
容灾风险 分布式生产集群及负载均衡设计,硬件损坏10秒内快速恢复。 具有多项功能,可以增强关键生产部署的可靠性,包括自动故障检测和恢复。与其他 Amazon Web Services 一样,使用了相同的高可靠性基础设施。 双机热备,跨机架跨交换机部署,数据落盘,支持5分钟粒度回档。 数据保存在一主一备两台机器中,其中一台机器磁盘损坏数据不丢失。主机宕机,系统会自动将备机切换为主机,整个过程几秒内完成,无需人工干预。
 

 四、数据库服务之NoSQL 在腾讯应用实践

最后补充一个部分,NoSQL 在腾讯应用实践。来自目前任腾讯架构平台部平台开发中心技术总监吴悦的分享。(愿意详细了解的同学直接点击链接:http://www.open-open.com/lib/view/open1339902980862.html
其中关键一点则是通过NoSQL技术来构建海量服务的数据层,并通过分析和总结出不同的业务场景和技术特点,为各种场景提供更合适的数据层解决方案。具体而言:
•相册、日志等UGC类应用,主要是自我产生数据,他人以浏览为主,其技术特点是读取量巨大,修改量低于读取量一个量级,数据量从几百T至P级不等。提供SAS、SATA级的TDB、TFS解决方案。
•农牧场等Social Game类应用,核心数据是用户背包数据,互动性很强,其技术特点是巨大读取量与修改量,数据量在百G级别。提供MEM级的TMEM解决方案。
•信息中心的Feeds类应用,其技术特点是巨大的修改量与读取量,数据量也在几十T到几百T不等。提供SSD级的TSSD解决方案。


备注名词解释:POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。