ความสามารถในการปรับขนาดในแนวนอนด้วยฐานข้อมูล NoSQL
เผยแพร่แล้ว: 2022-11-20ฐานข้อมูล NoSQL สามารถปรับขนาดในแนวนอนได้ ซึ่งหมายความว่าสามารถปรับขนาดได้โดยการเพิ่มโหนดเพิ่มเติมในระบบ ซึ่งตรงข้ามกับการปรับขนาดในแนวตั้งซึ่งหมายถึงการเพิ่มทรัพยากรให้กับโหนดเดียว ซึ่งหมายความว่าฐานข้อมูล NoSQL สามารถแยกย่อยหรือแบ่งออกเป็นหลายส่วนได้ และแต่ละส่วนสามารถจัดเก็บไว้ในเซิร์ฟเวอร์แยกต่างหาก ซึ่งช่วยให้ปรับขนาดฐานข้อมูลในแนวนอนได้ ซึ่งมีประสิทธิภาพและปรับขนาดได้มากกว่าแนวตั้งมาก
การปรับขนาดมีความสำคัญอย่างยิ่งต่อฐานข้อมูล SQL และ NoSQL และแนวคิดของการแบ่งส่วน ฐานข้อมูล เป็นส่วนสำคัญของมัน เรากำลังแบ่งฐานข้อมูลออกเป็นชิ้น ๆ (เศษ) ตามชื่อที่แนะนำ
นอกจากนี้ยังขาดความสามารถในการดำเนินการแบบไดนามิกใน NoSQL ไม่มีการรับประกันว่าสารประกอบจะมีคุณสมบัติเป็นกรด ฐานข้อมูล SQL เป็นตัวเลือกในกรณีดังกล่าว นอกจากนี้ หากแอปพลิเคชันของคุณต้องการความยืดหยุ่นของรันไทม์ ให้หลีกเลี่ยง NoSQL
ข้อเสียของฐานข้อมูล NoSQL มีอะไรบ้าง ข้อเสียประการหนึ่งของฐานข้อมูล NoSQL คือขาดการสนับสนุนธุรกรรมกรด (ความเป็นอะตอม ความสม่ำเสมอ การแยกตัว ความทนทาน) ที่จำเป็นสำหรับธุรกรรมกรดในเอกสารหลายฉบับ แอปพลิเคชันจำนวนมากสามารถใช้อะตอมมิกแบบเร็กคอร์ดเดียวด้วยการออกแบบสคีมาที่เหมาะสม
Mongodb สามารถแยกชิ้นส่วนได้หรือไม่?
แบ็กเอนด์ MongoDB สร้างขึ้นบนสถาปัตยกรรมการแบ่งส่วนเพื่อรองรับชุดข้อมูลขนาดใหญ่มากและการดำเนินการปริมาณงานสูง ฐานข้อมูลขนาดใหญ่ ที่มีข้อมูลจำนวนมากหรือการเรียกใช้แอปพลิเคชันความเร็วสูงอาจทำให้ความจุของเซิร์ฟเวอร์ลดลง
เมื่อใช้ MongoDB Sharding คุณสามารถปรับขนาดฐานข้อมูลของคุณเพื่อจัดการกับผู้ใช้พร้อมกันจำนวนไม่จำกัด สิ่งนี้ทำได้โดยการเพิ่มทรูพุตของการอ่านและเขียน รวมถึงความจุในการจัดเก็บข้อมูลของระบบ มีคอลเลกชันมากมายที่คุณสามารถเลือกได้ เพื่อเพิ่มประสิทธิภาพคลัสเตอร์สูงสุด ให้เลือกคีย์ชาร์ดอย่างระมัดระวัง ฐานข้อมูล MongoDB NoSQL รองรับการกระจายข้อมูลสองประเภทข้ามคลัสเตอร์ที่มีความสามารถในการแบ่งส่วนข้อมูล ข้อมูลสามารถแบ่งออกเป็นช่วงโดยใช้ค่าคีย์ช่วงของชาร์ด การใช้แฮชแฮชสามารถคำนวณค่าของชาร์ดที่แฮชได้
ชาร์ดคีย์บางตัวอาจถูกปิด แต่ ค่าที่แฮช นั้นไม่น่าจะอยู่ในอันเดียวกัน เมื่อกำหนดค่าและเปิดการตั้งค่า Sharding ฐานข้อมูลจะสามารถเข้าถึงได้ ตรวจสอบให้แน่ใจว่า mongos ของคุณเชื่อมต่อแล้ว เศษของคุณจะถูกเพิ่มไปยังคลัสเตอร์ด้วย ทุกครั้งที่คุณดำเนินการตามขั้นตอนนี้ คุณจะได้ทำธุรกรรมหนึ่งรายการสำหรับแต่ละชิ้นส่วน จำเป็นต้องเปิดใช้งานการตั้งค่าชาร์ดดิ้งในฐานข้อมูลของคุณ จากนั้นใช้เมธอด sh.shardCollection() เพื่อแบ่งคอลเลกชันของคุณ ตอนนี้คุณได้สร้างคลัสเตอร์ที่แยกส่วนแรกแล้ว จนถึงขณะนี้ เราเตอร์ (อินสแตนซ์ mongos) ถูกใช้สำหรับการโต้ตอบกับแอปพลิเคชัน
MongoDB เป็นฐานข้อมูล NoSQL ที่ยอดเยี่ยมสำหรับธุรกิจขนาดเล็กถึงขนาดกลางที่ต้องการความสามารถในการปรับขนาดและประสิทธิภาพ นอกจากนี้ยังมีคุณลักษณะต่างๆ เช่น ชาร์ดดิ้ง ซึ่งช่วยให้สามารถกระจายเอกสารข้ามชาร์ดเพื่อปรับปรุงประสิทธิภาพ หากฐานข้อมูลของคุณมีขนาดถึง 200GB หรือมากกว่า กระบวนการสำรองและกู้คืนข้อมูลอาจช้าลง ดังนั้น เมื่อใดก็ตามที่ฐานข้อมูล MongoDB ของคุณขยายเกินขนาดที่กำหนด คุณควรปรึกษาผู้ให้บริการ MongoDB ของคุณเสมอ
ฐานข้อมูลใดบ้างที่รองรับ Sharding
โดยทั่วไปแล้วฐานข้อมูลที่รองรับการแบ่งส่วนย่อยได้รับการออกแบบมาให้ทำงานบนเซิร์ฟเวอร์หลายเครื่อง โดยแต่ละเซิร์ฟเวอร์จะโฮสต์ส่วนหนึ่งของฐานข้อมูล สิ่งนี้ทำให้ฐานข้อมูลสามารถกระจายไปตามเซิร์ฟเวอร์หลายเครื่อง ซึ่งสามารถปรับปรุงประสิทธิภาพและความสามารถในการปรับขนาดได้
การแตกย่อยใน Nosql
รูปแบบการแบ่งพาร์ติชันที่ใช้เทคโนโลยี NoSQL รวมถึงการแฮช การแบ่งพาร์ติชันเกี่ยวข้องกับการวางแต่ละพาร์ติชันในเซิร์ฟเวอร์ที่อาจแยกจากกัน – อาจเป็นไปได้ทั่วโลก ผู้ใช้จากทั่วโลกจะได้รับประโยชน์จากการปรับขนาดนี้ ซึ่งทำให้พวกเขาสามารถเข้าถึงส่วนต่าง ๆ ของชุดข้อมูลได้ในเวลาเดียวกัน
ชุดข้อมูลถูกแจกจ่ายโดยจัดเก็บไว้ในหลาย ๆ ฐานข้อมูลเพื่อให้ได้ผลลัพธ์ตามที่ต้องการ เนื่องจากวิธีการนี้ทำให้สามารถแบ่งชุดข้อมูลขนาดใหญ่ออกเป็นส่วนย่อยๆ ได้ จึงสามารถใช้โหนดข้อมูลหลายโหนดเพื่อจัดเก็บชุดข้อมูลเหล่านั้นได้ เนื่องจากข้อมูลถูกกระจายไปตามเครื่องหลายเครื่อง ฐานข้อมูล ที่แยกส่วนจึงสามารถรองรับคำขอได้มากกว่าที่เครื่องเดียวจะรับมือได้ การใช้ Sharding เพื่อจัดการกับโหลดที่เพิ่มขึ้นอย่างไม่จำกัด คุณสามารถเพิ่มปริมาณงาน ความจุพื้นที่จัดเก็บ และความพร้อมใช้งานในฐานข้อมูลของคุณได้ เมื่อปริมาณงานของคุณถูกเขียนขึ้นเพื่ออ่านเป็นหลัก การจำลองข้อมูลจะช่วยให้คุณได้รับประสิทธิภาพที่เพิ่มขึ้นอย่างมาก และคุณอาจไม่จำเป็นต้องใช้การแบ่งส่วนข้อมูลเลย จำเป็นต้องใช้สถาปัตยกรรมที่แตกต่างกันสำหรับปริมาณงานที่อิงจากการเขียนเป็นหลักหรือสถาปัตยกรรมที่ผสมผสานกับการอ่าน-เขียน มีการแบ่งประเภทและสถาปัตยกรรมที่แตกต่างกันมากมาย
การใช้ชาร์ดดิ้งตามช่วงเป็นวิธีการแบ่งพาร์ติชันแนวนอนที่ง่ายและตรงไปตรงมา อย่างไรก็ตาม ประสิทธิภาพจะพิจารณาจากความพร้อมของคีย์ที่เหมาะสมและการเลือกช่วงที่เหมาะสม เรกคอร์ดการแบ่งกลุ่มแบบแฮชหรือแบบอัลกอริทึมใช้เป็นอินพุต โดยที่ฟังก์ชันแฮชหรืออัลกอริทึมถูกใช้เพื่อสร้างเอาต์พุตหรือค่าแฮช ข้อมูลสามารถรักษาไว้ในพื้นที่ทางกายภาพเดียวได้โดยใช้การแบ่งตามแฮช ใน ฐานข้อมูลเชิงสัมพันธ์ ข้อมูล ที่เกี่ยวข้องกับตารางใดตารางหนึ่งสามารถกระจายไปทั่วตารางอื่นๆ ได้ แม้ว่าจะไม่สามารถรับคีย์ที่เหมาะสมได้ แต่การแฮชอินพุตจะช่วยให้มีการกระจายข้อมูลอย่างสม่ำเสมอทั่วทั้งชาร์ด สามารถช่วยในการดำเนินการออกอากาศที่ลดลงรวมทั้งเพิ่มประสิทธิภาพ บริการชาร์ดดิ้งตามภูมิศาสตร์ยังเก็บข้อมูลที่เกี่ยวข้องไว้ในที่เดียวบนเซิร์ฟเวอร์เครื่องเดียว ส่วนแบ่งข้อมูลระยะไกลคือชิ้นส่วนที่กระจายตามพื้นที่ทางภูมิศาสตร์ ซึ่งคีย์สำหรับคีย์คือคีย์ที่ระบุตำแหน่งทางภูมิศาสตร์สำหรับชิ้นส่วนดังกล่าว มีตัวเลือกอื่นๆ อีกจำนวนมากที่ไม่ได้กล่าวถึงในบทความนี้สำหรับการจัดสรร geoshards
Sharding ใน SQL คืออะไร?
ที่เก็บข้อมูลสามารถกระจายไปยังหลายฐานข้อมูลผ่านวิธีการแฮชแล้วจัดเก็บไว้ในเครื่องหลายเครื่อง ซึ่งช่วยให้สามารถแยกชุดข้อมูลที่ใหญ่กว่าออกเป็นชิ้นเล็กๆ และจัดเก็บไว้ในโหนดข้อมูลหลายโหนด ซึ่งเป็นการเพิ่มความจุโดยรวมของระบบ
อัลกอริทึมนี้ไม่รับประกันข้อมูลที่แบ่งพาร์ติชันเท่าๆ กัน
อัลกอริทึมนี้ ตามอัลกอริทึมนี้รับประกันว่าข้อมูลจะกระจายเท่าๆ กันในชาร์ด แต่ไม่รับประกันว่าข้อมูลจะกระจายเท่าๆ กันในชาร์ด แถวในคอลัมน์พาร์ติชันที่มีชื่อข้อมูล user_id จะถูกกระจายเท่าๆ กันในห้าชาร์ด อย่างไรก็ตาม ค่าข้อมูลสำหรับห้าส่วนจะไม่แบ่งเท่าๆ กัน
Mongobb ใช้ Sharding หรือไม่?
การใช้เทคนิคต่างๆ ร่วมกัน ทำให้เครื่องหลายเครื่องสามารถแบ่งปันข้อมูลผ่านวิธีการ Sharding เมื่อปรับใช้ชุดข้อมูลขนาดใหญ่และดำเนินการในปริมาณมาก MongoDB จะใช้การแบ่งส่วนข้อมูล ระบบฐานข้อมูลที่ มีข้อมูลจำนวนมากหรือแอปพลิเคชันที่ต้องการทรูพุตสูงอาจใช้พื้นที่จัดเก็บจำนวนมาก
อนาคตของ Sharding: Postgresql
วางแผนสำหรับอนาคต ไม่เพียงแต่ปรับใช้โซลูชันชาร์ดดิ้งเท่านั้น แต่ยังเป็นขั้นตอนที่จำเป็นอีกด้วย เนื่องจากเป็นส่วนหนึ่งของกระบวนการ จำเป็นต้องมีการปรับแต่งและเพิ่มประสิทธิภาพเป็นประจำ คุณควรทราบว่าโซลูชันการแบ่งส่วนข้อมูลในปัจจุบันมีการพัฒนาอย่างรวดเร็ว และคุณควรติดตามข้อมูลล่าสุดอยู่เสมอ PostgreSQL มีความก้าวหน้าอย่างมากในด้าน Sharding Space ในช่วง 2-3 ปีที่ผ่านมา ดังนั้นหากคุณต้องการโซลูชันที่สามารถใช้กับหลายแพลตฟอร์มได้ คุณควรพิจารณาใช้อย่างจริงจัง
Nosql Sharding Vs การแบ่งพาร์ติชัน
การแบ่งพาร์ติชันและอัลกอริทึมสำหรับการจัดเรียงข้อมูลชุดใหญ่ออกเป็นส่วนย่อยนั้นคล้ายคลึงกัน ข้อมูลถูกแบ่งพาร์ติชันเพื่อให้สามารถกระจายไปยังคอมพิวเตอร์หลายเครื่อง ในขณะที่การแบ่งส่วนช่วยให้สามารถกระจายข้อมูลไปยังคอมพิวเตอร์หลายเครื่องได้ โดยทั่วไป การแบ่งพาร์ติชันข้อมูลจะแบ่งออกเป็นส่วนย่อยตาม อินสแตนซ์ฐานข้อมูลเดียว
การแบ่งพาร์ติชันโดยการลบเป็นพาร์ติชันประเภทหนึ่งนอกเหนือจากการแบ่งพาร์ติชันในแนวนอน อีกวิธีหนึ่งคือพาร์ติชันแนวตั้ง ซึ่งคุณแบ่งตารางออกเป็นชิ้นเล็กๆ เมื่อคุณจำลองพาร์ติชันแนวตั้ง จะเรียกว่าการแบ่งพาร์ติชันตามแนวตั้ง หากต้องการแบ่งข้อมูล ให้คัดลอกสคีมา แล้วใช้คีย์ชาร์ด ต่อไปนี้เป็นตัวอย่างที่เหมาะสมในการแบ่งตาราง เมื่อมีการแบ่งพาร์ติชันข้อมูล การสืบค้นมักจะง่ายกว่า สมมติว่าแอ็พพลิเคชันมีตารางใบสั่งที่มีบันทึกประวัติของใบสั่ง และตารางนี้ถูกแบ่งพาร์ติชันทุกสัปดาห์ เมื่อคุณร้องขอคำสั่งซื้อเป็นเวลาหนึ่งสัปดาห์ คุณจะสามารถเข้าถึงพาร์ติชันของตารางคำสั่งซื้อได้เพียงพาร์ติชันเดียวเท่านั้น ขั้นตอนการตัดพาร์ติชันสำหรับการสืบค้นนี้ในทางทฤษฎีสามารถเปิดใช้งานให้ทำงานเร็วขึ้น 100 เท่า