新聞中心

在龍崗等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營(yíng)銷(xiāo)型網(wǎng)站,外貿(mào)網(wǎng)站制作,龍崗網(wǎng)站建設(shè)費(fèi)用合理。
數(shù)據(jù)模型設(shè)計(jì)
MongoDB 提供了兩種數(shù)據(jù)模型,分別是嵌入式數(shù)據(jù)模型和規(guī)范化數(shù)據(jù)模型,您可以根據(jù)需要使用其中的任何一種。
在 MongoDB 中模型設(shè)計(jì)需要注意以下幾點(diǎn):
- 要根據(jù)具體的項(xiàng)目需求來(lái)選擇合適的設(shè)計(jì)模式;
- 如果是要同時(shí)使用的數(shù)據(jù),您可以將它們合并到一個(gè)文檔中,否則可以選擇將它們分成若干個(gè)文檔;
- 可以有適當(dāng)?shù)臄?shù)據(jù)冗余,因?yàn)榕c計(jì)算時(shí)間相比,磁盤(pán)空間更便宜;
- 針對(duì)最常用的用例優(yōu)化您的模型;
- 寫(xiě)入時(shí)執(zhí)行連接,而不是讀取時(shí)執(zhí)行連接;
- 在模式中執(zhí)行復(fù)雜聚合。
嵌入式數(shù)據(jù)模型
嵌入式數(shù)據(jù)模型也稱為非規(guī)范化數(shù)據(jù)模型,在該模型中您可以將所有相關(guān)的數(shù)據(jù)存儲(chǔ)到一個(gè)文檔中,例如我們?cè)谌齻€(gè)不同的文檔中分別存儲(chǔ)了一個(gè)員工的個(gè)人信息、聯(lián)系方式和地址等信息,您還可以將這些信息整合到一個(gè)文檔中,如下所示:
{
_id: ObjectId("601f4be6e646844cd045c8a4"),
Emp_ID: "10025AE336",
Personal_details:{
First_Name: "Radhika",
Last_Name: "Sharma",
Date_Of_Birth: "1995-09-26"
},
Contact: {
e-mail: "[email protected]",
phone: "9848022338"
},
Address: {
city: "Hyderabad",
Area: "Madapur",
State: "Telangana"
}
}
規(guī)范化數(shù)據(jù)模型
在規(guī)范化數(shù)據(jù)模型中,您可以通過(guò)引用來(lái)將原始文檔與子文檔關(guān)聯(lián)起來(lái),例如您可以將上面的文檔信息以規(guī)范化數(shù)據(jù)模型重寫(xiě)為以下幾個(gè)文檔:
Employee:
{
_id: ObjectId("601f4be6e646844cd045c8a4"),
Emp_ID: "10025AE336"
}
Personal_details:
{
_id: ObjectId("601f50bae646844cd045c8a5"),
empDocID: ObjectId("601f4be6e646844cd045c8a4"),
First_Name: "Radhika",
Last_Name: "Sharma",
Date_Of_Birth: "1995-09-26"
}
Contact:
{
_id: ObjectId("601f50bae646844cd045c8a6"),
empDocID: ObjectId("601f4be6e646844cd045c8a4"),
e-mail: "[email protected]",
phone: "9848022338"
}
Address:
{
_id: ObjectId("601f50bae646844cd045c8a7"),
empDocID: ObjectId("601f4be6e646844cd045c8a4"),
city: "Hyderabad",
Area: "Madapur",
State: "Telangana"
}
【示例】假設(shè)我們需要為某個(gè)博客或網(wǎng)站進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),網(wǎng)站的具體要求如下:
- 每個(gè)帖子都有唯一的標(biāo)題、描述和網(wǎng)址;
- 每個(gè)帖子可以有一個(gè)或多個(gè)標(biāo)簽;
- 每個(gè)帖子都有其發(fā)布者的名字和喜歡的人數(shù);
- 每個(gè)帖子都可以有零個(gè)或多個(gè)評(píng)論,評(píng)論中包括他們的名字、信息、數(shù)據(jù)、時(shí)間和喜好。
在使用關(guān)系型數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)上述需求時(shí)至少需要?jiǎng)?chuàng)建三個(gè)表,如下圖所示:
圖:關(guān)系型數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)
若使用 MongoDB 來(lái)實(shí)現(xiàn)上述需求,可以使用一個(gè)集合來(lái)實(shí)現(xiàn),其結(jié)構(gòu)如下:
{
_id: POST_ID,
title: TITLE_OF_POST,
description: POST_DESCRIPTION,
by: POST_BY,
url: URL_OF_POST,
tags: [TAG1, TAG2, TAG3],
likes: TOTAL_LIKES,
comments: [
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
},
{
user:'COMMENT_BY',
message: TEXT,
dateCreated: DATE_TIME,
like: LIKES
}
]
}
當(dāng)前文章:MongoDB數(shù)據(jù)模型
鏈接地址:http://m.fisionsoft.com.cn/article/dhhjepc.html


咨詢
建站咨詢
