ไม่มีสิ่งเช่น NoSQL!
NoSQL เป็นคำศัพท์
เป็นเวลาหลายทศวรรษที่ผู้คนพูดถึงฐานข้อมูลพวกเขาหมายถึงฐานข้อมูลเชิงสัมพันธ์ และเมื่อผู้คนพูดถึงฐานข้อมูลเชิงสัมพันธ์พวกเขาหมายถึงคนที่คุณควบคุมด้วยภาษาคิวรีที่มีโครงสร้างของ Edgar F. Codd กำลังจัดเก็บข้อมูลด้วยวิธีอื่นไหม บ้า! สิ่งอื่นใดก็แค่ไฟล์แฟล็ต
แต่ในช่วงไม่กี่ปีที่ผ่านมาผู้คนเริ่มตั้งคำถามกับความเชื่อนี้ ผู้คนสงสัยว่าตารางที่มีแถวและคอลัมน์เป็นวิธีเดียวที่จะแสดงข้อมูลหรือไม่ ผู้คนเริ่มคิดและเขียนโค้ดและเกิดแนวคิดใหม่มากมายในการจัดระเบียบข้อมูล และพวกเขาก็เริ่มสร้างระบบฐานข้อมูลใหม่ที่ออกแบบมาสำหรับวิธีใหม่ในการทำงานกับข้อมูล
ปรัชญาของฐานข้อมูลเหล่านี้แตกต่างกัน แต่สิ่งหนึ่งที่ฐานข้อมูลทั้งหมดเหล่านี้มีเหมือนกันคือว่า Structured Query Language ไม่เหมาะสมสำหรับการใช้งานอีกต่อไป ดังนั้นแต่ละฐานข้อมูลแทนที่ SQL ด้วยภาษาคิวรีของตนเอง ดังนั้นคำว่า NoSQL จึงถือกำเนิดขึ้นเป็นฉลากสำหรับเทคโนโลยีฐานข้อมูลทั้งหมดที่ท้าทายรูปแบบฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิม
ดังนั้นฐานข้อมูล NoSQL มีอะไรที่เหมือนกัน?
จริงๆแล้วไม่มาก
คุณมักจะได้ยินวลีที่ชอบ:
- NoSQL สามารถปรับขนาดได้!
- NoSQL สำหรับ BigData!
- NoSQL ละเมิด ACID!
- NoSQL เป็นที่เก็บคีย์ / ค่าที่ได้รับเกียรติ!
มันเป็นเรื่องจริงเหรอ? บางคำสั่งเหล่านี้อาจเป็นจริงสำหรับฐานข้อมูลบางตัวที่เรียกว่า NoSQL แต่ทุกคำสั่งก็เป็นเท็จด้วยอย่างน้อยอีกคำหนึ่ง จริงๆแล้วสิ่งเดียวที่ฐานข้อมูล NoSQL มีเหมือนกันคือมันเป็นฐานข้อมูลที่ไม่ได้ใช้ SQL แค่นั้นแหละ. สิ่งเดียวที่กำหนดพวกเขาคือสิ่งที่ทำให้พวกเขาแตกต่างจากกัน
แล้วฐานข้อมูล NoSQL แตกต่างกันอย่างไร?
ดังนั้นเราจึงเห็นได้ชัดว่าฐานข้อมูลทั้งหมดที่มักจะเรียกว่า NoSQL นั้นแตกต่างกันมากเกินกว่าที่จะประเมินพวกมันได้ แต่ละคนจะต้องได้รับการประเมินแยกต่างหากเพื่อตัดสินใจว่าพวกเขาเหมาะสมในการแก้ปัญหาเฉพาะหรือไม่ แต่เราจะเริ่มที่ไหน โชคดีที่ฐานข้อมูล NoSQL สามารถจัดกลุ่มเป็นบางหมวดหมู่ได้ซึ่งเหมาะสำหรับกรณีการใช้งานที่แตกต่างกัน:
เอกสารที่มุ่งเน้น
ตัวอย่าง: MongoDB, CouchDB
จุดแข็ง: ข้อมูลที่ต่างกัน, การทำงานเชิงวัตถุ, การพัฒนาที่คล่องตัว
ข้อได้เปรียบของพวกเขาคือพวกเขาไม่ต้องการโครงสร้างข้อมูลที่สอดคล้องกัน พวกมันมีประโยชน์เมื่อความต้องการของคุณและรูปแบบฐานข้อมูลของคุณเปลี่ยนแปลงตลอดเวลาหรือเมื่อคุณกำลังจัดการกับชุดข้อมูลที่อยู่ด้วยกัน แต่ยังดูแตกต่างกันมาก เมื่อคุณมีตารางจำนวนมากที่มีสองคอลัมน์เรียกว่า "key" และ "value" สิ่งเหล่านี้อาจคุ้มค่าที่จะดู
ฐานข้อมูลกราฟ
ตัวอย่าง: Neo4j, GiraffeDB
จุดแข็ง: การทำเหมืองข้อมูล
ในขณะที่ฐานข้อมูล NoSQL ส่วนใหญ่ละทิ้งแนวคิดในการจัดการความสัมพันธ์ของข้อมูล แต่ฐานข้อมูลเหล่านี้ยอมรับมากกว่าฐานข้อมูลเชิงสัมพันธ์ที่เรียกว่า
จุดเน้นของพวกเขาคือการกำหนดข้อมูลตามความสัมพันธ์กับข้อมูลอื่น ๆ เมื่อคุณมีตารางจำนวนมากที่มีคีย์หลักซึ่งเป็นคีย์หลักของอีกสองตาราง (และอาจมีข้อมูลที่อธิบายความสัมพันธ์ระหว่างพวกเขา) ดังนั้นสิ่งเหล่านี้อาจเป็นสิ่งที่คุณต้องการ
ร้านค้ามูลค่าคีย์
ตัวอย่าง: Redis, Cassandra, MemcacheDB
จุดแข็ง: ค้นหาค่าได้อย่างรวดเร็วด้วยปุ่มที่รู้จัก
มันง่ายมาก แต่ก็ทำให้ใช้งานได้ง่ายและรวดเร็ว เมื่อคุณไม่จำเป็นต้องใช้โพรซีเดอร์ข้อ จำกัด ทริกเกอร์และคุณลักษณะฐานข้อมูลขั้นสูงทั้งหมดและคุณต้องการเพียงแค่การจัดเก็บและเรียกค้นข้อมูลของคุณอย่างรวดเร็ว
น่าเสียดายที่พวกเขาคิดว่าคุณรู้ว่าคุณกำลังมองหาอะไร คุณต้องการรายละเอียดของ User157641? ไม่มีปัญหาจะใช้เวลาเพียงไมโครวินาทีเท่านั้น แต่เมื่อคุณต้องการชื่อผู้ใช้ทุกคนที่มีอายุระหว่าง 16 ถึง 24 ปีจะมี "วาฟเฟิล" เป็นอาหารโปรดและลงชื่อเข้าใช้ใน 24 ชั่วโมงที่ผ่านมา โชคดี เมื่อคุณไม่มีคีย์ที่แน่นอนและไม่ซ้ำใครสำหรับผลลัพธ์ที่ระบุคุณจะไม่สามารถนำมันออกมาจากร้านค้า KV ของคุณได้อย่างง่ายดาย
SQL ล้าสมัยหรือไม่
ผู้สนับสนุน NoSQL บางคนอ้างว่าฐานข้อมูล NoSQL ที่พวกเขาชื่นชอบเป็นวิธีใหม่ในการทำสิ่งต่างๆและ SQL เป็นเรื่องในอดีต
ถูกต้องหรือไม่
ไม่แน่นอนพวกเขาไม่ได้ ในขณะที่มีปัญหา SQL ไม่เหมาะ แต่ก็ยังมีจุดแข็ง แบบจำลองข้อมูลจำนวนมากจะถูกนำเสนอเป็นชุดของตารางที่อ้างอิงซึ่งกันและกันได้ดีที่สุด โดยเฉพาะอย่างยิ่งเนื่องจากโปรแกรมเมอร์ฐานข้อมูลส่วนใหญ่ได้รับการฝึกฝนมานานหลายสิบปีในการคิดข้อมูลในลักษณะที่สัมพันธ์กันและพยายามที่จะสื่อความคิดนี้เข้ากับเทคโนโลยีใหม่ที่ไม่ได้ผลิตขึ้นมา
ฐานข้อมูล NoSQL ไม่ได้ถูกแทนที่สำหรับ SQL - เป็นทางเลือก
ระบบนิเวศซอฟต์แวร์ส่วนใหญ่รอบฐานข้อมูล NoSQL ที่แตกต่างกันยังไม่สมบูรณ์ ในขณะที่มีความก้าวหน้าคุณยังไม่ได้มีเครื่องมือเสริมที่เป็นผู้ใหญ่และมีประสิทธิภาพเท่าที่มีอยู่สำหรับฐานข้อมูล SQL ที่เป็นที่นิยม
นอกจากนี้ยังมีความรู้เพิ่มเติมอีกมากมายสำหรับ SQL รุ่นของนักวิทยาศาสตร์คอมพิวเตอร์ใช้เวลาหลายสิบปีของการประกอบอาชีพในการวิจัยมุ่งเน้นไปที่ฐานข้อมูลเชิงสัมพันธ์และมันแสดงให้เห็น: วรรณกรรมที่เขียนเกี่ยวกับฐานข้อมูล SQL และการสร้างแบบจำลองข้อมูลเชิงสัมพันธ์ทั้งในทางปฏิบัติและทางทฤษฎี วิธีสร้างฐานข้อมูลเชิงสัมพันธ์สำหรับข้อมูลของคุณเป็นหัวข้อที่ได้รับการวิจัยเป็นอย่างดีมันยากที่จะหาเคสที่มีมุมซึ่งไม่มีแนวปฏิบัติที่ดีที่สุดสำหรับหนังสือ
ฐานข้อมูล NoSQL ส่วนใหญ่ยังอยู่ในช่วงเริ่มต้น เรายังคงหาวิธีที่ดีที่สุดในการใช้งาน