Microsoft SQL Azure论文笔记
Microsoft SQL Azure
本筆記出自論文《Extreme Scale with Full SQL Language Support in Microsoft SQL Azure》和一些網絡資料。論文在開頭就提到了,很多互聯網行業做出的存儲產品如Google Bigtable、Yahoo PNUTS、Amazon Dynamo等,其提供的ACID事務、一致性保證是和傳統的關系型數據庫有很大區別的。互聯網行業通過其上層業務的抽象,將一致性及事務限制在特定的consistency domain中,從而支持大規模的存儲需求。如Bigtable的EG,以及本文將要講到的partition key。
Azure SQL的設計初衷,就是為了在享受大規模分布式存儲的有點的同時,仍能保有傳統關系型數據庫的大部分特性。
基本架構
數據模型
Azure SQL將數據劃分為多個分區,通過限制事務只能在一個分區執行來規避分布式事務。集群數據多副本采用Quorum,每份數據都會有primary replica。
Azure SQL通過表(這里只廣義上的表,既可以值關系型數據庫中的表table,也可以指存儲Blob,Queues等)的某key作為索引,我們稱之為Partition key。將表中的數據打散到后端不同存儲節點上。只要partition key相同,則數據會分布在同一臺服務器上。
通過這種方式,同一partition key的數據shard總是分布在一臺服務器上,Azure SQL可以天生很好的支持READ COMMITTED隔離級別,但是如果想使用更高的隔離級別,比如REPEATABLE READ,就必須要持有垮shard的鎖,這會使性能下降很多。
另外Azure SQL還支持快照隔離
復制
Azure SQL采用Quorum協議,所有的sql語句經過主副本下發,三副本的數據至少成功兩副本才能返回,主副本在發送事務的時候會帶上事務提交順序號(Commit Sequence Number CSN),從而作為回復和回滾的依據。
如果節點發生了故障,之前講到的global partition manager會執行故障分區的Reconfigration,首先它會選擇一臺負載較輕的機器增加到當前副本集中,拷貝數據,然后重新配置Quorum。由于使用了Quorum,所以數據在集群中的復制優先級也不一樣(有的副本復制了三份,有的只復制了2份),優先級也是由global partition manager來控制的。
顯而易見的是,集群負載較大時,primary replica會成為熱點,這時global partition manager會從三副本中重新選擇一個副本,提升為主primary replica。由于不涉及副本數據的遷移,這種負載均衡較為迅速。
多租戶
Azure SQL是面向多租戶的云數據庫,因此要限制客戶使用的系統資源:
參考鏈接
總結
以上是生活随笔為你收集整理的Microsoft SQL Azure论文笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌GFS论文笔记
- 下一篇: 分布式数据库产品总结