iT邦幫忙

2023 iThome 鐵人賽

DAY 18
1
IT管理

從 IT 的視角觀看公司內部的系統管理及設計系列 第 18

Day 18 : 資料庫的 Multitenancy 設計範例 - 以 Acumatica ERP 為例

  • 分享至 

  • xImage
  •  

資料庫的 Multitenancy 設計範例 - 以 Acumatica ERP 為例

今天我們以 Acumatica ERP 的資料庫設計來切入,一起來看看這個 ERP 系統是如何達成 Multitenancy,讓各個子系統功能都可以分開來,個別獨立不打架吧!

Acumatica ERP 的系統架構與設計

我們在 Day 10 : ERP 系統的客製化開發與管理 中有提到,ERP 系統的架構大致上會是這樣作切分:
https://ithelp.ithome.com.tw/upload/images/20231003/20162545zl4qEIoebC.png

Acumatica ERP 的架構設計也是差不多,可以簡單把使用者使用的流程且分為這個流程圖:
https://ithelp.ithome.com.tw/upload/images/20231003/20162545PVw6gmTlPV.png
(截於 Acumatica Developers Blog)

由左至右的步驟是:(1) 使用者藉由 Client 端發出請求後,經由 (2) HTTPS 協定來向 (3) IIS 網頁伺服器發出請求,進入 Acumatica ERP 系統內的三層架構,從 (4) 表現層、(5) 商業邏輯層 和 (6) 資料權限層,最後到 (7) 資料庫本體,拿到資料後就回傳給使用者。

而 Acumatica 內部的三層程式架構像是這樣:

https://ithelp.ithome.com.tw/upload/images/20231003/201625453j4D9g3V9S.png
(截於 Acumatica Developers Blog)

將整個 ERP 系統切成三層的架構,分為表現層 (Presentation Layer)、商業邏輯層 (Business Logic Layer) 和資料權限層 (Data Access Layer),其實和昨天的文章所介紹的 SAP ERP 架構大同小異。

資料表設計範例 - 以 Sales Orders 為例

我們在 Day 6 : 從網拍下訂單到出貨 - ERP 內的訂單 (Sales Orders) 中有介紹過銷售訂單的功能,一起來看看在 Acumatica ERP 中這個 Sales Orders 是怎麼設計的吧!

在 Acumatica 中,Sales Orders 畫面中分成上下兩層,我們可以稱為 FormView (上方的 form) 和 GridView (下方的 grid)。

https://ithelp.ithome.com.tw/upload/images/20231003/20162545Y0TgvMc6e9.png

FormView 裡最重要的資料是 OrderType 和 OrderNbr,分別代表了這個銷售訂單的類型 (可能是退換貨或是購買) 以及對應的訂單編號,除此之外還有對應的購買客戶、地點、購買日期等等的銷售訂單一定會有的資料。

打開直接打開資料庫設計看看長什麼樣子:

https://ithelp.ithome.com.tw/upload/images/20231003/20162545sZrkNABK1v.png

發現除了重要的訂單類型和訂單號碼之外,還有一個最重要的主鍵 CompanyID

https://ithelp.ithome.com.tw/upload/images/20231003/20162545gSPlxMmYg6.png
(不同 CompanyID 中存放的銷售訂單資料)

為何需要 CompanyID 呢?

因為在 Acumatica 裡,可以登入不同的子公司或國際公司,Acumatica 裡主要操控資料庫的 Data Access Layer,也就是官方自己設計的 DAC,就是使用這個 CompanyID 來切割隔離不同公司的資料。
如果使用者在其中的一家公司中,所有抓取即顯示的資料都會以這個 CompanyID 來當作區隔,顯示出來的資料就不會與其他公司的資料參在一起。 (例如 CompanyID=2)
如此一來,就可以區隔好每家公司不同的銷售訂單,做好 Multitenancy 而不會混用,讓公司可以更好的管理不同子公司間的銷售訂單。

而 GridView 裡就是存放這張銷售訂單的商品,這張範例中的商品是 NZXT H510,它很帥,有興趣可以去買。


Reference

Acumatica Developers Blog - Acumatica 6-tiers Web Architecture
Acumatica - Help and Training Examples on Github


上一篇
Day 17 : ERP 的歷史與 Multitenancy 的應用實例 - 以 SAP 為例
下一篇
Day 19 : 微軟轉戰 ERP 系統?Dynamics 365 介紹
系列文
從 IT 的視角觀看公司內部的系統管理及設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言