SaaS可配置化:數(shù)據(jù)可配置化

11 評(píng)論 24324 瀏覽 116 收藏 5 分鐘

針對(duì)SaaS多租戶模型,本文分析了如何實(shí)現(xiàn)拓展數(shù)據(jù)的可配置。

針對(duì)SaaS多租戶模型,在實(shí)際運(yùn)行過(guò)程中會(huì)發(fā)現(xiàn)不同的租戶需要保存不同的特殊字段。

例如,就拿CRM系統(tǒng)而言,A租戶希望能保存客戶紀(jì)念日、來(lái)源等,而這些數(shù)據(jù)對(duì)應(yīng)B租戶而言并不需要。

這種系統(tǒng)實(shí)現(xiàn)過(guò)濾中并不存在,而用戶又需要被保存的數(shù)據(jù),稱為拓展數(shù)據(jù)。顯然,不同的客戶需要保存的拓展數(shù)據(jù)可能是完全不同的。

對(duì)拓展數(shù)據(jù)的處理,在傳統(tǒng)模式中是完全不存在問題的,因?yàn)閭鹘y(tǒng)軟件模式一個(gè)客戶對(duì)應(yīng)一套軟件及數(shù)據(jù)庫(kù)實(shí)例,系統(tǒng)可是實(shí)現(xiàn)根據(jù)客戶的要求定制化數(shù)據(jù)庫(kù)實(shí)例。

但在SaaS模式,多個(gè)客戶對(duì)應(yīng)同一套實(shí)例,如依舊采用傳統(tǒng)定制化模式,數(shù)據(jù)庫(kù)必將產(chǎn)生大量多余的字段,進(jìn)而影響數(shù)據(jù)的性能。

針對(duì)SaaS多租戶模型,對(duì)于拓展數(shù)據(jù),最常見的解決方案就是實(shí)現(xiàn)拓展數(shù)據(jù)的可配置,包含如下三種主流的解決方案。

一、定制字段

該解決方案更多還是在傳統(tǒng)軟件中被采用,根據(jù)用戶的實(shí)際需求,在數(shù)據(jù)表中增加相應(yīng)的字段。 如系統(tǒng)只有一個(gè)用戶,那么定制字段可以完美的滿足用戶及技術(shù)需要。

但針對(duì)SaaS對(duì)租戶模型,如還為每一個(gè)客戶都添加字段,那么勢(shì)必會(huì)使表中字段多如牛毛,而且隨著定制字段的增多,將產(chǎn)生大量無(wú)意義字段,嚴(yán)重影響數(shù)據(jù)庫(kù)性能。

二、預(yù)分配字段

預(yù)分配的實(shí)現(xiàn)邏輯就是在設(shè)計(jì)數(shù)據(jù)表結(jié)構(gòu)時(shí),預(yù)留設(shè)計(jì)多幾個(gè)無(wú)意義的字段,根據(jù)實(shí)際運(yùn)行過(guò)程所需的業(yè)務(wù)要求,為對(duì)應(yīng)的字段賦予實(shí)際的業(yè)務(wù)意義。

例如A客戶需要額外留存訂單號(hào),那么預(yù)分配A字段的對(duì)于A客戶而言保存的就是訂單號(hào),B客戶需要額外需要座機(jī)號(hào),那么預(yù)分配A字段對(duì)應(yīng)B客戶而言就是座機(jī)號(hào)。

預(yù)分配字段在一定程度滿足租戶對(duì)于拓展數(shù)據(jù)的需求,但并不是完美的解決方案,依舊存在如下不足點(diǎn):

  • 可拓展性差:預(yù)分配字段數(shù)無(wú)法實(shí)時(shí)把控,預(yù)分配字段解決模式需要在數(shù)據(jù)庫(kù)設(shè)計(jì)前期就設(shè)定好預(yù)留的字段個(gè)數(shù),預(yù)留多了容易造成浪費(fèi),預(yù)留少,不夠拓展使用。
  • 數(shù)據(jù)類型難把控,對(duì)于預(yù)分配位置,可能需要存儲(chǔ)字符類型,也可能需要存儲(chǔ)日期類型,具體的類型無(wú)法把控。當(dāng)然,也可以統(tǒng)一存成字符類型,在根據(jù)實(shí)際的業(yè)務(wù)要求,在代碼邏輯中實(shí)現(xiàn)類型的轉(zhuǎn)化。

三、名稱值對(duì)

引入配置元數(shù)據(jù)表的概率,數(shù)據(jù)庫(kù)表分為拓展數(shù)據(jù)表、業(yè)務(wù)數(shù)據(jù)表、配置元數(shù)據(jù)表。

業(yè)務(wù)數(shù)據(jù)表負(fù)責(zé)存儲(chǔ)統(tǒng)一 的業(yè)務(wù)邏輯數(shù)據(jù),拓展數(shù)據(jù)表存儲(chǔ)根據(jù)租戶需求而新增的拓展數(shù)據(jù),而拓展數(shù)據(jù)表與業(yè)務(wù)數(shù)據(jù)表通過(guò)元數(shù)據(jù)配置表關(guān)聯(lián)。引入元數(shù)據(jù)噢誒子表,實(shí)現(xiàn)拓展數(shù)據(jù)的橫向拓展,而且完全由租戶業(yè)務(wù)驅(qū)動(dòng),不造成數(shù)據(jù)的浪費(fèi)及混亂。

誠(chéng)然,不管是定制字段,預(yù)分配字段還是名稱值對(duì),所針對(duì)的都是數(shù)據(jù)庫(kù)的設(shè)計(jì)。

本文主要還是介紹產(chǎn)品人員怎樣構(gòu)建SaaS應(yīng)用,對(duì)于涉及偏向技術(shù)性的問題,這里只大致介紹一下,有興趣的小伙伴可以自行查找相關(guān)資料就行了解。

 

本文由 @老鬼 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自 Unsplash ,基于 CC0 協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 如果能運(yùn)用在低代碼平臺(tái),那是不是可以解決定制字段的問題

    來(lái)自安徽 回復(fù)
  2. 贊! 名值對(duì)看似靈活 也固然有其不足。尤其進(jìn)行一些統(tǒng)計(jì)查詢時(shí)

    來(lái)自天津 回復(fù)
  3. 您好,非常感謝!我們現(xiàn)在就是采用的這個(gè)方式,只是評(píng)審的時(shí)候,每個(gè)租戶的表單字段不一致,前端需要寫N個(gè)頁(yè)面,這個(gè)有什么解決辦法嗎

    回復(fù)
    1. 把不同租戶的表單進(jìn)行抽象,進(jìn)行組件化和模版化,再根據(jù)不同租戶單獨(dú)配置不同的表單樣式

      來(lái)自廣東 回復(fù)
  4. 點(diǎn)贊點(diǎn)贊!
    有接觸過(guò)預(yù)分配字段,當(dāng)時(shí)感覺有點(diǎn)蠢…但是沒想到‘名稱值對(duì)’這種方案…

    來(lái)自江蘇 回復(fù)
  5. 有沒有第三方的專門做數(shù)據(jù)和權(quán)限配置的服務(wù)商?

    來(lái)自上海 回復(fù)
    1. 同求

      來(lái)自北京 回復(fù)
  6. 最近碰到的問題是怎么實(shí)現(xiàn)后臺(tái)可配置點(diǎn)和后臺(tái)接口的靈活標(biāo)準(zhǔn)

    來(lái)自浙江 回復(fù)
  7. 文章所做的小結(jié)非常有閱讀價(jià)值,希望作者能就Saas系列寫出更多文章

    來(lái)自浙江 回復(fù)
  8. 期待作者詳細(xì)說(shuō)下第三種方案-名稱值對(duì),目前SaaS產(chǎn)品中做的最火熱的應(yīng)該就是美國(guó)的salesforce CRM產(chǎn)品了,他們是否也是通過(guò)該方案呢

    來(lái)自上海 回復(fù)
  9. 意猶未盡,剛好最近思考后臺(tái)如何在靈活性下保證前臺(tái)的用戶體驗(yàn)。

    回復(fù)