新浪云計算叢磊:NoSQL在SAE中的應用

作者: 來源:未知 2012-03-05 16:30:17 閱讀 我要評論 直達商品

實際上通過三道隔離層來實現,通過MySQL,一個用戶無論是Java開發者,PHP開發者,他在使用的時候RDC的時候沒有任何障礙,他原來代碼訪問的時候,要填自己的IP端口,現在所有人填的IP端口是3307,IP,或者地址是W.RDC。新浪.COM.CN,所有人填的都是這個。當然用戶密碼是分配的,這個根本每個人都不一樣。所有人面向都是同一個中間層,而這個中間層又因為支持SQL協議,導致用戶使用起來沒有任何障礙,他不知道自己使用的是RDC,以為自己使用的是MySQL,整個語法完全跟MySQL一樣進行調用,用戶使用起來完全沒有障礙,不需要改一行代碼。

在這種情況下RDC如何實現隔離性呢?有三個步驟,第一個步驟叫做SQL預判,如果他認為你的SQL執行成本有害于系統的話,他在RDC就屏蔽掉,攔截掉。我們都知道標準MySQL是從1千,標準就是從1萬,你會得到1萬零5,你在一個過大的表上,而且沒有索引的字段上做查詢,你這條搜索被攔截了,這種語句在的RDC上肯定過不去。

也就是說SQL預判可以把我們認為不健康的SQL攔在外面,我們攔的標準是什么?攔哪些SQL語句,比如常見的都攔,攔截的標準是什么?我們會看你帶不帶這樣的語句,語句里面索引是不是加的合適等等,這些選項都會作為我們打分機制,白就通過,黑就攔截,這是第一步。第二步我們都知道黑白這個東西還是過于簡單了,假如說,比如說我現在60分及格,但現在用戶SQL語句都是61分,62分,雖然都及格了,這樣的SQL語句到后端仍然給SAE數據庫進行造成傷害,不光對單獨SQL數據有一個黑和白,還需要對一個時間趨勢判斷。

實際上SQL在這行也傳播性發明一個單詞叫“并發式執行時間和來做這個事情”。我們都知道買SQL自身是支持并發控制,對于一個用戶,我可以限制這個用戶最高并發是多少,這個SQL自己就支持,但這里面有一個問題。SAE想達到一個什么效果呢?對于好的用戶給最大的并發,對于不好的用戶給不好,懲罰性的并發。什么叫好的用戶,你表結果非常合理,思路也非常健康,這種用戶對于SAE來說是好用戶,我們贊賞你,希望你在SQL上運行。哪些不好像剛才那種語句,不好的用戶,不好的語句,我們希望給這種用戶少的并發。我們怎么來天然區分這件事?

因為每個用匯在SQL,我們并不事先知道是好是壞,我們提出并發執行時間和,當前并發SQL語句執行時間的和。我在這塊舉個例子,比如說我現在設定當前并發執行時間1萬秒用戶A每條執行時間是100秒,用戶A獲得并是100,100×100就是10000,用戶B如果執行時間是1萬秒,正好進入SAE之后就繞過去了,第二進都進不來,因為并發時間和已經被消耗光了,1萬×1等于1萬,換成A獲得并發就是100,用戶B獲得的就是并發就是1,從技術層面天然驅動用戶,你要更改自己的表結構,你要優化自己的數據庫,你要寫好的SQL減少對SAE傷害,這就是并發執行時間和的作用。

還有最后防護線就是慢查詢的時間配額,我們規定你的數據庫不能在一定時間之內慢查詢超過多少情況,一旦超過會給你短暫禁用。實際上通過這些措施來綜合的保障了,當我很多很多用戶同時跑在MySQL里面,能夠保證絕大部分用戶健康穩定的運行。我們都說RDC很美好,確實RDC,我們所有開發者數據庫都是有RDC來提供的,但是RDC是不是能解決一切?并不是,RDC不能解決的一個很重要的問題就我們的擴展性問題。擴展性,實際上分成兩種,一種水平擴展,一種垂直擴展,垂直擴展不多說,因為一般都跟業務相關的。

那么水平擴展RDC目前不支持,我們希望用戶分庫分表有自己管,但是RDC天然不做分庫分表。目前有的數據庫是支持水平擴展的,比如我聽過百度介紹他們數據庫系統,可以指定一個,包括微軟(微博)云計算分布式數據庫系統可以指定做分庫分表,但是這里面有一個問題,這個Scalability不叫動態擴展性,是靜態擴展性,用戶不知道分庫分表概念,他只需要往里面寫就行了。靜態就像亞馬遜,我事先數據量有多大,有幾個億,事先分成16個庫,每個庫里面512個表,事先有一個預估,這就是靜態的擴展性。一旦我超過這個預估怎么辦?這時候就需要去遷,拆表,工作量也非常大。

所以,從動態擴展性來講,用戶毫不知情來講還沒有達到這種程度。實際上除了RDC之外,除了那些靜態擴展性關系型數據庫之外,用戶更需要動態擴性,根本不需要分什么庫,分什么表,分什么節點,他需要你往里面執行。實際上RDC在這塊目標,為什么要做NoSQL服務,也是希望能夠給用戶提供完全動態的NoSQL服務。

我們都說關系型數據庫的缺點主要在于擴展性,為了彌補這些擴展性,所以SAE開發一系列NoSQL服務,來彌補和引導用戶,你可以把一些適當不那么可靠性要求不那么高的數據,遷到我們NoSQL里面去。SAE里面NoSQL包含什么東西,有RDC,Storage等。SAE一開始Memcache非常簡單,但是有一個問題在什么地方?第一不能擴展,用戶原來說我起一個512的Memcache后來覺得不夠,需要擴充1個億,就需要重啟,后來重啟不夠。另外一個可靠性非常低,如果這臺機器宕了,所有數據就穿透了。針對這個缺點就開發了MemcacheX,即使當中有一臺機器宕機只應該到用戶N分之一T,里面有獨立的統計信息,獨立LRU量,又構建在一個共享的存儲上面去。

同時,MemcacheX還有一個很重要的特性就是connection LRU,MemcacheX在訪問量特別大的時候容易造成connection堵塞,容易造成新的connection進不來,這是在極大訪問量情況下才出現,我們設置了connection LRU,新的替代掉老的,不會造成訪問量的堵塞。這是MemcacheX架構圖,底層是集群,客戶端進行訪問。我們來看KVDB,實際上是一個非可持久化存儲。KVDB就是在SAE上可持續化的存儲,第一個就是為什么說又一個NoSQL DB,我個人覺得NoSQL DB有點太多了,各個公司都在搞,亂七八糟的東西太多了,我們一開始做之前,SAE有必要參與這個,有必要也攪這個局嗎,后來發現現有東西滿足不了我們這個要求。

我們KVDB都有什么要求?第一存儲引擎是可換的,因為存儲引擎很依賴于,因為數據庫原理是苦定的,幾十年前都已經穩定好了,這是大部分。變化就是硬件,原來是什么什么傳統硬盤,現在變成什么Flash,過去存儲引擎工作比較好,沒準就變成利用FDD引擎工作比較好。所以,我們要求KVDB存儲引擎可以變,我并不依賴某一個特定存儲引擎。另外任意模塊水平擴展,大多數人都支持讀寫分離,第四要支持前綴查找,很多開發者在SAE都需要功能,雖然看似簡單,一個需求就把很多存儲給Pass掉了。


  推薦閱讀

  百度楊棟:HCE助MapReduce提升資源利用率

時至今日,“Big data”(大數據)時代的來臨已經毋庸置疑,尤其是在電信、金融等行業,幾乎已經到了“數據就是業務本身”的地步。這種趨勢已經讓很多相信數據之力量的企業做出改變。恰逢此時,為了讓更多的人了解和使>>>詳細閱讀


本文標題:新浪云計算叢磊:NoSQL在SAE中的應用

地址:http://m.sdlzkt.com/a/kandian/20120305/36930.html

樂購科技部分新聞及文章轉載自互聯網,供讀者交流和學習,若有涉及作者版權等問題請及時與我們聯系,以便更正、刪除或按規定辦理。感謝所有提供資訊的網站,歡迎各類媒體與樂購科技進行文章共享合作。

網友點評
我的評論: 人參與評論
驗證碼: 匿名回答
網友評論(點擊查看更多條評論)
友情提示: 登錄后發表評論,可以直接從評論中的用戶名進入您的個人空間,讓更多網友認識您。
自媒體專欄

評論

熱度

主站蜘蛛池模板: 欧美成人午夜片一一在线观看 | 成人自拍视频网| 亚洲欧洲国产成人精品| 亚洲av成人一区二区三区| 日韩成人无码一区二区三区| 国产精品成人亚洲| 中文国产成人精品久久不卡| 成人午夜视频免费| 国产gav成人免费播放视频| 欧美国产成人在线| 国产成人亚洲综合| 成人无码嫩草影院| 久久亚洲国产成人精品无码区| 成人性生交大片免费视频| 亚洲精品成人片在线观看精品字幕| 色窝窝无码一区二区三区成人网站| 国产成人精品cao在线| 成人无码免费一区二区三区| 久久久久亚洲av成人网人人软件| 成人免费无码大片a毛片软件| 亚洲AV成人片无码网站| 亚洲色成人网站WWW永久| 国产成人精品视频一区二区不卡| 成人爽a毛片在线视频| 精品久久久久久成人AV| 99国产精品久久久久久久成人热| 国产成人一区二区三区精品久久| 成人h在线播放| 成人国产午夜在线视频| 成人禁在线观看| 欧美成人免费一级人片| 欧美成人性色区| 成人精品一区二区三区中文字幕| 免费成人在线电影| 国产成人免费a在线视频app| 成人免费无毒在线观看网站| 成人精品一区二区三区中文字幕 | 成人欧美精品大91在线| 51影院成人影院| 成人白浆超碰人人人人| 成人免费看吃奶视频网站|