ตัวย่อ NoSQL ถูกสร้างขึ้นในปี 1998 หลายคนคิดว่า NoSQL เป็นคำที่เสื่อมเสียซึ่งสร้างขึ้นเพื่อกระตุ้นที่ SQL ในความเป็นจริง คำนี้หมายถึงไม่ใช่แค่ SQL แนวคิดคือเทคโนโลยีทั้งสองสามารถอยู่ร่วมกันได้และแต่ละเทคโนโลยีก็มีที่ของมัน การเคลื่อนไหวของ NoSQL เป็นข่าวในช่วงไม่กี่ปีที่ผ่านมา เนื่องจากผู้นำ Web 2.0 จำนวนมากได้นำเทคโนโลยี NoSQL มาใช้ บริษัทต่างๆ เช่น Facebook, Twitter, Digg, Amazon, LinkedIn และ Google ล้วนใช้ NoSQL ไม่ทางใดก็ทางหนึ่ง มาแยกย่อย NoSQL เพื่อให้คุณสามารถอธิบายให้ CIO หรือแม้แต่เพื่อนร่วมงานของคุณฟังได้
NoSQL โผล่ออกมาจากความต้องการ
การจัดเก็บข้อมูล: ข้อมูลดิจิทัลที่เก็บไว้ทั่วโลกมีหน่วยวัดเป็นเอกซาไบต์ เอ็กซาไบต์เท่ากับหนึ่งพันล้านกิกะไบต์ (GB) ของข้อมูล ตาม Internet.com จำนวนข้อมูลที่จัดเก็บเพิ่มในปี 2549 คือ 161 เอ็กซาไบต์ เพียง 4 ปีต่อมาในปี 2010 ปริมาณข้อมูลที่จัดเก็บจะเกือบ 1,000 ExaBytes ซึ่งเพิ่มขึ้นมากกว่า 500% กล่าวอีกนัยหนึ่ง มีข้อมูลจำนวนมากถูกจัดเก็บไว้ในโลกและจะเพิ่มขึ้นเรื่อยๆ
ข้อมูลที่เชื่อมต่อถึงกัน: ข้อมูลยังคงเชื่อมต่อกันมากขึ้น การสร้างเว็บที่ได้รับการส่งเสริมในไฮเปอร์ลิงก์ บล็อกมี pingbacks และระบบเครือข่ายสังคมออนไลน์ที่สำคัญทุกระบบมีแท็กที่เชื่อมโยงสิ่งต่างๆ เข้าด้วยกัน ระบบหลักถูกสร้างขึ้นเพื่อเชื่อมต่อกัน
โครงสร้างข้อมูลที่ซับซ้อน: NoSQL สามารถจัดการโครงสร้างข้อมูลที่ซ้อนกันแบบลำดับชั้นได้อย่างง่ายดาย ในการทำสิ่งเดียวกันใน SQL ให้สำเร็จ คุณจะต้องมีตารางเชิงสัมพันธ์หลายตารางที่มีคีย์ทุกประเภท นอกจากนี้ยังมีความสัมพันธ์ระหว่างประสิทธิภาพและความซับซ้อนของข้อมูล ประสิทธิภาพอาจลดลงใน RDBMS แบบเดิมเมื่อเราจัดเก็บข้อมูลจำนวนมหาศาลที่จำเป็นในแอปพลิเคชันเครือข่ายสังคมและเว็บเชิงความหมาย
NoSQL คืออะไร?
ฉันเดาว่าวิธีหนึ่งที่จะกำหนด NoSQL คือการพิจารณาว่ามันไม่ใช่ ไม่ใช่ SQL และไม่สัมพันธ์กัน เช่นเดียวกับชื่อที่แนะนำ มันไม่ใช่การแทนที่ RDBMS แต่เป็นการชมเชย NoSQL ได้รับการออกแบบมาสำหรับพื้นที่เก็บข้อมูลแบบกระจายสำหรับความต้องการข้อมูลขนาดใหญ่มาก ลองนึกถึง Facebook ที่มีผู้ใช้ 500,000,000 คนหรือ Twitter ที่รวบรวมข้อมูลเทราบิตทุกวัน
ในฐานข้อมูล NoSQL ไม่มีสคีมาคงที่และไม่มีการรวม RDBMS "ขยายขนาด" โดยรับฮาร์ดแวร์ที่เร็วขึ้นและเร็วขึ้น และเพิ่มหน่วยความจำ ในทางกลับกัน NoSQL สามารถใช้ประโยชน์จาก "การขยายขนาด" การขยายขนาดหมายถึงการกระจายโหลดไปยังระบบสินค้าโภคภัณฑ์จำนวนมาก นี่คือส่วนประกอบของ NoSQL ที่ทำให้เป็นโซลูชันราคาไม่แพงสำหรับชุดข้อมูลขนาดใหญ่
หมวดหมู่ NoSQL
โลก NoSQL ปัจจุบันแบ่งออกเป็น 4 หมวดหมู่พื้นฐาน
- ร้านคีย์-ค่า มีพื้นฐานมาจาก Dynamo Paper ของ Amazon ซึ่งเขียนขึ้นในปี 2550 แนวคิดหลักคือการมีอยู่ของตารางแฮชซึ่งมีคีย์เฉพาะและตัวชี้ไปยังรายการข้อมูลเฉพาะ การแมปเหล่านี้มักจะมาพร้อมกับกลไกแคชเพื่อเพิ่มประสิทธิภาพสูงสุด
- คอลัมน์ร้านค้าสำหรับครอบครัว ถูกสร้างขึ้นเพื่อจัดเก็บและประมวลผลข้อมูลจำนวนมากที่แจกจ่ายผ่านเครื่องหลายเครื่อง ยังมีคีย์อยู่แต่จะชี้ไปที่หลายคอลัมน์ ในกรณีของ BigTable (โมเดล Column Family NoSQL ของ Google) แถวจะถูกระบุโดยคีย์แถวพร้อมข้อมูลที่จัดเรียงและจัดเก็บโดยคีย์นี้ คอลัมน์จัดเรียงตามกลุ่มคอลัมน์
- ฐานข้อมูลเอกสาร ได้รับแรงบันดาลใจจาก Lotus Notes และคล้ายกับร้านค้าคีย์-ค่า โมเดลนี้เป็นเอกสารที่มีการกำหนดเวอร์ชันโดยพื้นฐานแล้ว ซึ่งเป็นคอลเล็กชันของคอลเล็กชันคีย์-ค่าอื่นๆ เอกสารกึ่งโครงสร้างถูกจัดเก็บในรูปแบบเช่น JSON
- ฐานข้อมูลกราฟ s ถูกสร้างขึ้นด้วยโหนด ความสัมพันธ์ระหว่างบันทึกย่อและคุณสมบัติของโหนด แทนที่จะใช้ตารางของแถวและคอลัมน์และโครงสร้างที่เข้มงวดของ SQL เราจึงใช้แบบจำลองกราฟที่ยืดหยุ่นซึ่งสามารถปรับขนาดได้ในหลายเครื่อง
ผู้เล่น NoSQL รายใหญ่
ผู้เล่นหลักใน NoSQL เกิดขึ้นเนื่องจากองค์กรที่ยอมรับพวกเขาเป็นหลัก เทคโนโลยี NoSQL ที่ใหญ่ที่สุดบางส่วน ได้แก่:
- ไดนาโม: ไดนาโมถูกสร้างขึ้นโดย Amazon.com และเป็นฐานข้อมูล Key-Value NoSQL ที่โดดเด่นที่สุด Amazon ต้องการแพลตฟอร์มแบบกระจายที่ปรับขนาดได้สูงสำหรับธุรกิจอีคอมเมิร์ซของพวกเขา ดังนั้นพวกเขาจึงพัฒนา Dynamo Amazon S3 ใช้ไดนาโมเป็นกลไกการจัดเก็บข้อมูล
- แคสแซนดรา: Cassandra เป็นโอเพ่นซอร์สโดย Facebook และเป็นฐานข้อมูล NoSQL เชิงคอลัมน์
- BigTable: BigTable เป็นฐานข้อมูลเชิงคอลัมน์ที่เป็นกรรมสิทธิ์ของ Google Google อนุญาตให้ใช้ BigTable แต่สำหรับ Google App Engine เท่านั้น
- SimpleDB: SimpleDB เป็นฐานข้อมูลอื่นของ Amazon ใช้สำหรับ Amazon EC2 และ S3 ซึ่งเป็นส่วนหนึ่งของ Amazon Web Services ที่เรียกเก็บค่าธรรมเนียมตามการใช้งาน
- CouchDB: CouchDB และ MongoDB เป็นฐานข้อมูล NoSQL เชิงเอกสารแบบโอเพนซอร์ส
- Neo4J: Neo4j เป็นฐานข้อมูลกราฟโอเพ่นซอร์ส
การสืบค้น NoSQL
คำถามเกี่ยวกับวิธีการสืบค้นฐานข้อมูล NoSQL คือสิ่งที่นักพัฒนาส่วนใหญ่สนใจ อย่างไรก็ตาม ข้อมูลที่จัดเก็บในฐานข้อมูลขนาดใหญ่ไม่ได้ช่วยอะไรใคร ถ้าคุณไม่สามารถเรียกค้นและแสดงให้ผู้ใช้ปลายทางหรือบริการเว็บเห็น ฐานข้อมูล NoSQL ไม่ได้จัดเตรียมภาษาการสืบค้นข้อมูลระดับสูงเช่น SQL การสืบค้นฐานข้อมูลเหล่านี้เป็นข้อมูลเฉพาะรุ่นแทน
แพลตฟอร์ม NoSQL จำนวนมากอนุญาตให้ใช้อินเทอร์เฟซ RESTful กับข้อมูลได้ API แบบสอบถามข้อเสนออื่นๆ มีเครื่องมือสืบค้นข้อมูลสองสามรายการที่พัฒนาขึ้นซึ่งพยายามสืบค้นฐานข้อมูล NoSQL หลายฐานข้อมูล เครื่องมือเหล่านี้มักจะทำงานในหมวดหมู่ NoSQL เดียว ตัวอย่างหนึ่งคือ SPARQL SPARQL เป็นข้อกำหนดการสืบค้นแบบประกาศที่ออกแบบมาสำหรับฐานข้อมูลแบบกราฟ นี่คือตัวอย่างของการสืบค้น SPARQL ที่ดึง URL ของบล็อกเกอร์เฉพาะ (ได้รับความอนุเคราะห์จาก IBM):
PREFIX foaf:
SELECT ?url
FROM
WHERE {
?contributor foaf:name "Jon Foobar" .
?contributor foaf:weblog ?url .
}
อนาคตของ NoSQL
องค์กรที่มีความต้องการการจัดเก็บข้อมูลจำนวนมากกำลังมองหา NoSQL อย่างจริงจัง เห็นได้ชัดว่าแนวคิดนี้ไม่ได้รับแรงฉุดลากมากนักในองค์กรขนาดเล็ก ในการสำรวจที่จัดทำโดย Information Week 44% ของผู้เชี่ยวชาญด้านไอทีทางธุรกิจไม่เคยได้ยิน NoSQL นอกจากนี้ มีเพียง 1% ของผู้ตอบแบบสอบถามเท่านั้นที่รายงานว่า NoSQL เป็นส่วนหนึ่งของทิศทางเชิงกลยุทธ์ของพวกเขา เห็นได้ชัดว่า NoSQL มีที่ของมันในโลกที่เชื่อมต่อกันของเรา แต่จะต้องพัฒนาต่อไปเพื่อให้ได้รับความสนใจจากมวลชนที่หลายคนคิดว่าน่าจะมี