Embedded ใน MongoDB

Natthakarn Pruksapong
Touch Technologies
Published in
2 min readJan 22, 2019

Embedded เป็นการเก็บข้อมูลที่สัมพันธ์กัน เพราะ Document Oriented Database เปิดให้สามารถบันทึกข้อมูลที่มีโครงสร้างแบบไหนก็ได้ แม้กระทั้ง Array หรือ Dictionary โดยที่เราไม่ต้อง join ให้ยุ่งยาก

การ insert ข้อมูลแบบทั่วไป

Out put JSON file

//OUT PUT JSON FILE{
"_id" : ObjectId("5c46ebcbc341550f9c03c264"),
"name" : "eiei",
"last_name" : "addembedde"
}
{
"_id" : ObjectId("5c46ebcbc341550f9c03c264"),
"name" : "eiei",
"last_name" : "addembedde"
}
{
"_id" : ObjectId("5c46ec28c341550f9c03c266"),
"name" : "eiei",
"address" : "bangkok",
"district" : "jj",
"post" : 11520
},

การ Embedded ข้อมูล

โดยเราจะทดลองเขียนคำสั่งใน NoSQL Booster for MongoDB

NoSQL Booster for MongoDB

db.users.insert([
{name:"eiei" , last_name:"addembedde",
address:[
{city:"non",district:"thasai",post:11000},
{city:"bangkok",district:"jj",post:11520}
]
}
])

Out put JSON file

//OUT PUT JSON FILE{
"_id" : ObjectId("5c46ea31c341550f9c03c263"),
"name" : "eiei",
"last_name" : "addembedde",
"address" : [
{
"city" : "non",
"district" : "thasai",
"post" : 11000
},
{
"city" : "bangkok",
"district" : "jj",
"post" : 11520
}
]
}

การ Embedded ซ้อน Embedded

NoSQL Booster for MongoDB

db.users.insert([
{name:"eiei" , last_name:"addembedde",
address:[
{city:"non",district:[
{thasai:11000,muang:11020},
{packkad:1152,bangkru:2200}
]
},
{city:"bangkok",district:[
{aaaaa:55555,jj:6666},
{bbbb:1111,cccc:2222}
]
}
]
}
])

Out put JSON file

//OUT PUT JSON FILE{
"_id" : ObjectId("5c46e883c341550f9c03c262"),
"name" : "eiei",
"last_name" : "addembedde",
"address" : [
{
"city" : "non",
"district" : [
{
"thasai" : 11000,
"muang" : 11020
},
{
"packkad" : 1152,
"bangkru" : 2200
}
]
},
{
"city" : "bangkok",
"district" : [
{
"aaaaa" : 55555,
"jj" : 6666
},
{
"bbbb" : 1111,
"cccc" : 2222
}
]
}
]
}

จะเห็นได้ว่า Embedded คือการ insert ข้อมูลที่มีความสัมพันธ์แบบ One-to-Many ทำให้อ่านข้อมูลได้เร็วกว่าเนื่องจากมีการจัดเรียงข้อมูลที่มีความสัมพันธ์กันให้อยู่ด้วยกัน ข้อเสียคือ การทำ Embedded นั้นทำให้มีข้อมูลที่มาก อาจทำให้ DB ล่มได้ง่าย เพราะขนาดข้อมูลในแต่ละ document มีผลกระทบสำคัญมากๆกับ write performance และ data fragmentation ใน MongoDB

Touch Technologies

“ เราไม่ได้ถูกต้องที่สุด แต่เราแสดงสิ่งที่เราทำ ”

--

--