淺析SAAS資料模型設計(Oracle)

來源:互聯網
上載者:User

目前SAAS平台對於大家來說並不陌生,市場上真正屬於SAAS應用的並不是特別多,還有很大一部分是ASP的模式在運行,不管對於公司還是技術部門都是很大的挑戰。去年在做elearning項目的時候其實也就是一個ASP的模式擴充,ASP模式本身就會存在比較多的問題,雖然與傳統的項目型有一定的區別,但從技術角度來看,差別不太大。

最近要弄一個SAAS平台的東西,所以惡補了一下相關的知識,在這裡記錄一下我的實踐與總結。由於還沒有最終驗證也不太清楚效果如何。供大家討論,希望可以給我一些意見。

使用的資料庫Oracle10g,這篇只是從資料模型設計的角度來分析,使用的模式是:共用database獨立Schema。

Oracle中的實現方式:

1、共用一個資料庫執行個體,免費的使用Tenant_Free執行個體,收費的使用Tenant_VIP執行個體,平台的資料使用Tenant_Platform執行個體。

2、獨立Schema,通過建立每個Tenant的資料庫使用者來實現,每個使用者使用的資料表根據使用者匯入的資料進行初始化。配置資料自動產生的方式。通過測試一個執行個體產生幾萬個資料庫使用者是很正常的,如果按照一台普通的伺服器可以支撐1萬個Tenant的話,那發展到10萬使用者可能只需要10台伺服器的規模,是我可以接受的範圍。

3、原先考慮讓每個Tenant分配一個資料表空間,然後定義資料檔案的大小來實現對每個Tenant資料空間的限制,但經過測試發現Oracle中添加資料表空間是有限個數的,我測試的時候加到200個左右就報錯,提示超過資料表空間的最大數量。看來這種方法行不能。

如所示,所有的Tenant User都在使用者管理庫中進行管理,然後資料存取控制器通過Tenant User的資訊自動選擇Tenant對應的資料結構。可能我覺得這種模式是MVC的改進版本,即SAAS平台下要使用MVCD的模式(Model-View-Controller-DataAccess),資料管理層將模型層與控制層對資料管理方面的內容獨立出來,負責資料庫結構的管理、資料存取等功能。。

   

選擇的理由:

1、在oracle裡要使用獨立的database對於伺服器的記憶體要求實在太高了,一個執行個體分配的資源如果是200M的話,4G的伺服器只能支援20個租戶,這個成本我想沒有什麼人可以承受,所以第一種最簡單的方式我不採用。

2、選擇獨立schema是非常重要的,對於程式與效能都會有很大的提升,而且業務要求所有企業相關的資料表欄位都允許Tenant使用者自訂,所以我覺得是必要條件,所以只能選擇第二種模式。如果使用預留欄位或者通過欄位擴充表來儲存存在比較多的問題,比如檢索速度、欄位的限制、資料冗餘等缺點。而且對於使用者來說不太直觀。

3、從維護管理的角度考慮,備份的時候可以對每個資料庫使用者的資料進行單獨的備份,有利於對無效使用者的資料刪除與恢複的操作。同時也保證了使用者資料的安全性。

   

對SAAS程式的要求:

1、要求可以通過配置自動實現Tenant Schema中資料的CRUD操作。

2、資料報表及相關的查詢都要允許自訂,需要提供相關的功能。

3、API介面服務需要提供配置功能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.