[Cloud Computing]Force.com的Multi-Tenancy

[Cloud Computing]Force.com的Multi-Tenancy

 image
上禮拜寫了一篇與Multi-Tenancy相關的文章:
[Cloud Computing]何謂Multi-Tenancy(多租戶)?
今天把Force.com的Multi-tenant文件看了一下,文件位置在這邊:The Force.com Multitenant Architecture

看完後覺得Force.com的架構算是蠻完整的,也幫我釐清了一些問題,Force.com也不愧在這塊領域耕耘了這麼久,架構上感覺還不錯,下面簡單介紹一下上面那份文件中的內容:(但文件沒有把一些細節講清楚,部分是我自己用猜測的。)

Metadata-Driven Architectures
image 
Force.com的架構中,非常強調Metadata(描述資料的資料)的概念,因為不管是設定資料、Table等內容都被視為是一種Metadata,而Metadata又分成兩種:Tenant-SpecificCommon,分別用來代表是特定租戶的Metadata或者是公用的Metadata,而此架構中的核心服務就是Runtime Engine,用來銜接Application與這些Metadata,算是控制了Application可以取到、該取到的資料內容。


Platform Architecture Overview
image 

這一張是Force.com的概要架構圖,主要的功能項為Shared Database:儲存資料用,包含以下幾部份:

image

    • Metadata Table:因為Force.com不會對每支維護類應用程式提供一個專屬的實體Table,而是透過Virtual Table的方式來將使用者要存取的資料,透過Metadata Tables來獲得,因此會去設定所需要的Virtual Table內容與每個欄位的屬性。
    • Data Table:存放結構化資料(Structured data),Force.com提供了一種特殊的資料結構,存放Data資料的欄位並沒有特別指定型態,只要是結構化資料如char、datetime、numeric等都可以存放進去,所以我們可以看到Table中會有這樣的資料內容,Val0中放了各種型態的資料,另外這個Table每一筆資料的欄位數目也不會一樣,這個概念有點類似Google的BigTable,這類的彈性欄位(Flex field)最多支援到501個欄位。
      image
    • Specialized Pivot Table:多用來處理各種索引鍵,包含Unique跟Non-unique跟其他類型的index,另外對於非結構化(Unstructured data)或者大量的資料型態如image、clob呢?Force.com提供了CLOB的型態來儲存,但CLOB型態的資料是採用外部join的方式來與本來的資料列關聯。

上面架構圖中而外提到的Metadata cache的用途主要在於快取Metadata的設定,因為Metadata是整個Force.com運作的關鍵內容,讀取上會非常的頻繁,因此平台本身也提供了cache metadata的功能來提高存取效率。

以上大致說明了一下關於Force.com的資料存取架構,對於Application來說,並不會直接操作到Metadata等Table,而是操作Data Objects,Data Objects會在runtime時被產生出來,透過此Objects來操作實際的Table,而如何做到這一點呢?我們可以看一下資料庫的設計:

在資料庫中有幾個Table分別用來記錄可以使用的Objects、這個Objects中的欄位與屬性還有關聯到的資料,
image

我們舉個例子來說:
Objects就像是定義了一串SQL指令,例如:Select Field1, Field2, Field3 from Tables
Fields就定義了Field1, Field2, Field3的細節,如欄位名稱,對應到的ObjID跟Datatype等細節
Data就是實際放了Field1, Field2, Field3資料的Table,分別放到Value0~Value2欄位中

Objects透過ObjID+OrgID(用來識別不同的tenancy)找出對應的Fields設定,然後到Data中去查詢相關資料,劇情大概就這樣串起來了。

在Force.com的Multi-Tenancy架構中,也提供了豐富的PaaS架構,讓租戶可以在Force.com這個平台上客製自己的應用程式,更提供了良好的開發工具,可以透過簡單的設定功能就建立一支程式(類似Code Generator),也提供了WorkFlow的功能,讓開發者可以在各功能流程中插入想要進行的額外工作,更強悍的是當發生錯誤時,還有自動Rollback的功能(針對資料,但這部分我有疑問)。

Force.com除了可以讓租戶自行客製程式外,也提供了類似AppStore的線上商店AppExchange,讓你可以隨選(On-Demand)你想要的功能,這算是目前看到最完整的SaaS+PaaS解決方案了吧。

有沒有真的這麼好用,就等我試用看看吧。

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。