BloomFilter原理,实现及优化 | Charles的技术博客 

作者:JerryXia | 发表于 , 阅读 (0)
引言最近在做性能优化相关的事情,其中涉及到了BloomFilter,于是对BloomFilter总结了下,本文组织结构如下:
BloomFilter的使用场景BloomFilter的原理BloomFilter的实现及优化BloomFilter的使用场景首先,简单来看下BloomFilter是做什么的?
A Bloom filter is a space-efficient probabilistic data structure, conceived by Burton Howard Bloom in 1970, that is used to test whether an element is a member of a set. False positive matches are possible, but false negatives are not, thus a Bloom filter has a 100% recall rate. In other words, a query returns either “possibly in set” or “defin...阅读全文

 NewSQL究竟新在哪里? | Charles的技术博客 

作者:JerryXia | 发表于 , 阅读 (0)
近几年来,数据库领域出现了一种新的关系数据库类型,称为NewSQL,例如,Google的Spanner,Amazon的Aurora等等,这些数据库相对于传统数据库来讲,区别在哪里?What’s Really New with NewSQL?给了很好的总结,本篇文章主要是总结该论文的观点,最后会有一个简单的讨论部分,全文的组织结构如下:
为什么需要NewSQL?NewSQL的分类NewSQL的技术挑战有哪些?讨论本文收录在我的github中papers项目,papers项目旨在学习和总结分布式系统相关的论文。
为什么需要NewSQL?数据库的发展通常是随着业务需求的变化,在2000年左右,随着互联网的兴起,有许多同时在线的用户,这对数据库领域带来了非常大的挑战,数据库通常会成为瓶颈,所以,此时业务针对数据库的需求,主要体现在可扩展上面。
这时期数据库的扩展性,往往采用如下两种方案:
垂直扩展:使用更好的硬件,来做数据库的服务器水平扩展:采用中间件,做sharding的方式,即分库分表的方式垂直扩展中使用更好的硬件意味者成本高,并且更换硬件后,需要把数据从老的机器迁移到新的机器,中...阅读全文

 事务隔离(二):基于加锁方式的事务隔离原理 | Charles的技术博客 

作者:JerryXia | 发表于 , 阅读 (0)
ANSI SQL标准下的事务隔离级别及其扩展回顾ANSI SQL标准下的事务隔离级别是基于禁止某些干扰现象而制定的,这些现象如下:
脏读P1
W1(X)…R2(X)…A1…R2(X)
不可重复读P2
R1(X)…W2(X)…C2…R1(X)
幻读P3
R1(P)…W2(P)…C2…R1(P)
针对三种现象,ANSI SQL标准设定了四种事务隔离级别,如下:
Read Uncommitted:有可能发生P1,P2和P3Read Committed:不可能发生P1,有可能发生P2和P3Repeatable Read:不可能发生P1,P2,有可能发生P3Serializable:不可能发生P1,P2和P3整个事务个隔离级别,与杜绝的现象的对应关系如下图:

由于ANSI SQL的标准存在以下限制:
没有提及写操作的隔离性ANSI SQL的标准比较老,对于采用多版本并发控制实现隔离性的级别不能够很好的描述即新干扰现象P0和P4,其中脏写P0如下
W1(X)…W2(X)…A1
写丢失P4如下
R1(X)…R2(X)…W2(X)…C2…W1(X)…C1
因此,引入了新...阅读全文

 事务隔离(一):ANSI SQL事务隔离级别,限制及扩展 | Charles的技术博客 

作者:JerryXia | 发表于 , 阅读 (0)
引言一般的数据库教科书上都会介绍,事务有ACID四个特性,分别是atomicity, consistency, isolation和duriablity。本文主要讨论是事务的isolation特性,即隔离性。
谈到事务的隔离性,一般是指ANSI SQL标准下的四种隔离级别,即Read Uncommitted, Read Committed, Repeatable Read和Serialibility。但ANSI SQL的事务隔离级别的标准存在以下限制:
没有提及写操作的隔离性ANSI SQL的标准比较老,对于采用多版本并发控制实现隔离性的级别不能够很好的描述本文主要在分析ANSI SQL标准下的事务隔离级别之后,讨论其限制,以及扩展,全文的组织架构如下:
ANSI SQL标准下的事务隔离级别ANSI SQL标准的限制及其扩展本文收录在papers项目,papers项目旨在学习和总结分布式系统相关的论文。
ANSI SQL标准下的事务隔离级别在数据库中,多个事务往往是并发执行的,事务之间可能会存在干扰,从而导致数据不正确的问题。为了保证事务之间执行不互相干扰,最简单的方案则是串行...阅读全文

 程序员需要知道的SSD基本原理 | Charles的技术博客 

作者:JerryXia | 发表于 , 阅读 (0)
引言SSD是目前商用服务器上非常流行的存储介质,因此,作为软件开发人员,需要了解的SSD基本原理,以便开发时能更好地发挥其优势,规避其劣势。本文总结了作为软件开发人员需要了解的SSD基本原理,全文组织结构如下:
SSD的读写速度SSD内部芯片的简单存取原理SSD的读写特性SSD的over-provisioning和garbage-collectionSSD的损耗均衡控制SSD的写放大问题SSD的读写速度首先,从软件开发人员作为SSD的用户角度来讲,首先需要了解的是SSD和普通HDD的性能对比,如下:
先来看顺序读和顺序写


其中,Seagate ST3000DM001是HDD,其他的都是SSD。从上述两图中可以看出,HDD的顺序读速度差不多为最慢的SSD的一半,顺序写稍微好点,但也比大部分慢一倍左右的速度。
再来看随机读和随机写


可以看出,HDD的随机读的性能是普通SSD的几十分之一,随机写性能更差。
因此,SSD的随机读和写性能要远远好于HDD,本文接下来的几个小节将会讨论为什么SSD的随机读写性能要远远高于HDD?
备注:本小节测试数据全部来自于HDD ...阅读全文