NoSQL คืออะไร
ตามคำจำกัดความ Wiki อย่างเป็นทางการ:“A NoSQL (แต่เดิมอ้างอิงถึงฐานข้อมูล “ไม่ใช่ SQL” หรือ “ไม่สัมพันธ์กัน”) จัดให้มีกลไกสำหรับการจัดเก็บและการดึงข้อมูลที่จำลองด้วยวิธีการอื่นนอกเหนือจากความสัมพันธ์แบบตารางที่ใช้ในฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ประกอบด้วยเทคโนโลยีฐานข้อมูลที่หลากหลายซึ่งพัฒนาขึ้นเพื่อตอบสนองต่อปริมาณข้อมูลที่จัดเก็บเกี่ยวกับผู้ใช้ วัตถุและผลิตภัณฑ์เพิ่มขึ้น ความถี่ในการเข้าถึงข้อมูลนี้ และความต้องการด้านประสิทธิภาพและการประมวลผล โดยทั่วไป ฐานข้อมูล NoSQL มีโครงสร้างเป็นคู่คีย์-ค่า ฐานข้อมูลแบบกราฟ โครงสร้างเชิงเอกสารหรือเชิงคอลัมน์
กว่าทศวรรษและหลายทศวรรษของการพัฒนาซอฟต์แวร์ เราใช้ฐานข้อมูลในรูปแบบของ SQL (Structured Query Language) ที่เราจัดเก็บข้อมูลของเราในตารางเชิงสัมพันธ์ อย่างไรก็ตาม ในช่วงไม่กี่ปีที่ผ่านมาด้วยการใช้งานอินเทอร์เน็ตและ Web 2.0 ที่เพิ่มขึ้นอย่างมาก ฐานข้อมูลได้เติบโตขึ้นเป็นพันเทราไบต์ แอปพลิเคชันเช่น Facebook, Google, Amazon, Watsapp เป็นต้น ก่อให้เกิดยุคใหม่ของการจัดการฐานข้อมูล ซึ่งเป็นไปตามแนวทางการออกแบบที่เรียบง่าย ความเร็ว และการขยายขนาดเร็วกว่าฐานข้อมูลแบบเดิม ฐานข้อมูลดังกล่าวใช้ในข้อมูลขนาดใหญ่ แอปพลิเคชันขนาดใหญ่แบบเรียลไทม์ และการวิเคราะห์
ตัวอย่างเช่น ให้พิจารณาว่าคุณมีแอปพลิเคชันบล็อกที่เก็บบล็อกของผู้ใช้ ในตอนนี้ สมมติว่าคุณต้องรวมคุณลักษณะใหม่บางอย่างในแอปพลิเคชันของคุณ เช่น ผู้ใช้ที่ชอบโพสต์ในบล็อกเหล่านี้ หรือแสดงความคิดเห็นเกี่ยวกับคุณลักษณะเหล่านี้ หรือชอบความคิดเห็นเหล่านี้ ด้วยการใช้งาน RDBMS ทั่วไป สิ่งนี้จะต้องมีการยกเครื่องใหม่ทั้งหมดสำหรับการออกแบบฐานข้อมูลที่มีอยู่ของคุณ อย่างไรก็ตาม หากคุณใช้ NoSQL ในสถานการณ์ดังกล่าว คุณสามารถปรับเปลี่ยนโครงสร้างข้อมูลของคุณให้ตรงกับข้อกำหนดที่คล่องตัวเหล่านี้ได้อย่างง่ายดาย ด้วย NoSQL คุณสามารถเริ่มแทรกข้อมูลใหม่นี้ในโครงสร้างที่มีอยู่ได้โดยตรงโดยไม่ต้องสร้างคอลัมน์ที่กำหนดไว้ล่วงหน้าหรือโครงสร้างที่กำหนดไว้ล่วงหน้า
ความท้าทายของ RDBMS
-
RDBMS ใช้โครงสร้างข้อมูลที่กำหนดไว้อย่างดี และถือว่าข้อมูลมีความสม่ำเสมอเป็นส่วนใหญ่
-
จำเป็นต้องกำหนดสคีมาของแอปพลิเคชันของคุณและคุณสมบัติของแอปพลิเคชัน (คอลัมน์ ประเภท ฯลฯ) ก่อนสร้างแอปพลิเคชัน ซึ่งไม่ตรงกับแนวทางการพัฒนาที่คล่องตัวสำหรับแอปพลิเคชันที่มีไดนามิกสูง
-
เมื่อข้อมูลเริ่มมีขนาดใหญ่ขึ้น คุณต้องปรับขนาดฐานข้อมูลของคุณในแนวตั้ง นั่นคือ การเพิ่มความจุให้กับเซิร์ฟเวอร์ที่มีอยู่
ประโยชน์ของ NoSQL บน RDBMS
สคีมาน้อยลง −
ฐานข้อมูล NoSQL ที่ไม่มีสคีมาไม่ได้กำหนดโครงสร้างข้อมูลที่เข้มงวด
ไดนามิกและเปรียว −
ฐานข้อมูล NoSQL มีแนวโน้มที่ดีที่จะเติบโตแบบไดนามิกตามข้อกำหนดที่เปลี่ยนแปลงไป สามารถจัดการข้อมูลที่มีโครงสร้าง กึ่งมีโครงสร้าง และไม่มีโครงสร้าง
ชั่งในแนวนอน −
ตรงกันข้ามกับฐานข้อมูล SQL ที่ปรับขนาดในแนวตั้ง NoSQL จะปรับขนาดในแนวนอนโดยเพิ่มเซิร์ฟเวอร์มากขึ้น และใช้แนวคิดของการแบ่งส่วนข้อมูลและการจำลองแบบ ลักษณะการทำงานของ NoSQL นี้เหมาะกับบริการการประมวลผลแบบคลาวด์ เช่น Amazon Web Services (AWS) ซึ่งช่วยให้คุณจัดการเซิร์ฟเวอร์เสมือนซึ่งสามารถขยายได้ตามต้องการในแนวนอน
ประสิทธิภาพที่ดีขึ้น −
ฐานข้อมูล NoSQL ทั้งหมดอ้างว่าให้ประสิทธิภาพที่ดีขึ้นและเร็วขึ้นเมื่อเทียบกับการใช้งาน RDBMS แบบเดิม
เมื่อพูดถึงข้อจำกัด เนื่องจาก NoSQL เป็นฐานข้อมูลทั้งชุด (และไม่ใช่ฐานข้อมูลเดียว) ข้อจำกัดจึงแตกต่างกันไปในแต่ละฐานข้อมูล ฐานข้อมูลเหล่านี้บางส่วนไม่รองรับธุรกรรม ACID ในขณะที่บางฐานข้อมูลอาจขาดความน่าเชื่อถือ แต่แต่ละคนก็มีจุดแข็งของตัวเองเนื่องจากเหมาะสมกับความต้องการเฉพาะ
ประเภทของฐานข้อมูล NoSQL
ฐานข้อมูลเชิงเอกสาร −
ฐานข้อมูลเชิงเอกสารปฏิบัติต่อเอกสารโดยรวม และหลีกเลี่ยงการแยกเอกสารเป็นคู่ชื่อ/ค่าที่เป็นส่วนประกอบ ในระดับคอลเลกชัน จะช่วยให้สามารถรวบรวมชุดเอกสารที่หลากหลายไว้ในคอลเล็กชันเดียวได้ ฐานข้อมูลเอกสารอนุญาตให้สร้างดัชนีของเอกสารโดยอิงจากตัวระบุหลักเท่านั้น แต่ยังรวมถึงคุณสมบัติของเอกสารด้วย ฐานข้อมูลเอกสารโอเพนซอร์ซต่างๆ มีให้บริการในปัจจุบัน แต่ตัวเลือกที่โดดเด่นที่สุดคือ MongoDB และ CouchDB อันที่จริง MongoDB ได้กลายเป็นหนึ่งในฐานข้อมูล NoSQL ที่ได้รับความนิยมมากที่สุด
ฐานข้อมูลตามกราฟ −
ฐานข้อมูลกราฟใช้โครงสร้างกราฟที่มีโหนด ขอบ และคุณสมบัติเพื่อแสดงและจัดเก็บข้อมูล ตามคำจำกัดความ ฐานข้อมูลแบบกราฟคือระบบจัดเก็บข้อมูลใดๆ ที่มีส่วนใกล้เคียงที่ไม่มีดัชนี ซึ่งหมายความว่าทุกองค์ประกอบมีตัวชี้โดยตรงไปยังองค์ประกอบที่อยู่ติดกันและไม่จำเป็นต้องค้นหาดัชนี ฐานข้อมูลกราฟทั่วไปที่สามารถจัดเก็บกราฟใดๆ ได้จะแตกต่างจากฐานข้อมูลกราฟเฉพาะทาง เช่น ฐานข้อมูลสามแห่งและฐานข้อมูลเครือข่าย ดัชนีใช้สำหรับการข้ามผ่านกราฟ
ฐานข้อมูลตามคอลัมน์ −
การจัดเก็บข้อมูลเชิงคอลัมน์ช่วยให้สามารถจัดเก็บข้อมูลได้อย่างมีประสิทธิภาพ หลีกเลี่ยงการใช้พื้นที่เมื่อจัดเก็บค่า Null โดยการไม่จัดเก็บคอลัมน์เมื่อไม่มีค่าสำหรับคอลัมน์นั้น ข้อมูลแต่ละหน่วยถือได้ว่าเป็นชุดของคู่คีย์/ค่า โดยที่ตัวหน่วยนั้นจะถูกระบุด้วยตัวระบุหลัก ซึ่งมักเรียกว่าคีย์หลัก Bigtable และโคลนของมันมักจะเรียกคีย์หลักนี้ว่าคีย์แถว
ฐานข้อมูลค่าคีย์ −
คีย์ของคู่คีย์/ค่าเป็นค่าที่ไม่ซ้ำกันในชุดและสามารถค้นหาเพื่อเข้าถึงข้อมูลได้อย่างง่ายดาย คู่คีย์/ค่ามีหลายประเภท:บางคู่เก็บข้อมูลในหน่วยความจำ และบางคู่ให้ความสามารถในการคงข้อมูลไว้ในดิสก์ ที่เก็บคีย์/ค่าที่เรียบง่ายแต่ทรงพลังคือ Berkeley DB ของ Oracle
ฐานข้อมูล NoSQL ยอดนิยม
ให้เราสรุปฐานข้อมูล NoSQL ยอดนิยมที่จัดอยู่ในหมวดหมู่ด้านบนตามลำดับ
- ฐานข้อมูลเชิงเอกสาร − MongoDB, HBase, Cassandra, Amazon SimpleDB, Hypertable เป็นต้น
- ฐานข้อมูลตามกราฟ − Neo4j, OrientDB, Facebook Open Graph, FlockDB เป็นต้น
- ฐานข้อมูลตามคอลัมน์ − CouchDB, OrientDB ฯลฯ
- ฐานข้อมูลค่าคีย์ − Membase, Redis, MemcacheDB เป็นต้น
ฐานข้อมูล NoSQL ที่มาของรูปภาพ:getfilecloud.com
บทสรุป
ในบทความนี้ เราได้เรียนรู้ว่าเทคโนโลยีฐานข้อมูล NoSQL คืออะไรและแตกต่างจากการนำ RDBMS ไปใช้งานอย่างไร จากนั้นเราได้สำรวจฐานข้อมูล NoSQL ประเภทต่างๆ แอปพลิเคชัน และฐานข้อมูลยอดนิยมของแต่ละประเภท
องค์กรจำนวนมากในปัจจุบันกำลังปรับตัวเข้ากับฐานข้อมูลดังกล่าวสำหรับชุดข้อมูลขนาดใหญ่และแอปพลิเคชันระดับสูง นี่แสดงให้เห็นว่า NoSQL จะเป็นอนาคตที่ยิ่งใหญ่อย่างแน่นอนในเทคโนโลยีเว็บและฐานข้อมูล ซึ่งมีศักยภาพที่จะทำลายมรดก RDBMS ที่สืบทอดมายาวนานหลายปี