การสร้างดัชนีในฐานข้อมูล NoSQL
เผยแพร่แล้ว: 2022-11-17มีหลายวิธีในการจัดทำดัชนีข้อมูลในฐานข้อมูล NoSQL วิธีการสร้างดัชนีที่พบมากที่สุดคือการแฮช แบบต้นไม้ และแบบกระจาย การแฮชเป็นวิธีการจัดทำดัชนีทั่วไปเนื่องจากรวดเร็วมาก ข้อมูลถูกจัดเก็บไว้ในตารางแฮช และคีย์ต่างๆ จะถูกใช้เพื่อจัดทำดัชนีข้อมูล วิธีนี้เป็นวิธีที่ดีสำหรับฐานข้อมูลขนาดเล็ก เนื่องจากง่ายต่อการติดตั้งและรวดเร็วมาก การทำดัชนีแบบต้นไม้เป็นวิธีการที่ดีสำหรับฐานข้อมูลขนาดใหญ่ ข้อมูลถูกจัดเก็บไว้ในแผนผัง และคีย์ต่างๆ จะถูกใช้เพื่อจัดทำดัชนีข้อมูล วิธีนี้ช้ากว่าการแฮช แต่ปรับขนาดได้มากกว่า การทำดัชนีแบบกระจายเป็นวิธีที่ดีสำหรับฐานข้อมูลขนาดใหญ่ที่กระจายอยู่ในเซิร์ฟเวอร์หลายเครื่อง ข้อมูลถูกจัดเก็บไว้ในตารางแฮชแบบกระจาย และคีย์ต่างๆ จะถูกใช้เพื่อจัดทำดัชนีข้อมูล วิธีนี้ช้ากว่าการแฮช แต่ปรับขนาดได้มากกว่าและสามารถจัดการข้อมูลได้มากขึ้น
ดัชนีฐานข้อมูล เช่น แฮชหรืออาร์เรย์ เป็นโครงสร้างข้อมูลประเภทหนึ่ง เราสามารถจัดระเบียบข้อมูลได้หลายวิธี แต่วิธีนี้เป็นวิธีที่ง่ายที่สุด ในตัวอย่างนี้ เราจะดูดัชนีของที่อยู่ซึ่งระบุด้วยชื่อ ฐานข้อมูลติดอยู่ที่ซานฟรานซิสโกหากไม่มีดัชนี สิ่งสำคัญคือต้องเข้าใจว่าดัชนีมีส่วนช่วยให้ฐานข้อมูลของเรามีประสิทธิภาพอย่างไร โดยกำหนดว่าดัชนีใช้เวลาและทรัพยากรอย่างไร การทำดัชนีดัชนีช่วยให้ฐานข้อมูลค้นหาบันทึกที่ตรงกันได้เร็วขึ้น ซึ่งอาจส่งผลให้การสืบค้นช้ามาก ประสิทธิภาพที่เพิ่มขึ้นของการสืบค้นฐานข้อมูลจำนวนมากของเรา ในทางกลับกัน ก่อให้เกิดค่าใช้จ่ายในการเขียนลงในดัชนี
ข้อมูลเสือแบบใช้สายถูกจัดเก็บไว้ในตารางประเภทอื่นเพื่อปรับให้เหมาะสมสำหรับการบีบอัดที่รวดเร็ว (สำหรับการรวบรวม) หรือการบีบอัดคำนำหน้า (สำหรับดัชนี) แคช WiredTiger แสดงทั้งสองรายการแตกต่างจากบนดิสก์เมื่อโหลดแล้ว
อาร์เรย์ MongoDB มีชุดข้อมูลที่สามารถเข้าถึงได้โดยใช้ดัชนีหลายคีย์ เมื่อ MongoDB จัดทำดัชนีฟิลด์ด้วยค่าอาร์เรย์ จะสร้างรายการดัชนีแยกต่างหากสำหรับแต่ละองค์ประกอบของฟิลด์ การใช้ดัชนีแบบหลายคีย์เหล่านี้ การสืบค้นสามารถเลือกเอกสารที่มีอาร์เรย์ได้อย่างง่ายดายโดยจับคู่องค์ประกอบอย่างน้อยหนึ่งรายการของอาร์เรย์กับดัชนีแบบหลายคีย์
ดัชนีหลักประกอบด้วยชุดย่อยของแอตทริบิวต์จากตารางหลัก ในขณะที่ดัชนีรองประกอบด้วยชุดย่อยของแอตทริบิวต์จากตารางหลัก เมื่อตารางดัชนีหลักเกี่ยวข้องโดยตรงกับตารางฐาน ตารางนั้นจะเรียกว่าตารางดัชนีหลัก
ค่าของฟิลด์ที่รวมอยู่ในดัชนีจะกำหนดอันดับของดัชนี ในทางกลับกัน MongoDB มีเมธอด createIndex() สำหรับสร้างดัชนีในคอลเลกชัน วิธีนี้สามารถใช้เพื่อสร้างดัชนีจำนวนหนึ่ง รวมทั้งข้อความและดัชนีสองมิติ
Nosql จัดทำดัชนีอย่างไร?
โดยทั่วไปแล้ว ฐานข้อมูล Nosql จะถูกจัดทำดัชนีโดยคีย์ที่ใช้ในการระบุข้อมูล จากนั้นข้อมูลจะถูกจัดเก็บไว้ในโครงสร้างข้อมูลที่สามารถค้นหาได้ด้วยคีย์
ดัชนี: องค์ประกอบสำคัญของฐานข้อมูล Nosql
ฐานข้อมูล NoSQL จำนวนมากมีดัชนีอยู่ในซอฟต์แวร์ของตน ความสามารถในการลดจำนวนครั้งที่สแกนตารางหรือแบบสอบถามช่วยปรับปรุงประสิทธิภาพของกิจกรรมฐานข้อมูล ดัชนีจะแยกความแตกต่างด้วยนิพจน์ฟิลด์ ซึ่งแสดงถึงชื่อฟิลด์เดียว นิพจน์ฟิลด์ค่าคงที่หรือฟังก์ชันที่ส่งคืนค่าคงที่ต้องมีอยู่ในนิพจน์ฟิลด์
วิธีใดที่ใช้สำหรับการสร้างดัชนีใน Mongodb
Mongodb ใช้ดัชนี B- tree เพื่อจัดทำดัชนีข้อมูล ดัชนีนี้ใช้เพื่อจัดเก็บข้อมูลในลักษณะที่เป็นระเบียบ ซึ่งทำให้ง่ายต่อการค้นหาและดึงข้อมูล
MongoDB จัดทำดัชนีเอกสารตามค่า _id ดังนั้นการอัปเดตดัชนีจึงมีความสำคัญ ปัญหาการสูญหายของข้อมูลและประสิทธิภาพอาจเกิดขึ้นได้หากดัชนี _id ถูกลบ
ตาม MongoDB ขอแนะนำให้ปรับปรุงดัชนี _id ให้ทันสมัยอยู่เสมอ หากคุณต้องการเปลี่ยนดัชนี ตรวจสอบให้แน่ใจว่าคุณได้ระบุเหตุผลในการทำเช่นนั้นในเอาต์พุต mongodump หากคุณลบดัชนีโดยไม่ระบุเหตุผล อาจส่งผลให้ข้อมูลสูญหายและปัญหาด้านประสิทธิภาพ
Nosql รองรับดัชนีรองหรือไม่
โดยทั่วไปแล้ว ฐานข้อมูล NoSQL ไม่ได้สร้างขึ้นโดยคำนึงถึง ดัชนีรอง เนื่องจากได้รับการออกแบบมาให้ปรับขนาดได้และมีประสิทธิภาพหากไม่มี อย่างไรก็ตาม ฐานข้อมูล NoSQL บางส่วนรองรับดัชนีรอง เช่น MongoDB และ Cassandra
โครงสร้างนี้ประกอบด้วยส่วนย่อยของแอตทริบิวต์ของตารางและเรียกว่าดัชนีรอง ตารางสามารถแบ่งพาร์ติชันได้หลายวิธีและจัดเรียงตามคีย์แทนฐาน ก่อนหน้านี้เราสันนิษฐานว่าดัชนีรองคือตารางที่มีรหัสพาร์ติชัน แต่ไม่ใช่ในกรณีนี้ มันถูกเก็บไว้ในโหนดเดียวกันกับตารางพาเรนต์ ไม่ควรกำหนด ดัชนีเพิ่มเติม ในฐานข้อมูลคีย์-ค่า NoSQL โดยใช้ตารางพาร์ติชันดัชนีเพียงอย่างเดียว ดัชนีรองคือโครงสร้างข้อมูลที่อยู่บนโหนดเดียวกันกับตารางฐาน ในส่วนนี้ มีการใช้ดัชนีรองอย่างง่ายสำหรับหุ่นจำลองฐานข้อมูลในหน่วยความจำ มีการใช้กลยุทธ์การจัดทำดัชนีสองแบบ (คัดลอกและดึงข้อมูล) อันเป็นผลมาจากการสาธิต
ฐานข้อมูล Nosql ถูกจัดเก็บอย่างไร?
ฐานข้อมูล Document NoSQL เก็บข้อมูลมากกว่าฐานข้อมูลเชิงสัมพันธ์เพื่อรักษาโครงสร้างเอกสาร ด้วยเหตุนี้ จึงจัดประเภทเป็น "ไม่เฉพาะ SQL" และจัดกลุ่มตามโมเดลข้อมูลที่ยืดหยุ่นต่างๆ ฐานข้อมูล NoSQL สามารถเป็นฐานข้อมูลเอกสารล้วน ฐานข้อมูลที่เก็บคีย์-ค่า ฐานข้อมูลคอลัมน์กว้าง หรือฐานข้อมูลกราฟ
SQL เป็นเพียงองค์ประกอบหนึ่งของ NoSQL ฐานข้อมูล NoSQL มีสี่ประเภท โมเดล NoSQL ประเภทต่างๆ ที่ใช้หมายความว่ามีความแตกต่างอย่างมีนัยสำคัญระหว่างโมเดลเหล่านี้ นอกเหนือจากการไม่มีฐานข้อมูลแล้ว เทคโนโลยี NoSQL ยังมีความโดดเด่นด้วยคุณลักษณะต่างๆ เช่น ต้นทุนการทำธุรกรรมต่ำ การพัฒนาสคีมา การทำคลัสเตอร์ข้อมูล และการรองรับการจำลอง ล้วนมีส่วนทำให้เกิดความสอดคล้องกันเมื่อเวลาผ่านไป เว็บแอปพลิเคชันที่ใช้ฐานข้อมูลคีย์-ค่าสำหรับการจัดการเซสชันและการแคชจะได้รับประโยชน์อย่างมากจากสิ่งเหล่านี้ เมื่อเข้าถึงข้อมูลโดยคอลัมน์ ร้านค้าที่มีคอลัมน์ขนาดใหญ่จะเหมาะสมที่สุด
API, โมเดลข้อมูล, สคีมา, การปรับขนาด และความสมบูรณ์ของข้อมูลเป็นห้าหมวดหมู่หลักของ NoSQL ฐานข้อมูล NoSQL ไม่ต้องการ schema เพื่อจัดเก็บข้อมูล โปรแกรมเมอร์ในลักษณะนี้จะคล่องตัวมากขึ้น ทำให้สามารถอุทิศเวลาให้กับการพัฒนาซอฟต์แวร์ได้มากขึ้น ความสมบูรณ์ของข้อมูลที่สร้าง อ่าน อัปเดต และลบโดยแอปพลิเคชันและผู้ใช้ได้รับการปกป้องในฐานข้อมูล NoSQL และ SQL ในรูปแบบต่างๆ ธุรกรรมแต่ละรายการจะดำเนินการด้วยตัวมันเองในสถานะฐานข้อมูลที่สอดคล้องกับ ACID โดยไม่มีผลกระทบใดๆ จนกว่าจะได้ผลลัพธ์ที่ถูกต้องหรือไม่มีผลกระทบ คำว่า "nosql" หมายถึงฐานข้อมูลบางส่วนที่สร้างขึ้นก่อนการพัฒนาระบบการจัดการเชิงสัมพันธ์ (RDBMS) คลัสเตอร์ฐานข้อมูลขนาดใหญ่ถูกสร้างขึ้นในช่วงต้นปี 2000 โดยเป็นส่วนหนึ่งของสถาปัตยกรรมฐานข้อมูลบนคลาวด์หรือเว็บแอปพลิเคชัน
Nosql คืออะไร?
ฐานข้อมูล NOSQL เป็นส่วนย่อยของระบบฐานข้อมูลที่หลากหลายซึ่งแทนที่โมเดลเชิงสัมพันธ์แบบอิงตามแถวและอิงตาม SQL ด้วยโมเดลที่ยืดหยุ่นกว่าซึ่งเก็บข้อมูลในเอกสาร ด้วยเหตุนี้ ฐานข้อมูล NOSQL จึงใช้งานได้ง่ายกว่า เนื่องจากนักพัฒนาไม่จำกัดเฉพาะโมเดลข้อมูลแบบดั้งเดิมที่ทำงานได้ดีในลักษณะเฉพาะสำหรับข้อมูล ความยืดหยุ่นของโครงสร้างข้อมูลประเภทนี้ช่วยให้สามารถปรับขยายในแนวนอนได้ เนื่องจากโครงสร้างของข้อมูลสามารถเปลี่ยนแปลงได้ง่ายโดยไม่กระทบต่อโครงสร้างพื้นฐานของฐานข้อมูล ฐานข้อมูล MongoDB สร้างขึ้นจากโมเดล NoSQL ที่เน้นเอกสาร ซึ่งไม่ใช่ตัวอย่างทั่วไปของ NOSQL แอตทริบิวต์และค่าของเอกสารถูกเก็บไว้ใน MongoDB และจัดเก็บในรูปแบบ JSON เนื่องจากเอกสารแต่ละฉบับสามารถเข้าใจและแก้ไขได้ง่ายโดยไม่กระทบกับส่วนอื่นๆ ของระบบ จึงทำให้ง่ายต่อการเข้าใจและจัดการ อีกฐานข้อมูล NOSQL ที่ได้รับความนิยมคือ Couchbase โมเดลคีย์-ค่าใช้ใน Couchbase เพื่อแสดงถึงองค์ประกอบสองอย่างของทุกเรกคอร์ดในฐานข้อมูล: คีย์และค่า อาร์เรย์ ตัวเลข และสตริงทั้งหมดสามารถจัดเก็บตามลำดับตรรกะ โดยค่าจะเป็นสตริง ตัวเลข หรือวัตถุ เนื่องจากสามารถจัดเก็บค่าในลำดับใดก็ได้โดยไม่ต้องกลัวว่าจะเกิดการชนกัน Couchbase จึงเป็นตัวเลือกที่ยอดเยี่ยมสำหรับข้อมูลที่ไม่ได้มีโครงสร้างในลักษณะเฉพาะเสมอไป ฐานข้อมูล NoSQL ของคลัสเตอร์พอยต์ประกอบด้วยที่เก็บคอลัมน์ที่มีคอลัมน์ ซึ่งหมายความว่าข้อมูลจะถูกจัดเก็บไว้ในตาราง แถว และคอลัมน์ตามความต้องการของระบบ ข้อมูลสามารถจัดเก็บในลักษณะที่สามารถกำหนดขนาดคอลัมน์ในแบบใดก็ได้ที่สะดวกสำหรับพวกเขา Mark Logic เป็นฐานข้อมูล NoSQL ที่แตกต่างจากฐานข้อมูล NoSQL ประเภทดั้งเดิม ที่เก็บคีย์-ค่าคือประเภทของที่เก็บ NoSQL ที่สามารถจัดเก็บบันทึกได้ ด้วยเหตุนี้ จึงเป็นโซลูชันที่สมบูรณ์แบบสำหรับข้อมูลที่ต้องเข้าถึงบ่อยครั้ง แต่ไม่สามารถจัดเก็บในรูปแบบกระดาษได้เสมอไป
การสร้างดัชนีใน Sql Vs Nosql
การทำดัชนีเป็นหนึ่งในข้อแตกต่างที่สำคัญที่สุดระหว่าง SQL และ NoSQL SQL ใช้ดัชนี B-tree ซึ่งเป็นโครงสร้างแบบลำดับชั้นในการจัดเก็บข้อมูล ในทางกลับกัน ดัชนีแฮชจะเก็บข้อมูลในที่เก็บคีย์-ค่าและใช้ใน NoSQL
ในโพสต์นี้ ฉันจะเปรียบเทียบและเปรียบเทียบความแตกต่างของฐานข้อมูล SQL และ NoSQL รวมถึงทำการเปรียบเทียบประสิทธิภาพ นอกจากนี้ ฉันจะให้รายการกรณีการใช้งานที่เหนือกว่าอีกกรณีหนึ่ง แต่ละฐานข้อมูลมีภาษาคิวรีหรือวิธีการสืบค้นข้อมูลของตนเอง โดยทั่วไปแล้ว ฐานข้อมูล NoSQL จะมีอัตราการเขียนต่อวินาทีที่สูงกว่าฐานข้อมูล SQL เมื่อข้อมูลไม่มีโครงสร้างและไม่ได้ตรวจสอบก่อนเข้าสู่ฐานข้อมูล ข้อมูลนั้นอาจถูกแทรกหรือบันทึกในสถานะที่ผิดรูปแบบหรือไม่ถูกต้อง ฐานข้อมูล NoSQL เรียกว่า schemaless เนื่องจากไม่ต้องการ schema คงที่ในการป้อนและดึงข้อมูล ฐานข้อมูล SQL เป็นตัวเลือกที่ดีหากคุณดำเนินการอ่านหลายครั้งต่อวินาทีในขณะที่รักษาข้อมูลของคุณให้ปลอดภัย
ฟังก์ชันนี้มีประโยชน์อย่างยิ่งเมื่อเรียกใช้บริการบันทึกที่ต้องเก็บข้อมูลจำนวนมาก เอ็นจิ้นดัชนีบนฐานข้อมูล NoSQL นั้นแข็งแกร่งน้อยกว่าและมีประสิทธิภาพน้อยกว่าในฐานข้อมูลแบบดั้งเดิม ฐานข้อมูล NoSQL มีมาระยะหนึ่งแล้ว ฐานข้อมูล SQL และฐานข้อมูล NoSQL มีข้อดีและข้อเสียที่แตกต่างกันในอุตสาหกรรม ข้อกำหนดและตัวเลือกของบริษัทของคุณจะเป็นตัวกำหนดว่าคุณจะนำไปใช้อย่างไร ฐานข้อมูลแบบดั้งเดิมเป็นตัวเลือกที่ดีที่สุดสำหรับผู้ที่ต้องการเทคโนโลยีที่ผ่านการทดสอบการต่อสู้พร้อมประสบการณ์ในอุตสาหกรรมมากมาย ในทางกลับกัน หากคุณต้องการจัดเก็บข้อมูลที่ไม่มีโครงสร้างจำนวนมากในเวลาที่เหมาะสม คุณควรพิจารณาใช้ NoSQL
ฐานข้อมูล NoSQL ทำงานได้ดีกว่าฐานข้อมูล SQL ในแง่ของประสิทธิภาพ ดัชนีฐานข้อมูลใน SQL Server เรียกว่า b-tree ซึ่งช้ากว่าดัชนีฐานข้อมูลที่ไม่ใช่กลุ่ม นอกจากนี้ เมื่อพูดถึงคำสั่ง SELECT ดัชนีคลัสเตอร์อาจเป็นวิธีที่เร็วที่สุด แต่ก็ไม่ใช่ตัวเลือกที่ดีที่สุดเสมอไป
วิธีค้นหาฐานข้อมูล Nosql
หากต้องการค้นหาฐานข้อมูล NoSQL คุณจะต้องใช้ภาษาคิวรี ภาษาแบบสอบถามได้รับการออกแบบมาเพื่อให้ง่ายต่อการค้นหาข้อมูลในฐานข้อมูล NoSQL มีภาษาข้อความค้นหาที่แตกต่างกันมากมาย แต่ทั้งหมดมีฟังก์ชันการทำงานพื้นฐานที่เหมือนกัน คุณสามารถใช้ภาษาคิวรีเพื่อค้นหาข้อมูลตามคำหลัก ประเภทข้อมูล หรือตามสถานที่
ฐานข้อมูลเครื่องมือค้นหาเป็นฐานข้อมูล NoSQL ที่ไม่จำเป็นต้องเป็นไปตามข้อกำหนดโครงสร้างที่เข้มงวดของระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) การค้นหาอาจอยู่ในรูปของข้อความค้นหาแบบข้อความหรือแบบกึ่งโครงสร้าง หรือการค้นหาแบบไม่มีโครงสร้าง แทนที่จะค้นหาข้อความโดยตรง การค้นหาใช้การค้นหาแบบดัชนี การค้นหาข้อมูลที่ใช้ทั้ง RDBMS แบบตายตัวและโครงสร้างประโยคแบบเต็มคล้ายกับที่พบในเอกสาร Microsoft Word หรือ PDF การค้นหาทางภูมิศาสตร์จะเชื่อมโยงตำแหน่งที่ตั้งกับทรัพยากรบนเว็บ เพื่อให้สามารถใช้ตอบคำถามตามตำแหน่งที่ตั้งได้ การค้นหาเวกเตอร์เป็นวิธีการค้นหาคำที่ใกล้เคียงกับคำหลัก
ดัชนีจัดเก็บอยู่ที่ไหนในฐานข้อมูล
แถวของฐานข้อมูลสามารถจัดลงในตารางได้ตามต้องการ แต่ละแถวมีคีย์เฉพาะที่แตกต่างจากแถวอื่นๆ ทั้งหมด และจัดเก็บไว้ในดัชนีเพื่ออำนวยความสะดวกในการเข้าถึงอย่างรวดเร็ว คีย์ถูกจัดเก็บไว้ในดัชนีและเปลี่ยนแปลงโดยอัตโนมัติเมื่อมีการเพิ่มแถวใหม่
เมื่อฐานข้อมูลอยู่ในพื้นหลัง ดัชนีเป็นเครื่องมือที่มีประสิทธิภาพที่ช่วยในการสืบค้นฐานข้อมูลได้เร็วขึ้น ฐานข้อมูลมีแถวและคอลัมน์ที่จัดระเบียบข้อมูลลงในตาราง แต่ละแถวมีรหัสเฉพาะที่แตกต่างจากแถวอื่น คีย์เหล่านี้ถูกจัดเก็บไว้ในดัชนีเพื่อให้เข้าถึงได้ง่าย หากเรามีลูกค้าหลายรายที่มีหมายเลขโทรศัพท์เดียวกัน เราอาจต้องใช้ดัชนีเพื่อค้นหาอย่างรวดเร็ว ไวยากรณ์สำหรับการสร้างดัชนีจะแตกต่างกันไปขึ้นอยู่กับฐานข้อมูล แต่โดยทั่วไปจะมีคีย์เวิร์ด CREATE ตามด้วย คีย์เวิร์ด INDEX และชื่อตารางที่จะจัดทำดัชนีเป็นฐาน
ดัชนีถูกใช้เพื่อเพิ่มความเร็วในการค้นหาและข้อความค้นหาในฐานข้อมูล
ผลการค้นหาและข้อความค้นหาสามารถเร่งความเร็วได้โดยใช้ดัชนีเพื่อจัดเก็บข้อมูลในฐานข้อมูล ในตาราง ดัชนีคือโครงสร้างข้อมูลที่เก็บข้อมูลสำหรับคอลัมน์เฉพาะ ตารางเต็มไปด้วยดัชนี
การสร้างดัชนีใน Mongodb
Mongodb ใช้ดัชนีเพื่อปรับปรุงประสิทธิภาพการค้นหา ดัชนีคือโครงสร้างข้อมูล (โดยมากจะเป็น B-tree) ที่เก็บค่าสำหรับฟิลด์เฉพาะในคอลเลกชัน เมื่อดำเนินการสืบค้น ฐานข้อมูลสามารถใช้ดัชนีเพื่อค้นหาเอกสารที่ต้องการได้อย่างรวดเร็ว หากไม่มีดัชนี ฐานข้อมูลจะต้องสแกนเอกสารทุกฉบับในคอลเลกชัน ซึ่งจะช้ามาก
ใช้ระบบจัดการฐานข้อมูลเชิงเอกสารและใช้ PostgreSQL คุณสามารถจัดเก็บข้อมูลจำนวนมากในเอกสารที่มีขนาดหรือรูปร่างใดก็ได้ เครื่องมือที่สำคัญที่สุดอย่างหนึ่งในการปรับปรุงประสิทธิภาพของฐานข้อมูลคือดัชนี คุณจะได้เรียนรู้ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับดัชนี วิธีสร้างดัชนี และวิธีทดสอบว่าดัชนีเหล่านั้นถูกใช้ในฐานข้อมูลอย่างไร เมื่อคุณทำตามในบทช่วยสอนนี้ ดัชนีของคอลเลกชันเป็นโครงสร้างข้อมูลพิเศษที่เก็บข้อมูลของคอลเลกชันเพียงส่วนเล็กๆ ฐานข้อมูล MongoDB สามารถข้ามผ่านตัวแปรเหล่านี้ได้อย่างรวดเร็วและมีประสิทธิภาพเนื่องจากมีการใช้งานในลักษณะดังกล่าว ตามที่อธิบายไว้ในคู่มือนี้ ฐานข้อมูลตัวอย่างสามารถใช้สร้างดัชนีประเภทต่างๆ ได้
เราจำเป็นต้องมีเอกสารหลายประเภทในบทช่วยสอนนี้ รวมทั้งชุดเอกสารต่างๆ เอกสารที่อธิบายในส่วนนี้คือห้ายอดเขาที่สูงที่สุดในโลก เอาต์พุตประกอบด้วยรายการของตัวระบุที่กำหนดให้กับแต่ละออบเจกต์ใหม่ที่แทรกเข้าไป เป้าหมายของคู่มือนี้คือการอธิบายวิธีที่ MongoDB ทำดัชนีเอกสารเพื่อจำกัดจำนวนข้อมูลที่สามารถอ่านได้โดยการเน้นรายละเอียดการสืบค้น เมธอด createIndex ช่วยให้คุณสร้างดัชนีสำหรับฟิลด์ความสูงของคอลเลกชันสูงสุด ในตัวอย่างนี้ เราจะสร้างดัชนีฟิลด์เดียว ซึ่งหมายความว่าเอกสารมีคีย์เดียว (ความสูงในตัวอย่างก่อนหน้านี้) สำหรับฟิลด์ที่เราต้องการ หากไม่ได้ผล ให้ลองเรียกใช้แบบสอบถามเดิมอีกครั้งด้วยดัชนีใหม่
ผลลัพธ์จะมีความแตกต่างอย่างมีนัยสำคัญในเอาต์พุตเนื่องจากดัชนีเกี่ยวข้องกับการดำเนินการค้นหา ขั้นตอนที่สองคือการสร้างรายการดัชนีเฉพาะ ไม่มีทางที่จะแทรกเอกสารสองฉบับลงในคอลเลกชัน MongoDB หากค่าทั้งสองของแอตทริบิวต์ _id เหมือนกัน นี่เป็นเพราะความสามารถโดยอัตโนมัติของฐานข้อมูลในการจัดทำดัชนีฟิลด์ทั้งหมดที่มีฟิลด์ _id โดยใช้ขั้นตอนนี้ คุณสามารถสร้างดัชนีเพื่อให้แน่ใจว่าค่าของฟิลด์ที่กำหนดไม่ซ้ำกันสำหรับแต่ละเอกสารในคอลเลกชัน ขั้นตอนที่สี่คือการสร้างดัชนีสำหรับฟิลด์ที่ฝังอยู่ในฐานข้อมูล MongoDB เมื่อความซับซ้อนของเอกสารที่จัดเก็บไว้ในฐานข้อมูลเพิ่มขึ้น ผลกระทบของการสืบค้นก็เช่นกัน
ในขั้นตอนนี้ เราจะสาธิตวิธีสร้าง ดัชนีฟิลด์ เดียวในเอกสารที่ฝัง สิ่งสำคัญคือต้องจำไว้ว่าการเพิ่มดัชนีมากเกินไปอาจส่งผลเสียต่อประสิทธิภาพ เช่นเดียวกับการเพิ่มน้อยเกินไปอาจส่งผลเสียได้ MongoDB จะใช้ดัชนีเพื่อสร้างลำดับขั้นสุดท้ายตามฟิลด์ที่เป็นส่วนหนึ่งของฐานข้อมูล ด้วยเหตุนี้ จึงไม่จำเป็นต้องจัดระเบียบเอกสารใดๆ อีกหลังจากการค้นหาข้อความแบบเต็มเสร็จสิ้น ก่อนหน้านี้ ดัชนีนี้ถูกสร้างขึ้นจากน้อยไปหามากโดยใช้ไวยากรณ์ * ascents.total: 1 และการค้นหายอดเขาที่ร้องขอจะถูกจัดเรียงตามลำดับจากมากไปน้อย เมื่อ MongoDB กำลังมองหาเอกสารที่จะสืบค้น จะใช้ดัชนีเขตข้อมูลเดียวเพื่อค้นหาเอกสาร หาก MongoDB สามารถระบุเพียงส่วนหนึ่งของแบบสอบถามที่มีดัชนีอยู่ ก็จะใช้เป็นขั้นตอนแรกในการสแกนคอลเลกชัน
นี่ไม่ใช่กรณีที่มีดัชนีผสมเสมอไป เป็นไปได้ว่าการกำหนดดัชนีที่ครอบคลุมหลายฟิลด์จะป้องกันไม่ให้มีการสแกนเพิ่มเติม ขั้นตอนที่หกคือการสร้างดัชนีหลายคีย์ ในขั้นตอนนี้ เราจะสาธิตวิธีการทำงานของ MongoDB เมื่อสร้างดัชนีในฟิลด์ที่เก็บค่าหลายค่า เช่น อาร์เรย์ ขณะนี้ MongoDB ทำการสแกนคอลเลกชันทั้งหมดสำหรับการค้นหานี้ เนื่องจากไม่มีดัชนีสำหรับฟิลด์นั้น แต่ละพีคจากสี่พีคนี้ครอบคลุมมากกว่าหนึ่งประเทศ ตามฟิลด์ที่ตั้ง และค่าทั้งหมดเหล่านี้แสดงถึงอาร์เรย์ของพีคหลาย ๆ ทุกฟิลด์ในอาร์เรย์มีดัชนีหลายคีย์ MongoDB ของตัวเอง
เมื่อเอกสารมีฟิลด์ตำแหน่งที่เก็บอาร์เรย์ ["จีน", "เนปาล"] รายการดัชนีสองรายการที่แยกจากกันจะปรากฏขึ้นสำหรับเอกสารเดียวกัน รายการหนึ่งสำหรับจีนและอีกรายการสำหรับเนปาล แม้ว่าแบบสอบถามจะระบุการจับคู่บางส่วนกับเนื้อหา MongoDB ก็สามารถใช้ดัชนีได้อย่างมีประสิทธิภาพ MongoDB ใช้ดัชนี MongoDB เพื่อลดปริมาณข้อมูลที่ MongoDB จำเป็นต้องวิเคราะห์ระหว่างการดำเนินการค้นหาเพื่อปรับปรุงประสิทธิภาพการค้นหา ชุดย่อยของคุณสมบัติดัชนีที่ MongoDB มอบให้ได้รับการอธิบายไว้ในบทช่วยสอน ซึ่งมีจุดประสงค์เพื่อปรับปรุงประสิทธิภาพการสืบค้นในฐานข้อมูลที่มีข้อมูลไม่ว่าง เอกสารอย่างเป็นทางการของ MongoDB สามารถพบได้ที่นี่
ในฟิลด์ที่คุณระบุ คุณสามารถสร้างดัชนีฟิลด์เดียวได้ จุดประสงค์ของดัชนีนี้คือเพื่อเพิ่มความเร็วในการดึงเอกสารจากฐานข้อมูล เอกสารที่ตรงกับคำนิยามดัชนีจะถูกดึงข้อมูลก่อน ตามด้วยเอกสารที่ตรงกับคำนิยามดัชนีตามฟิลด์ *id
หากคุณไม่ได้ใช้เคอร์เซอร์ คุณควรสืบค้นข้อมูลที่ไม่จำเป็นต้องรีบบันทึก คุณสามารถเข้าถึงฟิลด์เฉพาะในฐานข้อมูลได้ตามต้องการโดยใช้เคอร์เซอร์เพื่อเลื่อนผ่านฐานข้อมูลตามลำดับ
ข้อเสียของดัชนี
นอกเหนือจากนั้น ดัชนีสามารถชะลอการสืบค้นหากมีขนาดใหญ่
การทำดัชนีฐานข้อมูลเชิงสัมพันธ์
การ ทำดัชนีฐานข้อมูลเชิงสัมพันธ์ คือกระบวนการสร้างและบำรุงรักษาดัชนีบนตารางฐานข้อมูลเชิงสัมพันธ์ ดัชนีใช้เพื่อปรับปรุงประสิทธิภาพการสืบค้นฐานข้อมูล สามารถสร้างดัชนีได้ตั้งแต่หนึ่งคอลัมน์ขึ้นไปของตาราง คอลัมน์อาจถูกจัดทำดัชนีมากกว่าหนึ่งครั้งหากเป็นส่วนหนึ่งของดัชนีหลายรายการ
ตัวทำดัชนีฐานข้อมูล เป็นเทคนิคโครงสร้างข้อมูลที่ใช้เพื่อค้นหาและเข้าถึงข้อมูลภายในฐานข้อมูลอย่างรวดเร็ว มีกลไกการจัดระเบียบไฟล์สองประเภทที่ตามด้วยดัชนีเพื่อจัดเก็บข้อมูล การจัดทำดัชนีมีสามประเภทหลัก การจัดระเบียบไฟล์แฮชแสดงไว้ด้านล่าง ดัชนีจัดเรียงตามชื่อ (คีย์ค้นหา) เมื่อสร้างดัชนีไฟล์ตามรูปแบบนี้ ไฟล์จะจัดระเบียบตามลำดับ เราเพียงแต่ต้องรู้ว่าข้อมูลอยู่ที่ใดในดัชนีที่ไม่ใช่คลัสเตอร์ นั่นคือมีรายการพอยน์เตอร์เสมือนหรือการอ้างอิง การจัดทำดัชนีบล็อกเดียวสามารถทำได้โดยแยกบล็อกหลักออกเป็นบล็อกเล็ก ๆ เพื่อให้ง่ายต่อการค้นหา