識別應用程式的存取模式
當您設計 NoSQL 資料庫的資料模型時,目標是要確保資料的作業會以最少的要求完成。 若要做到這一點,我們需要了解資料之間的關聯性,以及應用程式存取資料的方式。 這些存取模式很重要,因為它們與這些關聯性一起決定如何將各種實體的屬性分門別類,並儲存在 Azure Cosmos DB for NoSQL 容器內的文件中。
在 Azure Cosmos DB for NoSQL 中,文件稱為項目,容器則經常是集合的同義詞。
識別客戶實體的存取模式
讓我們從電子商務資料庫中的客戶實體開始。 下圖顯示三個實體,以及它們之間的關聯性。 這三個實體為 Customer、CustomerAddress 和 CustomerPassword。 Customer 實體與 CustomerAddress有一對多的關聯性。 Customer 與 CustomerPassword 有 1 對 1 的關聯性。
在我們的應用程式中,我們會對客戶實體執行三項作業:
- 建立客戶:當新的使用者第一次造訪電子商務網站時,系統將會建立新的客戶。
- 更新客戶:當現有的使用者更新其設定檔資訊時,系統將會更新其客戶記錄。
- 取出客戶:當現有的使用者造訪網站時,他們會以其密碼登入。 在該相同的工作階段期間,他們需要存取其他客戶資料 (例如,地址) 來購買新項目。
針對其中每一個作業,我們同時需要此資料全部。 如果已模型化為個別文件,則會需要多次往返伺服器,才能建立、更新及擷取客戶資料。 這效率不佳。
將客戶實體模型化
Azure Cosmos DB 會將資料儲存為 JSON,因此我們可以將 Customer 與 CustomerAddress 之間的 1 對多關聯性模型化,並將客戶地址資料內嵌為陣列。 針對 Customer 與 CustomerPassword之間的 1 對 1 關聯性,我們可以將其內嵌為新單一客戶文件中的物件。 然後,電子商務應用程式可以在單一要求中建立、編輯或取出客戶資料。
下圖顯示客戶實體看起來的樣子。