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