คำถามสัมภาษณ์ MongoDB ยอดนิยม

Khatham Samphas N Mongodb Yxd Niym



MongoDB เป็นระบบจัดการฐานข้อมูล NoSQL แบบโอเพ่นซอร์ส ไม่เพียงให้ความสะดวกในการจัดเก็บข้อมูลที่ไม่มีโครงสร้างเท่านั้น แต่ยังจัดการได้อีกด้วย เมื่อใดก็ตามที่เกิดคำถามเกี่ยวกับวิธีการจัดการข้อมูลที่ไม่มีโครงสร้างหลายล้านแถว ขอแนะนำให้ใช้ MongoDB

เวอร์ชันแรกของ MongoDB เปิดตัวในเดือนกุมภาพันธ์ 2550 โดย 10 เจน บริษัทซอฟต์แวร์ ต่อมาในปี 2556 10gen ได้เปลี่ยนชื่อบริษัทเป็น MongoDB Inc.

MongoDB เป็นฐานข้อมูล NoSQL ที่ใช้ในการจัดเก็บข้อมูลในรูปแบบเอกสาร JSON เนื่องจากคุณลักษณะนี้ ข้อมูลที่ไม่มีโครงสร้างจำนวนมหาศาลสามารถจัดเก็บและจัดการได้อย่างง่ายดายใน MongoDB ชุดของเอกสารเหล่านี้ที่มีข้อมูลเรียกว่าคอลเลกชัน และคอลเลกชันเหล่านี้คล้ายกับตารางที่ใช้ในฐานข้อมูลเชิงสัมพันธ์เพื่อจัดเก็บข้อมูล







มีเหตุผลหลายประการที่ทำให้ MongoDB ได้รับความนิยมเมื่อเทียบกับฐานข้อมูลเชิงสัมพันธ์และฐานข้อมูล NoSQL อื่นๆ เหตุผลส่วนหนึ่งได้แก่:



  • นักพัฒนาสามารถกำหนดโครงสร้างตามคู่คีย์-ค่า
  • เช่นเดียวกับฐานข้อมูลเชิงสัมพันธ์ แถวและคอลัมน์ไม่จำเป็นสำหรับข้อมูล
  • ลำดับชั้นของโครงสร้าง MongoDB ช่วยให้สามารถจัดเก็บข้อมูลในรูปแบบอาร์เรย์และยังสามารถจัดเก็บข้อมูลที่ซับซ้อนได้
  • ทำให้นักพัฒนาสามารถจัดการฐานข้อมูลได้อย่างง่ายดายเนื่องจากรองรับภาษาโปรแกรมหลายภาษา
  • นอกจากนี้ยังสนับสนุนคุณลักษณะของ gridFS และการจำลองแบบ

เนื่องจากความนิยม จึงมีโอกาสในการทำงานมากมายสำหรับนักพัฒนาที่ทำงานกับ MongoDB บทความนี้เกี่ยวข้องกับคำถามที่สำคัญที่สุดและมักถูกถามโดยองค์กรชั้นนำหลายแห่ง



คำถามสัมภาษณ์ MongoDB

คำถามที่พบบ่อยที่สุดแบ่งออกเป็นสามระดับ: ระดับพื้นฐาน ระดับกลาง และระดับผู้เชี่ยวชาญ





ระดับพื้นฐาน

คำถามเหล่านี้เกี่ยวข้องกับแนวคิดพื้นฐานและคำศัพท์เฉพาะของ MongoDB และในการสัมภาษณ์ ผู้สมัครทุกคนควรตอบคำถามเหล่านี้ในการสัมภาษณ์

คำถามที่ 1: คุณรู้อะไรเกี่ยวกับฐานข้อมูล NoSQL และประเภทของฐานข้อมูลบ้าง
ฐานข้อมูล NoSQL คือฐานข้อมูลที่ไม่เก็บข้อมูลในตารางเหมือนฐานข้อมูล SQL แทนที่จะเก็บข้อมูลในรูปแบบอื่น เช่น เอกสารและรูปแบบคีย์-ค่า



ฐานข้อมูล NoSQL มีสี่ประเภทที่สำคัญ:

  • ฐานข้อมูลเอกสาร: ฐานข้อมูลเหล่านี้จัดเก็บข้อมูลในรูปแบบของเอกสาร JSON เอกสารเหล่านี้รวมกันเป็นคอลเล็กชันฟอร์ม และคอลเล็กชันเหล่านี้รวมกันเป็นฐานข้อมูล
  • ฐานข้อมูลคีย์-ค่า: ฐานข้อมูลเหล่านี้จะเก็บข้อมูลในรูปแบบของคีย์-ค่า ตัวอย่างเช่น “ชื่อ = จอห์น” ในตัวอย่างนี้ “ชื่อ” คือคีย์ และ “จอห์น” คือค่า
  • ร้านค้าแบบกว้าง: ฐานข้อมูลเหล่านี้จัดเก็บข้อมูลในรูปแบบของตารางไดนามิก ซึ่งแตกต่างจากฐานข้อมูลเชิงสัมพันธ์ ตารางเหล่านี้ไม่มีโครงสร้าง
  • ฐานข้อมูลกราฟ: ฐานข้อมูลเหล่านี้ประกอบด้วยขอบและโหนด โหนดใช้เพื่อเก็บข้อมูลในขณะที่ขอบใช้เพื่อแสดงความสัมพันธ์ระหว่างโหนด

คำถามที่ 2: MongoDB ฐานข้อมูล NoSQL ประเภทใด
ฐานข้อมูล MongoDB เป็นของฐานข้อมูลเอกสาร ซึ่งหมายความว่าจะเก็บข้อมูลตามเอกสาร JSON ไม่เป็นไปตามสคีมาใด ๆ และอนุญาตให้แทรกข้อมูลประเภทใดก็ได้ในนั้น

คำถามที่ 3: ฐานข้อมูล MongoDB และ SQL อันไหนดีกว่ากัน?
MongoDB ดีกว่าฐานข้อมูล SQL ในลักษณะที่สามารถจัดการข้อมูลที่ไม่มีโครงสร้างได้ ในขณะที่ฐานข้อมูล SQL จัดการเฉพาะข้อมูลที่มีโครงสร้างและจัดเก็บโดยไม่มีข้อจำกัดใด ๆ ซึ่งแตกต่างจากฐานข้อมูลเชิงสัมพันธ์ เนื่องจากคุณสมบัติของ schemaless การสืบค้นข้อมูลจึงถูกจัดการอย่างรวดเร็วใน MongoDB เมื่อเทียบกับฐานข้อมูล SQL เนื่องจากข้อมูลไม่ได้อยู่ในรูปของตารางและในหลายตารางแทนที่จะเป็นแบบนั้น ข้อมูลจะถูกวางไว้ที่เดียวกัน ดังนั้นมันจึงเป็น ง่ายสำหรับคิวรีในการเข้าถึงข้อมูล และ MongoDB อนุญาตให้แมปข้อมูลในภาษาโปรแกรมอื่น ๆ ซึ่งช่วยให้ผู้ใช้ทำงานบนข้อมูลนั้นได้ง่าย

คำถามที่ 4: เอกสารและคอลเลกชันใน MongoDB คืออะไร
ข้อมูลจะถูกจัดเก็บไว้ใน MongoDB ในรูปแบบของเอกสาร จากนั้นเอกสารเหล่านี้จะรวมกันเป็นคอลเล็กชัน และคอลเล็กชันจำนวนหนึ่งจะรวมกันเป็นฐานข้อมูล เพื่อให้เข้าใจสิ่งนี้ ลองพิจารณาตัวอย่างฐานข้อมูลของ school_data ฐานข้อมูลของ school_data มีคอลเล็กชันที่มี class_data อยู่ในนั้น และยิ่งไปกว่านั้น เอกสารเหล่านี้ (classes_data) มีข้อมูลของนักเรียน (student_data) ในรูปแบบของเอกสาร

คำถามที่ 5: ประเภทข้อมูล MongoDB คืออะไร
MongoDB รองรับประเภทข้อมูลหลายประเภท:

สตริง ประเภทข้อมูลสตริงเก็บข้อมูลในรูปแบบของตัวอักษร/อักขระ และจะต้องมีขนาด 8 ไบต์และเป็นของ UTF-8 เช่น Jone
จำนวนเต็ม จัดเก็บตัวเลขได้สูงสุด 64 บิต แต่ขนาดอาจแตกต่างกันไปขึ้นอยู่กับเซิร์ฟเวอร์ เช่น 1,54
บูลีน ใช้เก็บค่าบูลีนที่เป็น 0 หรือ 1 ก็ได้ เช่น John is in class? คำตอบคือใช่หรือไม่ใช่
สองเท่า นี่เก็บตัวเลขลอยตัวเช่น 22.8
ปุ่มต่ำสุด/สูงสุด ใช้เพื่อเปรียบเทียบค่าต่ำสุดและค่าสูงสุด
อาร์เรย์ ใช้สำหรับเก็บอาร์เรย์หรือค่าหลายค่าในคีย์เดียว
การประทับเวลา เมื่อมีการแก้ไขเอกสารใด ๆ ก็สามารถเก็บบันทึกการแก้ไขได้
วัตถุ จัดเก็บเอกสารที่ฝังไว้
โมฆะ มันเก็บค่า Null
เครื่องหมาย นี่คือประเภทของสตริงและสามารถจัดเก็บภาษาที่เกี่ยวข้องกับสัญลักษณ์ได้
วันที่ เวลาและวันที่ปัจจุบันสามารถจัดเก็บในประเภทข้อมูลเหล่านี้
รหัสวัตถุ เอกสารมีรหัสเฉพาะ รหัสเหล่านี้สามารถเก็บไว้ในประเภทข้อมูลนี้ได้
ข้อมูลไบนารี ข้อมูลไบนารีซึ่งเรียกอีกอย่างว่าภาษาเครื่องถูกเก็บไว้ในนั้น
รหัส รหัส Javascript ถูกจัดเก็บไว้ในเอกสารโดยใช้ข้อมูลประเภทนี้
การแสดงออกปกติ นิพจน์ใด ๆ สามารถเก็บไว้ในประเภทข้อมูลนี้ได้

คำถามที่ 6: ทางเลือกอื่นของ MongoDB คืออะไร?
MongoDB เป็นฐานข้อมูล NoSQL ประเภทหนึ่ง โดยมีความช่วยเหลือในการจัดเก็บข้อมูลแบบกระจายขนาดใหญ่ไว้ในเอกสาร BSON ทางเลือกของ MongoDB ได้แก่ Amazon DynamoDB, Microsoft Azure Cosmos DB, Couchbase, PostgreSQL, Redis และ Cassandra

ระดับกลาง

คำถามเหล่านี้เกี่ยวข้องกับแนวคิดขั้นสูงมากกว่าพื้นฐาน และในการสัมภาษณ์ ผู้สมัครทั่วไปควรตอบคำถามเหล่านี้

คำถามที่ 7 เราจะเปรียบเทียบ MongoDB กับ SQL ในระดับสูงได้อย่างไร?
ฐานข้อมูล SQL เป็นฐานข้อมูลเชิงสัมพันธ์ที่จัดเก็บข้อมูลในลักษณะที่มีโครงสร้างและจัดระเบียบอย่างดีในรูปแบบของแถวและคอลัมน์ที่สร้างตาราง ในทางกลับกัน ฐานข้อมูล MongoDB เป็นฐานข้อมูล NoSQL ซึ่งเก็บข้อมูลในเอกสาร เอกสารเหล่านี้รวมกัน เรียกว่าคอลเลกชัน และคอลเลกชันเหล่านี้รวมกันเป็นฐานข้อมูล

คำถามที่ 8: มีฟังก์ชันการทำงานเช่นการจัดการธุรกรรมกรดและการล็อกใน MongoDB หรือไม่
ไม่ ตามค่าเริ่มต้น MongoDB ไม่ได้จัดเตรียมธุรกรรม ACID ใดๆ บนเอกสารหลายเอกสาร อย่างไรก็ตาม สามารถให้การสนับสนุนธุรกรรม ACID ในเอกสารเดียวได้

คำถามที่ 9: การสร้างดัชนีใน MongoDB คืออะไร
ใน MongoDB ดัชนีเป็นโครงสร้างข้อมูลพิเศษที่ใช้พื้นที่บางส่วนของฐานข้อมูลและเก็บข้อมูลบางส่วนเพื่อสร้างดัชนี ดัชนีช่วยปรับปรุงความสามารถในการค้นหาของฐานข้อมูล แทนที่จะค้นหาสิ่งใดสิ่งหนึ่งจากเอกสารจำนวนมาก ผู้ใช้สามารถไปที่เอกสารที่ระบุได้โดยตรงด้วยความช่วยเหลือของการจัดทำดัชนี

{
รหัสนักศึกษา = 1
ชื่อนักเรียน = 'พอล'
ประเทศ = 'สหรัฐ'
}

ในตัวอย่างข้างต้น “Student_id =1” เป็นดัชนี ดังนั้นถ้าใครค้นหาด้วย Student_id หรือ 1 เอกสารต่อไปนี้จะถูกเปิดขึ้น

คำถามที่ 10: ใน MongoDB สามารถสร้างดัชนีในฟิลด์อาร์เรย์ได้หรือไม่

ได้ เราสามารถสร้างดัชนีบนช่องอาร์เรย์ใน MongoDB และจัดทำดัชนีแต่ละค่าของอาร์เรย์ ในความเป็นจริง MongoDB สร้างดัชนีหลายคีย์ด้วยตัวมันเอง และคุณไม่จำเป็นต้องระบุหากฟิลด์ดัชนีใดๆ เป็นอาร์เรย์

คำถามที่ 11: เป็นไปได้ไหมที่จะเรียกใช้การดำเนินการ Javascript หลายรายการในอินสแตนซ์ MongoDB เดียว
เป็นไปได้ที่จะเรียกใช้การดำเนินการจาวาสคริปต์หลายรายการในอินสแตนซ์ mongod เดียว เนื่องจากมีการเพิ่มเอ็นจิ้นจาวาสคริปต์ MongoDB V8 เวอร์ชัน 2.4

คำถามที่ 12: การจดบันทึกใน MongoDB คืออะไร
เมื่อเปิดใช้งานการทำเจอร์นัลใน MongoDB จะสร้างไดเร็กทอรีย่อยของ Journal ภายในไดเร็กทอรีของ /ข้อมูล/ฐานข้อมูล ซึ่งเป็นเส้นทางที่กำหนดโดย dbPath ตามค่าเริ่มต้น ขณะที่การทำเจอร์นัลกำลังทำงาน MongoDB จะแก้ไขและจัดเก็บข้อมูลในหน่วยความจำและบนดิสก์ ก่อนที่การเปลี่ยนแปลงข้อมูลจะถูกถ่ายโอนไปยังดิสก์ มีประโยชน์มากในกรณีที่มีข้อผิดพลาดเกิดขึ้นเนื่องจากไม่ได้บันทึกการเปลี่ยนแปลงข้อมูล MongoDB สามารถดึงการเปลี่ยนแปลงจากไฟล์ Journal และสามารถรับประกันความทนทานของไฟล์

ระดับผู้เชี่ยวชาญ

คำถามเหล่านี้เกี่ยวข้องกับแนวคิดขั้นสูงของ MongoDB ซึ่งคาดว่าผู้สมัครที่เชี่ยวชาญควรตอบคำถามเหล่านี้

คำถามที่ 13: กระบวนการชาร์ดดิ้งของ MongoDB คืออะไร?
ใน MongoDB การชาร์ดดิ้งคือกระบวนการกระจายข้อมูลของฐานข้อมูลขนาดใหญ่ไปยังเซิร์ฟเวอร์ MongoDB จำนวนมาก จึงง่ายต่อการจัดการข้อมูลและยังสามารถตอบข้อซักถามได้ด้วยความเร็วสูง MongoDB รองรับการปรับขนาดแนวนอนผ่านการแบ่งส่วนข้อมูล

MongoDB cluster ประกอบด้วย 3 ส่วนคือ เศษ ; เรียกอีกอย่างว่าแบบจำลองและมีอยู่ในทุกเซิร์ฟเวอร์ มะม่วงหลายลูก ; พวกเขาทำหน้าที่เป็นล่ามระหว่างเซิร์ฟเวอร์และชาร์ดและ เซิร์ฟเวอร์การกำหนดค่า ; พวกเขาเก็บการตั้งค่าการกำหนดค่าของคลัสเตอร์และข้อมูลเมตา

คำถามที่ 14: Scale-Out คืออะไร และเกิดขึ้นได้อย่างไรใน MongoDB
เมื่อมีข้อมูลจำนวนมากในโหนดเดียว โหนดหลายโหนดจะเข้าใกล้โหนดที่โหลดเพื่อกระจายโหลด กระบวนการแชร์โหลดของโหนดเดียวไปยังโหนดต่างๆ นี้เรียกว่าสเกลเอาต์ และเรียกอีกอย่างว่าสเกลแนวนอน

คำถามที่ 15: เราจะรับข้อมูลเกี่ยวกับแผนการสืบค้นโดยใช้ภาษาแบบสอบถาม MongoDB ได้อย่างไร
เดอะ อธิบาย() ใช้คำสั่งและสนับสนุนโหมดที่เป็น “allPlansExecution,executionStats, และqueryPlanner” ตัวอย่างเช่น:

ฐานข้อมูล . ร้านอาหาร . อธิบาย ( 'executionStats' ) . หา (
{ 'อาหาร' : 1 , 'เขตเลือกตั้ง' : 'บรู๊คลิน' }
) ;

จากตัวอย่างข้างต้น เป็นการดึงข้อมูลร้านอาหารจากคำสั่ง expand()

คำถามที่ 16: อธิบาย MongoDB Aggregation Framework
ใน MongoDB การดึงข้อมูลจากคอลเล็กชันต่างๆ และหลังจากการคำนวณจะส่งคืนผลลัพธ์แบบรวมที่เรียกว่าการรวม มันมีสามขั้นตอน ขั้นแรก มันจะรับข้อมูลเข้าและกรองเอกสารที่เราต้องการจากเอกสารโดยใช้ $match() จากนั้นเราจะทำงานรวมของข้อมูลที่กรองโดยใช้ $group() และสุดท้าย เราจัดเรียง ผลลัพธ์ของเราโดยใช้ $sort()

คำถามที่ 17: เป็นไปได้หรือไม่ที่จะล็อกฐานข้อมูลมากกว่าหนึ่งฐานข้อมูลโดยใช้การดำเนินการ MongoDB
ใช่ MongoDB สามารถล็อคฐานข้อมูลได้มากกว่าหนึ่งฐานข้อมูล เพื่อล็อคหลายฐานข้อมูลทันที เราใช้การทำงานของ MongoDB db.copyDatabase() ในขณะที่การดำเนินการ db.repairDatabase() ใช้การล็อกส่วนกลางในการแก้ไขฐานข้อมูลและจำกัดการดำเนินการอื่นๆ ที่จะดำเนินการจนกว่าจะถูกลบออก

คำถามที่ 18: GridFS ใน MongoDB คืออะไร
ไฟล์ขนาดใหญ่ที่มีขนาดเกิน 16 MB เช่น รูปภาพ ไฟล์วิดีโอ และไฟล์เสียงจะได้รับการจัดการใน MongoDB โดยใช้ GridFS และจัดเก็บไว้ในส่วนต่างๆ ของไฟล์แทนที่จะเป็นเอกสารเดียว ตามค่าเริ่มต้น MongoDB รองรับเพียงสองรูปแบบที่เป็น fs ไฟล์และ fs.chunks เพื่อจัดเก็บชิ้นส่วนและข้อมูลเมตาของไฟล์

คำถามที่ 19: คุณจะอธิบายปรากฏการณ์การจำลองแบบใน MongoDB ได้อย่างไร
การจำลองแบบเป็นกระบวนการของการซิงโครไนซ์ข้อมูลระหว่างเซิร์ฟเวอร์จำนวนมาก ในขณะที่ MongoDB คัดลอกข้อมูลและทำซ้ำไปยังเซิร์ฟเวอร์ต่างๆ ดังนั้นในกรณีที่เซิร์ฟเวอร์ล่ม ข้อมูลสามารถดึงมาจากเซิร์ฟเวอร์อื่นได้ ซึ่งรับประกันความปลอดภัยของข้อมูล

คำถามที่ 20: Mongo Shell คืออะไร?
mongo shell เป็นแพลตฟอร์ม JavaScript ซึ่งเราสามารถโต้ตอบกับ MongoDB และยังสามารถแก้ไขข้อมูลโดยใช้แบบสอบถาม นอกจากนี้ยังใช้เพื่อวัตถุประสงค์ในการดูแลระบบ เช่น การบำรุงรักษาอินสแตนซ์ของฐานข้อมูล ตามค่าเริ่มต้น mongo shell จะรวมอยู่ในไฟล์การติดตั้ง แต่ถ้าไม่ได้ติดตั้ง คุณสามารถติดตั้งได้จากเซิร์ฟเวอร์ MongoDB

บทสรุป

MongoDB เป็นฐานข้อมูล NoSQL ยอดนิยม ซึ่งใช้ในการจัดการข้อมูลในรูปแบบของเอกสาร และจัดการได้ง่ายมากเนื่องจากไม่มีสคีมา มีการใช้งานโดยบริษัทที่มีชื่อเสียงหลายแห่ง เช่น Twitter และ Facebook เนื่องจากความนิยม จึงมีโอกาสในการทำงานมากมายสำหรับนักพัฒนาที่ทำงานในส่วนต่อประสาน MongoDB ในบทความนี้ มีการแบ่งปันคำถามสัมภาษณ์ MongoDB ที่พบบ่อยที่สุดพร้อมคำตอบที่เหมาะสม