3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
技術說網路上存在很多有關分片的觀點。我們發現它們大部分都是基於單一的應用類型。事實上,應用類型比其他因素更能影響到分片。B2B類型的應用最容易進行分片。二,分片中最重要的屬性:應用類型(B2B或B2C)Y-軸展示了在對成熟資料庫進行分片時最為重要的屬性:應用程序的類型。在這條軸上,B2B應用處於最上端,它們的數據模型更容易進行分片。B2C應用處於軸的底部,比如Amazon和Facebook,它們的分片需要做更多的工作。接下來,我們挑選了三家知名的公司來比對它們之間的不同點。B2B類型:SalesforceCRM系統是B2B應用最為典型的例子。構建CRM系統的目的是為了要給其他客戶提供服務的,我們假設GE Aviation是你的一個客戶,他們正在使用Salesforce。GE Aviation有如下的一些實體。●客戶(customer):公司的顧客。●用戶(user):用戶可以登錄GE公司的儀錶盤。●負責人(lead):GE與這些負責人商談業務。●聯繫人(contact):GE與這些聯繫人有了業務往來,並知道他們的聯繫方式。●賬號(account):業務代表和擁有聯繫人的人。●機會(opportunity):與賬號和聯繫人相關的銷售事件。如果把這些實體之間的複雜關係映射到資料庫里,看起來是這樣的:整個圖咋一看確實很複雜,不過如果你多花一點時間看仔細一點,你會發現大多數表都是源自customer表。通過往每個表裡添加customer_id列可以把表間關係轉換成如下形式:通過這種簡單的轉換,就可以通過customer_id這個鍵進行資料庫分片。這個鍵可以讓數據均勻地分佈,而大部分查詢都需要帶上這個鍵。另外,你還可以根據customer_id把相關表聚集在同一個位置,這樣就可以繼續使用關係型資料庫的一些關鍵特性,比如事務、表連接和外鍵。換句話說,如果你的應用類型是B2B的,那麼你的數據就具備了分片的天然特性。B2C類型:AmazonAmazon是B2C應用最為典型的例子。在構建像Amazon這樣的網站時,有許多東西需要考慮。首先,用戶來到你的網站,瀏覽你的商品,比如書或電子產品。假設用戶在瀏覽《Harry Potter 7》,他們也可以看到這個產品的分類信息,比如書本的作者、價格、封面和其他圖片。用戶在登錄網站之後,開始訪問用戶相關的數據。用戶需要得到認證,然後獲得給產品添加評論的許可權或者把產品添加到購物車裡。在某個時候,用戶決定要購買購物車裡的產品,於是就下單。訂單經過處理之後,開始進入物流運送流程。你會發現,現在的關係圖與Salesforce的關係圖有一個很大的不同點。現在的關係圖中不止一個中心點,而是三個:分類(catalog)、用戶(user)和訂單(order)。要對這種B2C類型的數據進行分片,可以考慮將它們重構成微服務。例如,與產品目錄相關的服務提供目錄服務,用戶相關的服務提供認證和購物車服務。服務之間的API定義了底層數據訪問的邊界。數據經過拆分之後,就可以進行分片。事實上,Amazon在遷移到面向服務架構時就使用了類似的方式進行數據分片。這種分片方式與B2B應用的分片在好處和成本比率上有很大的差別。從好處方面來看,你可以依賴資料庫從不同的資料庫連接數據,或者為數據集提供事務和約束。從成本方面來看,現在要進行分片的不止是一個數據集,而是多個。B2C2C類型:Instacart在B2B和B2C之間還有另外一種類型的網站,比如Postmates、Instacart或Lyft。[Instacart][12]的主營業務是將本地商店的貨物運送給用戶。從某方面來看,Instacart與Amazon有點類似。Instacart的數據模型具有三個維度:提供貨物的本地商店、訂購商品的用戶和運送貨物的司機。所以,很難在這當中挑出一個鍵進行分片。如果你的應用屬於B2C2C類型,可能需要採取不同的策略。你會發現大部分數據表會共享一個維度:地理位置信息。在這種情況下,你可能會選擇城市或地理位置作為分片的鍵。一般來說,B2B2C應用或B2C2C應用的分片處於圖譜的中間。B2B2C分片的好處和成本之間的比率要高於B2C應用,但低於B2B應用。結論網路上存在很多有關分片的觀點。我們發現它們大部分都是基於單一的應用類型。事實上,應用類型比其他因素更能影響到分片。B2B類型的應用最容易進行分片。 作者 Ozgun Erdogan ,譯者 薛命燈

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦