Contents
- Computer systems and performance rules of thumb
- Data centers
- Databases
- Storage and distributed file systems
- Distributed systems
- Mapreduce
- Distributed analytics and streaming
- Caching
- Additional information
Computer systems and performance rules of thumb
- Latency vs. throughput
- Amdahl’s law
- Back-of-the-envelope systems math
- Performance bottlenecks
Latency = execution time for a single task
Throughput = number of tasks per unit time
p
e
r
f
o
r
m
a
n
c
e
(
Y
)
=
1
e
x
e
c
u
t
i
o
n
t
i
m
e
(
Z
o
n
Y
)
performance(Y) = \frac{1}{execution\ time(Z\ on Y)}
performance(Y)=execution time(Z onY)1
p
e
r
f
o
r
m
a
n
c
e
(
Y
)
=
1
n
u
m
b
t
i
m
e
(
Z
o
n
Y
)
performance(Y) = \frac{1}{numb\ time(Z\ on Y)}
performance(Y)=numb time(Z onY)1
Data centers
- What is a data center?
- Data center failures
- Achieving reliability with smart software
Databases
- Relational model and SQL
- SELECT, FROM, WHERE
- GROUPBY
- JOINs
- Nested queries
- Transactions
- ACID
- OLAP vs. OLTP, SQL vs. NoSQL
- Indexing
- Logging
- System highlight: BigQuery, MySQL
ACID规则:
- A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。
- C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
- I (Isolation) 独立性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
比如现在有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。
- D (Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
Storage and distributed file systems
- Storage technologies primer
- Distributed file systems
- System highlight: Hadoop File System (HDFS), amazon S3/Google Cloud Storage
Distributed systems
- 2 Phase Commit – Locking
- Sharding
- Fault tolerance
- Replication and consensus
Mapreduce
- Mapreduce computing model
- Stragglers
- Importance of 99th latency
- Strategies to mitigate tail latency and increase availability
Distributed analytics and streaming
- Resilient Distributed Dataframes (RDD)
- Fault tolerance in distributed analytics: lineage
- Streaming computing model
- Systems highlight: Spark, Google Dataproc, Spark streaming
Caching
- Performance benefits
- When to use a cache? (hint: almost everywhereJ) – Consistency and performance considerations
- Eviction policies
- Systems highlight: Memcached and Redis
Additional information
-
硬盘与内存的区别:一、内存是计算机的工作场所,硬盘用来存放暂时不用的信息。二、内存是半导体材料制作,硬盘是磁性材料制作。三、内存中的信息会随掉电而丢失,硬盘中的信息可以长久保存。
-
内存 (Memory) 分ROM (read only memory) 和RAM (Random Access Memory) 两部分,RAM可以理解为主存,ROM只是很小一部分,比如记录BIOS信息的ROM。而硬盘、U盘等存储设备属于外存,和ROM没有关系。
-
DRAM的性价比很高,且扩展性也不错,是现今一般电脑/手机主存的最主要部分。DRAM (Dynamic Random Access Memory),即动态随机存取存储器,最为常见的系统内存。DRAM只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新 (refresh) 一次,如果存储单元没有被刷新,存储的信息就会丢失。
-
Flash 闪存。闪存是一种非易失性(Non-Volatile)内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。
-
硬盘
- 传统硬盘(Hard Disk Drive,HDD)
- 混合硬盘(Hybrid Hard Drive,HHD)
- 固态硬盘 (Solid State Drive,SSD) 。固态硬盘的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,另外一种是采用DRAM作为存储介质。
- 非关系型数据库 NoSQL(Not only SQL)。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
- Concurrent(并发)是指两个或多个事件在同一时间间隔内发生。
- Parallel(并行)并行是指两个或者多个事件在同一时刻发生。
- 在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行
- 在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。
- 倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行。