数据存储系统性能优化思维导图

当前计算机硬件的基本性能指标及其在数据库中主要操作内容,可以整理出如下图所示的性能基本优化法则:

这个优化法则归纳为5个层次:

1、 减少数据访问(减少磁盘访问)

2、 返回更少数据(减少网络传输或磁盘访问)

3、 减少交互次数(减少网络传输)

4、 减少服务器CPU开销(减少CPU及内存开销)

5、 利用更多资源(增加资源)

由于每一层优化法则都是解决其对应硬件的性能问题,所以带来的性能提升比例也不一样。传统数据库系统设计是也是尽可能对低速设备提供优化方法,因此针对低速设备问题的可优化手段也更多,优化成本也更低。我们任何一个SQL的性能优化都应该按这个规则由上到下来诊断问题并提出解决方案,而不应该首先想到的是增加资源解决问题。

Read more
OLAP引擎思维导图

联机分析处理(OLAP)

联机分析处理(英语:On-Line Analytical Processing,简称OLAP),是一套以多维度方式分析数据,而能弹性地提供上卷(Roll-up)、下钻(Drill-down)、和透视分析(pivot)等操作,呈现集成性决策信息的方法,多用于决策支持系统、商务智能或数据仓库。其主要的功能,在于方便大规模数据分析及统计计算,对决策提供参考和支持。
OLA数据库的设计目的是为了提高检索数据的速度。
OLAP数据库包含两种基本类型的数据:度量值和维度。前者是数值数据,表示您用于做出明智的商业决策的数量和平均值;后者是用于组织这些度量值的类别。OLAP 数据库可帮助您按照多个明细级别组织数据,从而可以使用您熟悉的相同类别来分析数据。

各类OLAP引擎

针对OLAP查询,出现了各类的引擎,主要以ROLAP与MOLAP为主,MOLAP将需要查询分析的维度数据预先计算好,来实现高速的查询要求。
下面例举常见的OLAP引擎以及优缺点,实现技术细节等。
OLAP引擎思维导图


bitmap与标签存储

最近在标签存储中,需要根据标签值查询用户id,所以想到在源数据表基础上建立索引。因为标签数据量大,且标签基数相对较少,查询条件往往涉及多标签组合过滤,所以选用了bitmap作为索引。

bitmap简介

bitmap就是以比特位来存储状态。
bitmap

bitmap索引

例如用户数据表

现在要在用户性别和婚姻状态建立bitmap索引。

通过索引值为1,我们可以看出性别男的用户rowid为1和3,然后在查询源用户表,就可以查出性别男的是张三,王五。婚姻状况同理。
下面我们如果要查询:
select * from table where Gender=’男’ and Marital=’未婚’
首先我们找到男索引列和未婚索引列,然后对其取并集。

Read more
磁盘I/O

最近一直在看HBase底层存储,想更深入的理解HBase采用LSM结构,而不是B-tree的缘由,所以需要更深入的理解磁盘存储。
本文转载于磁盘I/O那些事,该文详细讲解了磁盘结构,磁盘如何存储数据,如果读取数据,以及磁盘读写的IO过程。

背景

计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的I/O读写速度成为了计算机系统性能提高的瓶颈,制约了计算机整体性能的发展。

硬盘性能的制约因素是什么?如何根据磁盘I/O特性来进行系统设计?针对这些问题,本文将介绍硬盘的物理结构和性能指标,以及操作系统针对磁盘性能所做的优化,最后讨论下基于磁盘I/O特性设计的技巧。

硬盘的物理结构

硬盘内部主要部件为磁盘盘片、传动手臂、读写磁头和主轴马达。实际数据都是写在盘片上,读写主要是通过传动手臂上的读写磁头来完成。实际运行时,主轴让磁盘盘片转动,然后传动手臂可伸展让读取头在盘片上进行读写操作。磁盘物理结构如下图所示:

磁盘结构

Read more
工程师跨越成长视频笔记

今天看了一个分享视频,来自美团技术学院院长刘江的分享。结合最近自己在公司里,对除技术外其他技能的要求有所反思,觉得有必要对这个分享做个纪要。下面是刘江老师的分享主要内容(包括主持人提问回答)。

技术人员需要的技能

之前觉得技术很牛逼很重要,很多事情的改变都是由技术推动的,但渐渐发现跟技术同等重要的事情还有很多。技术人员的能力要求分为四个方面:技术知识,技术能力,通用能力,专业影响力。

技术知识和技术能力是一个工程师通识的技能要求,毕竟要完成任务。但是沟通能力,以及商业sense也是很重要的。随着职级上升,沟通表达能力以及商业sense也越来越重要(上次去数据库大会,百度首席科学家毕然老师也强调了商业sense)。没有商业sense的技术在公司是没有价值的。而团队合作,作为leader是需要通过演讲来凝聚团队,给与团队目标。职级越高,对表达能力要求越高。而专业影响力在于沉淀,通过文字或者演技总结经验,传输给别人。通过博客或者演讲让自己在业界有一定影响力。

公司在对技术人员培养上,也需要给予表达和演讲这样的平台和机会,push他们,让他们走出舒适区,提升自己的软实力。

Read more
打算观看的美剧

马上又要到一年一度的国产电影保护月,为了避免被好莱坞,甚至宝莱坞电影的冲击,为国产电影票房提供保障,这不就是经济学中的价格下限么。借用前面经济学文章里面所讲的价格下限。价格下限会造成供大于求。因为受到了保护,失去了市场的充分竞争,造成生产的商品质量进一步下降。人们购买(观看电影)的欲望下降,而因为生产者受到了保护,使其更愿意生产。这样供需处于均衡点的下方,造成供大于求。当然,就算不保护国产电影,也是一如既往的烂。

而且最近fbb事件,4天片酬6000w还逃税,以及某些明星动不动就是一亿的合同。就这样,这些明星的演技差的掉牙,竟然胱垫总橘还搞出来国产电影保护月。让整个国产电影的质量进一步下降,真是脑子被驴踢了。

就像之前冯导说的“这届观众不行”,和某网站的悖论一样:系统推荐的都是xx新闻,用户说怎么老推荐xx新闻呢;网站说系统就是根据用户的习惯和喜好,通过算法推荐的。所以到底是用户不行还是?而且,就是这么烂的国产电影还是挺赚钱的,让我也陷入了深思。

吐槽归吐槽,虽然没有什么美国大片(不让进,你能怎么办!),但最近好像有几部美剧还不错。所以我先记在小本本上。

Read more
spark加速Bulkload

本文介绍HBase在大数据量导入时Bulkload的操作过程,以及使用spark加速整个Bulkload。

背景

在第一次建立Hbase表的时候,我们可能需要往里面一次性导入大量的初始化数据。我们很自然地想到将数据一条条插入到Hbase中,或者通过MR方式等。但是这些方式不是慢就是在导入的过程的占用Region资源导致效率低下,所以很不适合一次性导入大量数据。使用 Bulk Load 方式由于利用了 HBase 的数据信息是按照特定格式存储在 HDFS 里的这一特性,直接在 HDFS 中生成持久化的 HFile 数据格式文件,然后完成巨量数据快速入库的操作,配合 MapReduce 完成这样的操作,不占用 Region 资源,不会产生巨量的写入 I/O,所以需要较少的 CPU 和网络资源。

Bulkload实现过程

利用MR生成HFile

因为HBase底层存储结构是HFile,而Hbase API为我们提供了生成HFile,我们只需要按照要求,写Mapper,生成特定的(ImmutableBytesWritable, Put)对,或者(ImmutableBytesWritable, KeyValue)即可。

Read more
经济思维读书笔记(二)

主要是以下两本书的读书笔记:《斯坦福极简经济学》,《经济学的思维方式》。本篇是第二篇,这篇主要介绍宏观经济。我认为宏观经济让我们关注社会资产变动,能让我们更好的理解加息,降准等货币政策背后的真正意图,以及这些政策对自己资产的影响。

宏观经济

宏观经济政策的四个目标是:经济增长,充分就业,物价稳定和国际收支平衡。

宏观经济政策的两组主要工具:财政政策和货币政策。

财政政策是政府税收和支出的政策,包括政府预算和预算赤字。货币政策是值中央银行的政策,它会影响利率,信用以及社会上借贷与放款的数量。

GDP与经济增长

GDP:一年内所生产的最终商品和服务的总价值。GDP=C+I+G+X-M,也就是消费+投资+政府支出+出口-进口。

经济长期增长的根本原因是生产力的提升。生产力增长的三大驱动因素:实物资本增加(更多的资本设备让员工使用),更多的人力资本(员工有更多的经验或者更好的教育)以及更好的技术(更有效率的生产方式)。

Read more
经济思维读书笔记(一)

主要是以下两本书的读书笔记:《斯坦福极简经济学》,《经济学的思维方式》,本篇是第一篇。经济思维并不能帮助我们像金融那样赚钱,但能帮助我们更好的做决策。

经济学的三个基础问题

社会应该生产什么?

应该怎么生产?

谁来消费所生产的东西?

这三个问题是每种经济制度乃至每个社会的基础,无论是资本主义,社会主义还是共产主义,或是低收入,中等收入或高收入社会。

经济学与政治立场无关,经济学是一个思考问题的架构。

自利(self-interest)是组成社会的有效方式。每个人通常不打算促进公共利益,只盘算自己的利益,但被一只看不见的手引导,去促成一个与他本意无关的目的。(?如果只靠市场,整个社会似乎会平衡大家的私利。那法律,道德在中间扮演的角色又是什么,是否必需要

Read more
hexo搭建博客教程相关链接

hexo shell

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server
Read more