OLAP、OLTP的比较

本文转自 https://www.cnblogs.com/hhandbibi/p/7118740.html OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、 联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的 主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的 主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作; OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。 OLTP,也叫联机事务处理(Online Transaction Processing),表示事务性非常高的系统, 一般都是高可用的在线系统,以小的事务以及小的查询为主,评估其系统的时候,一般看其每秒 执行的Transaction以及Execute SQL的数量。在这样的系统中,单个数据库每秒处理的Transaction 往往超过几百个,或者是几千个,Select 语句的执行量每秒几千甚至几万个。典型的OLTP系统有 电子商务系统、银行、证券等,如美国eBay的业务数据库,就是很典型的OLTP数据库。 OLTP系统最容易出现瓶颈的地方就是CPU与磁盘子系统。 (1)CPU出现瓶颈常表现在逻辑读总量与计算性函数或者是过程上,逻辑读总量等于单个语句的 逻辑读乘以执行次数,如果单个语句执行速度虽然很快,但是执行次数非常多,那么,也可能会 导致很大的逻辑读总量。设计的方法与优化的方法就是减少单个语句的逻辑读,或者是减少它们的…

一个成熟的自动化运维系统应具备的功能

以下是一些高人的回答,非常具有参考价值. 作者:刀把五 链接:https://www.zhihu.com/question/23228213/answer/116940889 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 结合现在云计算和DevOps的发展趋势,我觉得一个成熟的自动化运维平台应该包括以下的特性: 一、支持混合云的CMDB 现在越来越多的服务器都转到了云上,而主流的公有云、私有云平台都拥有比较完备的资源管理的API, 这些API也就是构建一个自动化CMDB的基础。 新一代自动化运维平台应该是能基于这些API自动维护和管理服务器、存储、网络、负载均衡的资源的。 通过API对资源的操作都应该被作为操作日志记录下来,以备作为后续操作审计的基础数据。 CMDB这个东西听上去是老生常谈,但这个确实是所有运维工具的基础设施。 而基于开源工具做运维平台最大的麻烦,就是如何在各个工具之间把CMDB统一起来。 CMDB不统一起来,就意味着一旦要增加一台服务器,可能要在各个运维工具里面都要同步一下, 这个还是非常折腾滴。。。 二、比较完备的监控+应用性能分析(APM) 能支持对平台的可用性、服务器的性能、各种服务(web服务、应用服务、数据库服务)的性能进行监控。 做的好一些应该能进行更深入、或者关联性的性能分析。 现在市面上一般都会将资源性能监控和应用性能监控(APM)混合着讲,这里面的产品确实也有很多都是…

MariaDB和MySQL

MariaDB数据库管理系统是MySQL的一个分支 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区 采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在 存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。 MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中 了解到MariaDB的所有功能。 从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础, 加上移植自MySQL 5.6版的功能和自行开发的新功能。 MySQL分支的选择:Percona还是MariaDB PostgreSQL一直被当作MySQL的直接竞争对手MyISAM没有提供事务支持,而InnoDB提供了 事务支持.XtraDB 是 InnoDB 存储引擎的增强版,谷歌和维基都选择了mariaDB ,MariaDB是MySQL创 始人搞的…

深度好文-从12306.cn谈大网站架构与性能优化

12306.cn网站挂了,被全国人民骂了。我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题。因为仓促,而且完全基于本人有限的经验和了解,所以,如果有什么问题还请大家一起讨论和指正。(这又是一篇长文,只讨论性能问题,不讨论那些UI,用户体验,或是是否把支付和购票下单环节分开的功能性的东西) 业务 任何技术都离不开业务需求,所以,要说明性能问题,首先还是想先说说业务问题。 其一,有人可能把这个东西和QQ或是网游相比。但我觉得这两者是不一样的,网游和QQ在线或是登录时访问的更多的是用户自己的数据,而订票系统访问的是中心的票量数据,这是不一样的。不要觉得网游或是QQ能行你就以为这是一样的。网游和QQ 的后端负载相对于电子商务的系统还是简单。 其二,有人说春节期间订火车的这个事好像网站的秒杀活动。的确很相似,但是如果你的思考不在表面的话,你会发现这也有些不一样。火车票这个事,一方面会伴随着大量的查询操作,更BT的是下单的时候需要对数据库很多的一致性的操作,一方面是从起点到终点各个分段票的一致性,另一方面,买的人路线、车次、时间选择有很多,会不停地改变下单方式。而秒杀,直接杀就好了,没有那么多查询和一致性的问题。另外,关于秒杀,完全可以做成只接受前N个用户的请求(完全不操作后端的任何数据, 仅仅只是对用户的下单操作log),这种业务,只需要在内存cache中放好可秒杀的数量,还可以把数据分布开来放,100产品,10台服务器一台放10个,无需在当时操作任何数据库。可以订单数够后,停止秒杀,然后批量写数据库。而且秒杀的商品不多。火车票这个不是像秒杀那么简单的,春运时间,几乎所有的票都是热门票,而且几乎是全国人民都来了,而且还有转车业务,多条线的库存都要做事务操作,你想想吧,这有多难。(淘宝的双十一也就3百万用户,而火车票瞬时有千万级别甚至是亿级别的)(更新:2014年1月11日:来了淘宝后,对淘宝的系统有了解,淘宝的秒杀活动,本质上是用输验证码并在CDN上把用户直接过滤掉了,比如:1千万个用户过滤了只剩2万个用户,这样数据库就顶得住了) 其三,有人拿这个系统和奥运会的票务系统比较。我觉得还是不一样。虽然奥运会的票务系统当年也一上线就废了。但是奥运会用的是抽奖的方式,也就是说不存在先来先得的抢的方式,而且,是事后抽奖,事前只需要收信息,事前不需要保证数据一致性,没有锁,很容易水平扩展。 其四,订票系统应该和电子商务的订单系统很相似,都是需要对库存进行:1)占住库存,2)支付(可选),3)扣除库存的操作。这个是需要有一致性的检查的,也就是在并发时需要对数据加锁的。B2C的电商基本上都会把这个事干成异步的,也就是说,你下的订单并不是马上处理的,而是延时处理的,只有成功处理了,系统才会给你一封确认邮件说是订单成功。我相信有很多朋友都收到认单不成功的邮件。这就是说,数据一致性在并发下是一个瓶颈。 其五,铁路的票务业务很变态,其采用的是突然放票,而有的票又远远不够大家分,所以,大家才会有抢票这种有中国特色的业务的做法。于是当票放出来的时候,就会有几百万人甚至上千万人杀上去,查询,下单。几十分钟内,一个网站能接受几千万的访问量,这个是很恐怖的事情。据说12306的高峰访问是10亿PV,集中在早8点到10点,每秒PV在高峰时上千万。 多说几句: 库存是B2C的恶梦,库存管理相当的复杂。怀疑,你可以问问所有传统和电务零售业的企业,看看他们管理库存是多么难的一件事。不然,就不会有那么多人在问凡客的库存问题了。(你还可以看看《乔布斯传》,你就知道为什么Tim会接任Apple的CEO了,最主要的原因是他搞定了苹果的库存周期问题) 对于一个网站来说,浏览网页的高负载很容易搞定,查询的负载有一定的难度去处理,不过还是可以通过缓存查询结果来搞定,最难的就是下单的负载。因为要访问库存啊,对于下单,基本上是用异步来搞定的。去年双11节,淘宝的每小时的订单数大约在60万左右,京东一天也才能支持40万(居然比12306还差),亚马逊5年前一小时可支持70万订单量。可见,下订单的操作并没有我们相像的那么性能高。 淘宝要比B2C的网站要简单得多,因为没有仓库,所以,不存在像B2C这样有N个仓库对同一商品库存更新和查询的操作。下单的时候,B2C的 网站要去找一个仓库,又要离用户近,又要有库存,这需要很多计算。试想,你在北京买了一本书,北京的仓库没货了,就要从周边的仓库调,那就要去看看沉阳或 是西安的仓库有没有货,如果没有,又得看看江苏的仓库,等等。淘宝的就没有那么多事了,每个商户有自己的库存,库存就是一个数字,并且库存分到商户头上了,反而有利于性能扩展。 数据一致性才是真正的性能瓶颈。有 人说nginx可以搞定每秒10万的静态请求,我不怀疑。但这只是静态请求,理论值,只要带宽、I/O够强,服务器计算能力够,并支持的并发连接数顶得住10万TCP链接的建立 的话,那没有问题。但在数据一致性面前,这10万就完完全全成了一个可望不可及的理论值了。 我说那么多,我只是想从业务上告诉大家,我们需要从业务上真正了解春运铁路订票这样业务的变态之处。 前端性能优化技术 要解决性能的问题,有很多种常用的方法,我在下面列举一下,我相信12306这个网站使用下面的这些技术会让其性能有质的飞跃。 一、前端负载均衡 通过DNS的负载均衡器(一般在路由器上根据路由的负载重定向)可以把用户的访问均匀地分散在多个Web服务器上。这样可以减少Web服务器的请求负载。因为http的请求都是短作业,所以,可以通过很简单的负载均衡器来完成这一功能。最好是有CDN网络让用户连接与其最近的服务器(CDN通常伴随着分布式存储)。(关于负载均衡更为详细的说明见“后端的负载均衡”) 二、减少前端链接数…

系统集成与项目管理

所谓系统集成(SI,系统集成),就是通过结构化的综合布线系统和计算机网络技术,将各个分离的设备(如个人电脑)、功能和信息等集成到相互关联的、统一和协调的系统之中,使资源达到充分共享,实现集中、高效、便利的管理。系统集成应采用功能集成、网络集成、软件界面集成等多种集成技术 。系统集成实现的关键在于解决系统之间的互连和互操作性问题,它是一个多厂商、多协议和面向各种应用的体系结构。这需要解决各类设备、子系 统间的接口、协议、系统平台、应用软件等与子系统、建筑环境、施工配合、组织管理和人员配备相关的一切面向集成的问题。 目前,国内系统集成公司很多,系统集成也成为一个热门话题。系统集成是指在系统工程科学方法的指导下,根据用户需求,优选各种技术和产品,将各个分离的子系统连接成为一个完整可靠经济和有效的整体,并使之能彼此协调工作,发挥整体效益,达到整体性能最优。由于信息产业的技术含量高,信息系统集 成项目经常会遇到需求多变、技术更新和所处的环境变化快速和人员流动频繁等情况,故影响项目管理的因素日趋增多,信息系统集成项目管理中也存在诸多问题,本 文总结分析了系统集成项目管理存在的问题,以及与之相应的对策。 系统集成项目管理中存在的问题有: (一)项目计划导致系统集成项目的失败 (二)项目范围控制管理不力 (三)项目管理中沟通不到位 详细制定项目计划项目计划的详细制定对项目过程的控制有着不可小视的作用。系统集成项目中影响进度的因素较多,要求计划不能一成不变,要不断随具体情况调整;制定计划要各部门共同参与,因为系统集成一般需要多种学科的配合,可能各人不了解其他人的工作内容,这就要求关键人物都要参与计划的制定;在项目计划制定过程中必须清楚五个基本问题:项目做什么、如何做、谁去做、何时做及花费多少。项目要完成什么样的事情即项目目标,这是项目经理和项目组成员在检查技术目标时要明确的;项目如何进行即项目任务,技术目标是要靠制定工作分解结构图实现的,并把机构有关单位负责何项工作较详细地具体化到工作分解结构图中去;在何时完成任务即进度表,计划工作更进了一步,讨论每一项工作需多长时间及在何时实施、每项工作需用哪些资源等问题;花费多少即预算,实施这一项目需要多少经费。在制定项目计划时必须由项目组成员利用工作分解结构图(WBS,Work Breakdown Structure)将项目按照其内在结构或实施过程的顺序进行逐层分解而形成的结构示意图,把各工作单元在项目中地位与构成直观地表示出来。 系统集成企业必须注重对客户进行管理,在项目计划开始时要对以往项目的记录信息进行分析,在此基础上制定项目计划。如果项目没有原始记录,就必须在之前进行客户需求分析,可行性研究,从而得出项目计划的客观资料。项目计划一定要涉及到每一个分项目的工作内容,这样可以使项目管理者合理地评估时间和成本,编制出可操作的时间计划。项目计划制定出来后,由于其具有一定的不明确性,会使项目计划出现变动,此时,一定要及时改动项目上的实施细节,使项目进度能在计划的控制范围内,否则项目团队最终只能丧失控制力。 有效控制项目范围在需求日益变化,客户普遍声称需求变化是合理的、是其应有权利的时代,控制项目范围将面临更多的挑战和需要更多的创意。当工作进行时,不可避免的会出现变化,如:客户要求追加一项在计划阶段未曾预想的功能特性,也许是市场机会已经发生变化等问题。项目经理就要对此变化立即采取行动。对于客户的要求和市场形势的变化,一定要及时沟通,因为这一项变化,会导致项目在工期、质量保证、可用资源的增加,对项目范围的变更进行详细的交涉,确定之后再形成文件,归档。若客户或者利益相关者否决对项目时间、资源上的支持,那么客户的要求就不能给予实现,这些原则项目经理都必须坚持做到,否则,项目进行时得到客户暂时的满意,而项目的延期完成会导致所有利益项目者对项目整体的不满意。为规范化项目变更管理,需要制定明确的变更管理流程,其主要内容是识别并管理项目内外引起超出或缩小项目范围的所有因素。它包括三个主要过程:对引起工作范围变更的因素进行识别;确定确实需要发生变更并施加影响以保证变更是有益的;管理那些实际发生的变更。实施项目沟通管理项目沟通管理,就是为了确保项目信息收集和传输,以及最终处理所需实施的一系列过程。但是在具体的实施中,由于不同的因素,造成项目进行的效果有天壤之别。项目管理者的一个关键职责是促进项目团队内部的沟通交流,以及项目和广泛的外部利益相关者之间的沟通交流。良好的沟通是值得花时间的,根据国际商务交流协会的一项调查,企业经理在交流方面的投资收益率为235%。而项目管理比企业管理更具针对性,所以在沟通上投入时间是相当值得的。沟通计划的制定是在对项目利益关系者的识别和分析上进行的。虽然所有的项目都需要沟通项目信息,但信息需求和发送方式差别很大。确认利益相关者的信息需求和决定满足需求的适当方式是项目获得成功的重要因素。对于大多数系统集成项目,沟通计划的大部分工作在项目启动阶段己经完成。但在项目进行中,沟通计划的效果应定期复查并根据需要作适当的修改以确保其适用性。 随着社会项目管理运用领域的不断扩大,系统集成企业必然对项目管理产生更大的需求;项目的成功不仅需要成功的项目经理,而且需要选择合适的项目管理方法以及支持这些方法和阶段工作的工具。应用这些方法和工具可以极大地帮助项目获得成功。系统集成企业组织在向项目型组织过渡中,应该分步骤、分阶段地建立项目管理标准,企业要重视项目管理人才,系统集成也应该根据自己行业的特点建立相应的项目管理标准,保证系统集成企业的可持续发展。