联机事务处理OLTP(On-line Transaction Processing)
联机分析处理OLAP(On-line Analytical Processing)
hadoop
bigtable
nosql
同构系统:
一组master-slave存放有相同的数据,单点故障只能从所在机器组的节点恢复. 1-1备份,多1倍的机子。
异构系统:
减少成本,快速增长
数据被动态分配到集群中的任意一个节点
云存储的数据结构:
1)分布式hash表
通过一致性hash将数据随机分布,支持范围查询
Amazon Dynamo,S3,Simpledb
2)分布式B+树
连续存放,支持范围查询,需要通过分裂和合并实现
单层系统 MICROSOFT SQL AZURE
多层系统 Google GFS&BIG TABLE,Megastore
Yahoo PNUTS
动态、静态数据分离 TAOBAO Oceanbase
3)分布式hash表
Amazon Dynamo,S3:
数据结构 key-value
仅支持 PUT GET DELETE操作
Amazon Simpledb :
按照domain进行数据划分,限制在10GB内
4)Google云存储
a)分布式文件系统GFS 带追加功能
b)分布式数据库系统BigTable 将事务日志追加到GFS,
BIGTABLE内部数据连续存储,逻辑上构成分布式B+树
c)Megastore,percolator在bigtable上实现了分布式事务、索引、sql查询
缺点:分层过多,延迟大,开发难度大
5)SQL Azure
对sql server进行了分布式扩展
缺点:不支持sql azure实例的分裂和合并
6)yahoo pnuts没有对外提供云存储服务
7)云存储系统的难点在于状态数据的迁移和持久化
状态数据:系统的事务提交日志
google bigtable 用gfs实现日志持久化
sql azure 直接提交日志到数据的副本所在地
pnuts通过yahoo!message broker中间件持久化日志
8) Apache Hadoop的HBase,或者Facebook的cassandra
淘宝oceanbase
1)目的: 淘宝内部在线业务的云存储问题
2)设计系统需要考虑现在及未来一段时间的需求
3) RootServer:负责数据定位、机器管理、负载均衡、全局表Schema信息管理等。
UpdateServer:负责存储动态数据,存储介质为内存和SSD。
ChunkServer:负责存储静态数据,数据存储3份,存储介质为磁盘或者SSD。
Client:Oceanbase提供的胖客户端。
4)读操作要读updateserver与chunkserver,写操作只需向updateserver写入即可
updateserver采用实时同步的强一致性,只有主备机都操作成功才返回客户端
静态数据的存储格式为sstable表,数据划分为最大几百MB的子表
通过以下3种方式优化
bloom filter,block cache,key-value cache
5)sstable支持按列组排序
动态数据采用cow(copy on write)实现单击内存b+树,单写多读不需加锁
6)静态数据形成分布式b+树
动态数据为单机b+树
7)支持自动负载均衡,在线修改schema、内置压缩解压缩
不懂的概念:
1) QPS TPS qurey per second transaction(insert update delete) per second
磁盘的IOPS
2) 范围查询
3)Linux HA方式 双击热备份?
4)随机读 随机写