SaaS網際網路系統資料庫設計容易踩的坑

2021-10-04 05:56:19 字數 791 閱讀 6659

這幾年,各行各業的saas網際網路系統應用比較廣泛。2b應用的saas系統,基本上有如下特點:

在資料庫(mysql)設計之初,有2個坑比較容易踩到,將會給整個系統帶來麻煩,尤其後期的擴充套件和優化方面。

1.各個表沒有加company_id

各個表很有必要進行反正規化設計,都統一加上company_id,如:在電商訂單處理erp系統中,給訂單商品表也加上company_id

所有表加上company_id的好處:

2.垂直分表原則不合理

2b端的saas系統由於業務複雜,各類個性化需求高,這樣各個物件的屬性可能就會更多(比如: 訂單主物件可能包括賣方資訊、買方資訊、收貨人資訊、金融資訊、發票資訊、支付資訊、快遞資訊、揀貨資訊等等),所有的業務屬性都放在一張大表,也存在相應問題:

比較常見的一種垂直分表方法: 按業務類別分,比如: 訂單主物件, 把金融資訊、支付資訊、收貨人資訊分出去,建成1對1字表。這樣做優點是開發員好理解,缺點是查詢時又得inner join回來,這樣其實也就失去了垂直分表的最大意義(效能)。

從效能考慮(否則,後期很難優化),設計時垂直分表原則應該是:會作為查詢條件的盡可能放在主表。哪怕重要資訊但不作為查詢條件的都可以放子表,更不用說資料量大的屬性和不經常訪問到的屬性了。

在整個系統中,盡量不用到join操作,基於單錶的增刪改查操作,entity訪問(架構設計中如何做到呢? 且聽下回分解^_^)。

網際網路系統高併發設計目標

隨著網際網路 移動網際網路 物聯網的普及,對於有一定規模的系統來說高併發設計是勢在必行的,本文來總結一下高併發設計的目標,首先看一下高併發的定義。高併發是指系統在單位時間內處理更多的使用者併發請求,也就是承擔更大的流量,它是一切系統架構設計的背景和前提。每秒一次請求和每秒一萬次請求,兩種場景下分別做...

網際網路系統架構演變簡史

隨著網際網路的發展,應用的規模不斷擴大。需求的激增,帶來的是技術上的壓力。網際網路系統架構也因此也不斷的演進 公升級 迭代。從單一應用,到垂直拆分,到分布式服務,到soa,以及現在火熱的微服務架構等,還有在google帶領下來勢洶湧的service mesh。作為一名合格的架構師,有必要對架構的前世...

移動網際網路系統架構的特點

一 併發性 相對於有線網際網路,移動網際網路的網速還是窄帶時期,大部分的網路訪問都屬於慢速連線。乙個請求占用的網路連線的時間比有線網際網路乙個請求占用網路連線的時間要長。在同等的伺服器端qps下,併發連線數要比有線網際網路模式的要高。雖然web伺服器的併發連線數問題非常容易通過增加機器來進行擴充套件...