久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 數據庫 sharding 要注意些什么?

數據庫 sharding 要注意些什么?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-13 22:43:50 1697208230

一、數據庫 sharding 要注意些什么

Sharding的基本思想就要把一個數據庫切分成多個部分放到不同的數據庫(server)上,從而緩解單一數據庫的性能問題。不太嚴格的講,對于海量數據的數據庫,如果是因為表多而數據多,這時候適合使用垂直切分,即把關系緊密(比如同一模塊)的表切分出來放在一個server上。如果表并不多,但每張表的數據非常多,這時候適合水平切分,即把表的數據按某種規(guī)則(比如按ID散列)切分到多個數據庫(server)上。當然,現實中更多是這兩種情況混雜在一起,這時候需要根據實際情況做出選擇,也可能會綜合使用垂直與水平切分,從而將原有數據庫切分成類似矩陣一樣可以無限擴充的數據庫(server)陣列。

切分策略

如前面所提到的,切分是按先垂直切分再水平切分的步驟進行的。垂直切分的結果正好為水平切分做好了鋪墊。垂直切分的思路就是分析表間的聚合關系,把關系緊密的表放在一起。多數情況下可能是同一個模塊,或者是同一“聚集”。這里的“聚集”正是領域驅動設計里所說的聚集。在垂直切分出的表聚集內,找出“根元素”(這里的“根元素”就是領域驅動設計里的“聚合根”),按“根元素”進行水平切分,也就是從“根元素”開始,把所有和它直接與間接關聯的數據放入一個shard里。這樣出現跨shard關聯的可能性就非常的小。應用程序就不必打斷既有的表間關聯。比如:對于社交網站,幾乎所有數據最終都會關聯到某個用戶上,基于用戶進行切分就是較好的選擇。再比如論壇系統(tǒng),用戶和論壇兩個模塊應該在垂直切分時被分在了兩個shard里,對于論壇模塊來說,Forum顯然是聚合根,因此按Forum進行水平切分,把Forum里所有的帖子和回帖都隨Forum放在一個shard里是很自然的。

對于共享數據數據,如果是只讀的字典表,每個shard里維護一份應該是一個不錯的選擇,這樣不必打斷關聯關系。如果是一般數據間的跨節(jié)點的關聯,就必須打斷。

延伸閱讀:

二、什么是數據庫和數據庫管理系統(tǒng)

數據庫的應用非常廣泛,舉個例子,我們平時在瀏覽器上搜索內容,就要用到數據庫去檢索我們的關鍵字。以前我們可能會用數組、集合、文件等來存儲數據,但是接下來我們就會面臨一個問題,當存儲的數據或內容過多的時候,我們如何去精準的找到我們需要的東西,這時候數據庫管理系統(tǒng)就派上了用場。除此之外,數據庫管理系統(tǒng)還能永久的儲存我們的數據。

為了便于大家理解,這里先給大家講解幾個概念

DB數據庫(database):存儲數據的“倉庫”。它保存了一系列有組織的數據。

DBMS數據庫管理系統(tǒng)(Database Management System):數據庫是通過DBMS創(chuàng)建和操作的容器。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT