国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

說說為什么要做數(shù)據(jù)庫拆分

這篇具有很好參考價值的文章主要介紹了說說為什么要做數(shù)據(jù)庫拆分。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

說說為什么要做數(shù)據(jù)庫拆分

1. 為什么要拆分數(shù)據(jù)庫?

單體項目在構建之初,數(shù)據(jù)庫的負載和數(shù)據(jù)量都不大,所以不需要對數(shù)據(jù)庫做拆分,小型財務系統(tǒng)、文書系統(tǒng)、ERP系統(tǒng)、OA系統(tǒng),用一個MySQL數(shù)據(jù)庫實例基本就夠用了。

就像《淘寶技術這十年》里面說到的,電商業(yè)務的數(shù)據(jù)量增長飛快,所以最開始的PHP+MySQL的架構已經(jīng)不能滿足實際要求了,于是淘寶想到的第一個辦法就是把MySQL替換成Oracle。但是沒過了多久,在08年前后,單節(jié)點的Oracle數(shù)據(jù)庫也不好用了,于是淘寶終于告別了單節(jié)點數(shù)據(jù)庫,開始拆分數(shù)據(jù)庫。從一個節(jié)點,變成多個節(jié)點。

拆分數(shù)據(jù)庫是有講究的,比如說拆分方法有兩種:垂直切分和水平切分。那你是先水平切分還是垂直切分呢?順序無所謂?不,順序有所謂,次序絕對不能錯:先水平切分,然后垂直切分。

2. 什么是垂直切分?

垂直切分是根據(jù)業(yè)務來拆分數(shù)據(jù)庫,同一類業(yè)務的數(shù)據(jù)表拆分到一個獨立的數(shù)據(jù)庫,另一類的數(shù)據(jù)表拆分到其他數(shù)據(jù)庫。

比如說一個新零售的電商數(shù)據(jù)庫,我們可以把跟商品相關的數(shù)據(jù)表拆分成一個數(shù)據(jù)庫,然后在這些數(shù)據(jù)表的基礎之上,構建出商品系統(tǒng)。比如用JAVA或者PHP語言,創(chuàng)建出一個商城系統(tǒng)。然后把跟進銷存相關的數(shù)據(jù)表拆分到另外一個數(shù)據(jù)庫上,再用程序構建出倉庫系統(tǒng)。

說說為什么要做數(shù)據(jù)庫拆分

垂直切分解決了什么問題

垂直切分可以降低單節(jié)點數(shù)據(jù)庫的負載。原來所有數(shù)據(jù)表都放在一個數(shù)據(jù)庫節(jié)點上,無疑所有的讀寫請求也都發(fā)到這個MySQL上面,所以數(shù)據(jù)庫的負載太高。如果把一個節(jié)點的數(shù)據(jù)庫拆分成多個MySQL數(shù)據(jù)庫,這樣就可以有效的降低每個MySQL數(shù)據(jù)庫的負載。

垂直切分不能解決什么問題

垂直切分不能解決的是縮表,比如說商品表無論劃分給哪個數(shù)據(jù)庫節(jié)點,商品表的記錄還是那么多,不管你把數(shù)據(jù)庫垂直拆分的有多細致,每個數(shù)據(jù)表里面的數(shù)據(jù)量是沒有變化的。

MySQL單表記錄超過2000萬,讀寫性能會下降的很快,因此說垂直切分并不能起到縮表的效果。

3. 什么是水平切分?

水平切分是按照某個字段的某種規(guī)則,把數(shù)據(jù)切分到多張數(shù)據(jù)表。一張數(shù)據(jù)表化整為零,拆分成多張數(shù)據(jù)表,這樣就可以起到縮表的效果了。

說說為什么要做數(shù)據(jù)庫拆分

很多人,都會水平切分存在誤解,以為水平切分出來的數(shù)據(jù)表必須保存在不同的MySQL節(jié)點上。其實水平切分出來的數(shù)據(jù)表也可以保存在一個MySQL節(jié)點上面。不是水平切分一定需要多個MySQL節(jié)點。為什么這么說呢?

許多人不知道MySQL自帶一種數(shù)據(jù)分區(qū)的技術,可以把一張表的數(shù)據(jù),按照特殊規(guī)則,切分存儲在不同的目錄下。如果我們給Linux主機掛載了多塊硬盤,我們完全可以利用MySQL分區(qū)技術,把一張表的數(shù)據(jù)切分存儲在多個硬盤上。這樣就由原來一塊硬盤有限的IO能力,升級成了多個磁盤增強型的IO。

水平切分的用途

水平切分可以把數(shù)據(jù)切分到多張數(shù)據(jù)表,可以起到縮表的作用。

但是也不是所有的數(shù)據(jù)表都要做水平切分。數(shù)據(jù)量較大的數(shù)據(jù)表才需要做數(shù)據(jù)切分,比如說電商系統(tǒng)中的,用戶表、商品表、產(chǎn)品表、地址表、訂單表等等。有些數(shù)據(jù)表就不需要切分,因為數(shù)據(jù)量不多,比如說品牌表、供貨商表、倉庫表,這些都是不需要切分的。

水平切分的缺點

不同數(shù)據(jù)表的切分規(guī)則并不一致,要根據(jù)實際業(yè)務來確定。所以我們在選擇數(shù)據(jù)庫中間件產(chǎn)品的時候,就要選擇切分規(guī)則豐富的產(chǎn)品。常見的數(shù)據(jù)庫中間件有:MyCat、Atlas、ProxySQL等等。有些人覺得MyCat是Java語言開發(fā)的,就懷疑MyCat運行效率。其實數(shù)據(jù)庫中間件的作用相當于SQL語句的路由器。你家路由器硬件配置不怎么高,但是不影響你享用百兆寬帶。MyCat也是一個道理,它僅僅是起到SQL語句轉(zhuǎn)發(fā)的作用,并不會實際執(zhí)行SQL語句。我推薦使用MyCat最主要的原因是它自帶了非常多的數(shù)據(jù)切分規(guī)則,我們可以按照主鍵求模切分數(shù)據(jù),可以按照主鍵范圍切分數(shù)據(jù),還可以按照日期切分數(shù)據(jù)等等。因此說,為了滿足業(yè)務的需要,MyCat目前來說算是非常不錯的中間件產(chǎn)品。

水平切分的另一個缺點就是擴容比較麻煩,日積月累,分片遲早有不夠用的時候。這時候不是首先選擇增加新的集群分片。因為一個MySQL分片,需要4~8個MySQL節(jié)點(最小規(guī)模),增加一個分片的投入成本是很高的。所以正確的做法是做冷熱數(shù)據(jù)分離,定期對分片中的數(shù)據(jù)歸檔。把過期的業(yè)務數(shù)據(jù),從分片中轉(zhuǎn)移到歸檔庫。目前來說數(shù)據(jù)壓縮比最高的MySQL引擎是TokuDB,而且?guī)е挛锏膶懭胨俣仁荌nnoDB引擎的6-14倍。用TokuDB作為歸檔數(shù)據(jù)庫最適合不過。

說說為什么要做數(shù)據(jù)庫拆分

4. 為什么先做水平切分,后作垂直切分?

隨著數(shù)據(jù)量的增加,最先應該做的是數(shù)據(jù)分片,利用多塊硬盤來增大數(shù)據(jù)IO能力和存儲空間,這么做的成本是最低的。幾塊硬盤的錢就能收獲不錯的IO性能。

進入到下一個階段,數(shù)據(jù)量繼續(xù)增大,這時候我們應該把數(shù)據(jù)切分到多個MySQL節(jié)點上,用MyCat管理數(shù)據(jù)切分。當然還要做數(shù)據(jù)的讀寫分離等等,這里不展開討論。在后臺做水平切分的同時,業(yè)務系統(tǒng)也可以引入負載均衡、分布式架構等等。理論上,使用了冷熱數(shù)據(jù)分離之后,水平切分這種方式可以繼續(xù)維持很長一段時間,數(shù)據(jù)量再大也不怕,定期歸檔就好了。

數(shù)據(jù)庫到了水平切分的階段,數(shù)據(jù)量的增加已經(jīng)不是更改架構設計的主要原因了。反而這個階段業(yè)務系統(tǒng)承受不住了,如果再不對系統(tǒng)做模塊拆分,業(yè)務系統(tǒng)也撐不下去了,所以按照模塊和業(yè)務,把一個系統(tǒng)拆分成若干子系統(tǒng)。若干子系統(tǒng)之間,數(shù)據(jù)相對獨立。比如淘寶不會跟支付支付寶分享全部數(shù)據(jù),共享同一套數(shù)據(jù)表,這也影響各自業(yè)務的發(fā)展。所以就要弄垂直切分了,把數(shù)據(jù)表歸類,拆分成若干個數(shù)據(jù)庫系統(tǒng)。

講到這里,你仔細想想。如果過早的對數(shù)據(jù)庫做了垂直切分,勢必要重新構建若干獨立的業(yè)務系統(tǒng),工作量太巨大。水平切分并不需要業(yè)務系統(tǒng)做大幅度的修改,因此說應該先從水平切分開始做。文章來源地址http://www.zghlxwxcb.cn/news/detail-710398.html

到了這里,關于說說為什么要做數(shù)據(jù)庫拆分的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 數(shù)據(jù)庫三大范式是什么,又為什么要反范式?

    數(shù)據(jù)庫三大范式是什么,又為什么要反范式?

    ??作者簡介,黑夜開發(fā)者,CSDN領軍人物,全棧領域優(yōu)質(zhì)創(chuàng)作者?,CSDN博客專家,阿里云社區(qū)專家博主,2023年6月CSDN上海賽道top4。 ??數(shù)年電商行業(yè)從業(yè)經(jīng)驗,歷任核心研發(fā)工程師,項目技術負責人。 ??本文已收錄于PHP專欄:MySQL的100個知識點。 ??歡迎 ??點贊?評論?收

    2024年02月11日
    瀏覽(28)
  • 公司為什么選擇云數(shù)據(jù)庫?它的魅力到底是什么!

    亞馬遜云科技提供了100余種產(chǎn)品免費套餐。其中,計算資源Amazon EC2首年12個月免費,750小時/月;存儲資源 Amazon S3 首年12個月免費,5GB標準存儲容量;數(shù)據(jù)庫資源 Amazon RDS 首年12個月免費,750小時;Amazon Dynamo DB 25GB存儲容量 永久免費。) 談到數(shù)據(jù)庫想必我們都不陌生,其中主流

    2024年02月04日
    瀏覽(24)
  • 什么是 Java 中的數(shù)據(jù)庫連接池?為什么使用連接池來管理數(shù)據(jù)庫連接?

    什么是 Java 中的數(shù)據(jù)庫連接池?為什么使用連接池來管理數(shù)據(jù)庫連接?

    數(shù)據(jù)庫連接池(database connection pool)是在 Java 中用于管理數(shù)據(jù)庫連接的一種技術。它的主要目的是提高數(shù)據(jù)庫連接的重用性和性能。在傳統(tǒng)的數(shù)據(jù)庫連接方式中,每次與數(shù)據(jù)庫建立連接時都需要進行一系列的網(wǎng)絡通信和身份驗證操作,這樣的開銷較大并且會影響應用程序的性

    2024年02月06日
    瀏覽(32)
  • Elasticsearch:什么是向量和向量存儲數(shù)據(jù)庫,我們?yōu)槭裁搓P心?

    Elasticsearch:什么是向量和向量存儲數(shù)據(jù)庫,我們?yōu)槭裁搓P心?

    Elasticsearch 從 7.3 版本開始支持向量搜索。從 8.0 開始支持帶有 HNSW 的 ANN 向量搜索。目前 Elasticsearch 已經(jīng)是全球下載量最多的向量數(shù)據(jù)庫。它允許使用密集向量和向量比較來搜索文檔。 向量搜索在人工智能和機器學習領域有許多重要的應用。 有效存儲和檢索向量的數(shù)據(jù)庫對于

    2024年02月08日
    瀏覽(30)
  • 為什么說PostgreSQL是面向?qū)ο蟮臄?shù)據(jù)庫?

    PostgreSQL 官方宣稱它是世界上最先進的開源對象-關系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS)。相信大家對于關系型數(shù)據(jù)庫并不陌生,它基于關系模型(由行和列組成的二維表),定義了完整性約束并且使用 SQL 作為操作語言。 不過今天我們的主題不是關系模型,而是 PostgreSQL 提供的面向

    2024年03月25日
    瀏覽(25)
  • 為什么數(shù)據(jù)庫要允許沒有主鍵的表存在

    在數(shù)據(jù)庫設計中,主鍵是一個關鍵概念,用于唯一標識數(shù)據(jù)庫表中的每一行數(shù)據(jù)。然而,有時候數(shù)據(jù)庫允許沒有主鍵的表存在的情況,這可能會引起一些爭議和疑問。本文將探討為什么數(shù)據(jù)庫允許沒有主鍵的表以及相關的考慮因素。 主鍵在數(shù)據(jù)庫中具有以下作用: 唯一標識

    2024年02月08日
    瀏覽(31)
  • mysql面試題30:什么是數(shù)據(jù)庫連接池、應用程序和數(shù)據(jù)庫建立連接的過程、為什么需要數(shù)據(jù)庫連接池、你知道哪些數(shù)據(jù)庫連接池

    mysql面試題30:什么是數(shù)據(jù)庫連接池、應用程序和數(shù)據(jù)庫建立連接的過程、為什么需要數(shù)據(jù)庫連接池、你知道哪些數(shù)據(jù)庫連接池

    該文章專注于面試,面試只要回答關鍵點即可,不需要對框架有非常深入的回答,如果你想應付面試,是足夠了,抓住關鍵點 數(shù)據(jù)庫連接池是一種用于管理和復用數(shù)據(jù)庫連接的技術。它是在應用程序和數(shù)據(jù)庫之間建立一組數(shù)據(jù)庫連接,并以池的形式存儲起來,每當應用程序需

    2024年02月07日
    瀏覽(29)
  • 數(shù)據(jù)庫——Redis 沒有使用多線程?為什么不使用多線程?

    數(shù)據(jù)庫——Redis 沒有使用多線程?為什么不使用多線程?

    雖然說 Redis 是單線程模型,但是, 實際上, Redis 在 4.0 之后的版本中就已經(jīng)加入了對多線程的支持。 不過,Redis 4.0 增加的多線程主要是針對一些大鍵值對的刪除操作的命令,使用這些命令就會使用主處理之外的其他線程來“異步處理”。 大體上來說, Redis 6.0 之前主要還是

    2024年02月11日
    瀏覽(29)
  • AIGC基礎:大型語言模型 (LLM) 為什么使用向量數(shù)據(jù)庫,嵌入(Embeddings)又是什么?

    嵌入: 它是指什么?嵌入是將數(shù)據(jù)(例如文本、圖像或代碼)轉(zhuǎn)換為高維向量的數(shù)值表示。這些向量捕捉了數(shù)據(jù)點之間的語義含義和關系。可以將其理解為將復雜數(shù)據(jù)翻譯成 LLM 可以理解的語言。 為什么有用?原始數(shù)據(jù)之間的相似性反映在高維空間中對應向量之間的距離上。

    2024年02月21日
    瀏覽(98)
  • 數(shù)據(jù)庫為什么使用B+樹而不是B樹做索引

    數(shù)據(jù)庫為什么使用B+樹而不是B樹做索引

    ??作者簡介,黑夜開發(fā)者,CSDN領軍人物,全棧領域優(yōu)質(zhì)創(chuàng)作者?,CSDN博客專家,阿里云社區(qū)專家博主,2023年6月CSDN上海賽道top4。 ??數(shù)年電商行業(yè)從業(yè)經(jīng)驗,歷任核心研發(fā)工程師,項目技術負責人。 ??本文已收錄于PHP專欄:MySQL的100個知識點。 ??歡迎 ??點贊?評論?收

    2024年02月10日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包