请选择 进入手机版 | 继续访问电脑版

架构设计—高并发下的数据存储方案

2017-5-5 16:51| 发布者: admin| 查看: 53| 评论: 0

摘要: 数据存储,其实说的就是数据库,也就是在高并发的业务场景下,我们的数据库如何架构设计。知道有哪些数据库关系型数据库是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据,几 ...

数据存储,其实说的就是数据库,也就是在高并发的业务场景下,我们的数据库如何架构设计。

知道有哪些数据库

关系型数据库

是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据,几句简单的SQL语句就能快速的实现小规模数据的读写、查询统计,对于程序猿来说真是爽歪歪呀。

MySQL

目前互联网企业基本都用它来做数据存储。愿意很简单,它是免费的,轻量级的,其他关系型数据库能做他他一样能做。用起来爽爽的。并且能基于Mycat的中间件的帮助,一样完成大规模数据的存储,满足高并发下的数据读写。关于MyCat,国内开源的项目,从它的版本更新计划,还是有很多让人值得期待的地方。

Oracle

应该说是最好的关系数据库,容量大,数据安全。比如金融行业,实时交易系统较多,在对数据的联机事务处理(OLTP)上也就要求很高。但做大规模的数据存储,扩展性不好且价格昂贵。

SQL Server

如果还有人在用SQL Server,说明这个企业的信息化水平很LowSQL Server几乎没人在用了。

大数据

NoSQL数据库

也叫是“Not Only Sql”,指的是非关系型的数据库。这类数据库主要有这些特点:非关系型的、分布式、开源的、水平可扩展的。

memcached-临时性键值存储

是一个自由开源的,高性能,分布式内存对象缓存系统。数据全部放在内存中,在架构设计中使用memcached能减少对磁盘数据的读写操作。

比如可以提高用户对空节点数据查询的性能,页面上查不到数据,用户还在狂点,我不可能不停的查边系统中的每个节点。需要对空节点数据进行缓存。

还有一个就是减少对数据库的读写,比如对查询命中率很高的能否做缓存。对写操作能否所队列缓存。人家是对象缓存系统,所以啥对象都 是可以放的。

Redis-永久性键值存储

Redismemcached在功能上发挥的作用和使用场景基本是一样的。只是Redis更像是一个对象数据库,它不仅做内存对象缓存,还可以做对象磁盘缓存。也就是最终的数据是被放到了磁盘上的。功能上比memcached要丰富一些,在企业中Redis用的更多一些。

MongoDB面向文档的数据库

轻量的分布式文件存储系统,MongoDB的功能很强大,在大规模数据的读写方面不亚于HBASEMongoDB对数据的存储是透明的。现在一般企业通过MongoDB存一下非格式的文件,比如图片,视频,各种文件等。MongoDB在数据查询上比HBase方面,但在数据分析处理上不及HBase

HBase面向列的数据库

面向列的新型的数据存储方式,这也是HBase在超大规模数据量中能毫秒级读写数据的原因。超大的什么级别呢,“This projects goal is the hosting of very large tables billions of rows X millions of columnsbillions of rows X millions of columns”一个表的数据能支持的数据结构是上亿行 乘以 百万列,这是HBase官方的描述。也就是说你一个HBase表没有上亿条数据,都对不起使用HBase。牛逼吧。哈哈。之前我们卡弗卡大数据课堂的一个学生亲自测过,确实可能达到上亿行 乘以 百万列的这个结构。

虽然HBase的维护成本比较高,但在数据分析上妥妥的,因为他是基于HDFS的,跟MapReduceHivespark等都能很好的整合,达到数据的计算分析。

大数据

关系型数据库特点

优点:

保持数据的一致性

可以进行复杂查询,操作简单。

通用并且技术成熟。

缺点:

数据读写必须经过sql解析,大量数据高并发下读写性能不足。

对数据做读写,或修改数据结构时需要加锁,影响并发操作。

无法适应非结构化存储。

扩展困难。

昂贵、复杂。

NoSQL数据库的特点

优点:

高并发,大数据下读写能力较强。

基本支持分布式,易于扩展,可伸缩。

简单,弱结构化存储。

缺点:

不能操作复杂的查询。

事务支持较弱。

大数据

理解分布式系统的CAP理论

前面我们说了关系型数据库和NoSQL数据库的种类以及他们的特点。如何能很好的在实际项目中的合理的应用,我们应该要了解CAP理论。

CAP的含义是Consistency, Availability, Partition-tolerance也就是一致性、可用性以及分区容错性。

Consistency:一致性(C

Availability:可用性(A

Partition tolerance:分区容错性(P

一致性在多并发访问更新过的数据时,提供给用户的数据是否一致。对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。

可用性某一节点的服务器挂了,集群整体还能响应客户端的读写请求。

分区容错性如果由于节点通讯的问题不能达成数据一致性,必须在一致性和可用性中做出选择。

所以说任何分布式系统只可同时满足二点,没法三者兼顾。例如:

CA应用:传统上的关系型数据库(RMDB).

CP应用:基于HDFS的牛叉的HBase分布式数据库

AP应用:面向文档的分布式系统的数据库MongoDB

那么我们说CAP理论提出就是针对分布式数据库环境的,所以,P这个属性是必须具备的。P就是在分布式环境中,由于网络的问题可能导致某个节点和其它节点失去联系,节点之间互相无法知道对方的状态,这在分布式环境下是非常常见的。所以就形成了P(partition)。那么当P发生时,你要么考虑AAvailability),失去联系的节点依然可以向系统提供服务给客户端,只不过它的数据就不能保证是同步的了(失去了CConsistency)属性),但至少服务及时做了响应。要么考虑C,选择一致性CConsistency)为了保证数据库的一致性,我们必须等待失去联系的节点恢复过来,在这个过程中,那个节点是不允许对外提供服务的,这时候系统处于不可用状态(失去了AAvailability)属性)

最常见的例子是读写分离,某个节点负责写入数据,然后将数据同步到其它节点,其它节点提供读取的服务,当两个节点出现通信问题时,你就面临着选择A(继续提供服务,但是数据不保证准确)或者C(用户处于等待状态,一直等到数据同步完成)。

APCP该如何取舍呢? 我觉得可以根据不同的业务场景做不同的处理。CP对系统的一致性要求较高如ERP系统,OA系统。AP系统可以允许不一致。比如微博系统。

大数据

结论

懂得CAP理论,在实际业务需求中我们能很好的来做数据的存储的架构设计。

所以,高并发下的大数据读写,尽可能的交给NoSQL,HBase或者MongoDB数据库。虽然他们不能像关系型数据库那样很爽的让你查询,但他们确实彪悍。因为专业就是干这个的。对于强事务的数据操作,NoSQL数据库就不要跟人家抢。当然,MySQL不是不好,表数据超过500W,就不要像几十条数据那样的修改、删除。这时候应该考虑是否需要读写分离,从业务上是否需要考虑分割哪些数据经常修改,哪些数据会频繁被查询,是否有大量的数据写入,是否有大量随机的数据读取。

看似操作差不多,但在高并发的大数据面前,这些都是我们需要慎重考虑的。

DT学院-大数据产业前瞻资讯媒体(http://www.dtted.com)除非特别注明,本站所载内容来源于互联网、微信公众号等公开渠道,不代表本站观点,仅供参考、交流之目的。转载的稿件版权归原作者或机构所有,如有侵权,请联系删除。


鲜花

握手

雷人

路过

鸡蛋

最新评论

客户服务

热线:18612963799
点击这里给我发消息

关注微信公众号

Copyright;  ©2015-2016  数据将.