ฉันได้เรียนรู้เกี่ยวกับฐานข้อมูล NoSQL เป็นเวลาหนึ่งสัปดาห์แล้ว
ฉันเข้าใจถึงข้อดีของฐานข้อมูล NoSQL และกรณีการใช้งานจำนวนมากที่ยอดเยี่ยม
แต่บ่อยครั้งที่คนเขียนบทความราวกับว่า NoSQL สามารถแทนที่ฐานข้อมูลเชิงสัมพันธ์ได้ และมีจุดที่ฉันไม่สามารถไปรอบ ๆ :
ฐานข้อมูล NoSQL เป็นที่เก็บคีย์ - ค่า (มัก)
แน่นอนว่าเป็นไปได้ที่จะเก็บทุกอย่างไว้ในที่เก็บคีย์ - ค่า (โดยการเข้ารหัสข้อมูลใน JSON, XML, อะไรก็ตาม) แต่ปัญหาที่ฉันเห็นคือคุณต้องได้รับข้อมูลจำนวนหนึ่งที่ตรงกับเกณฑ์เฉพาะในหลาย ๆ ใช้กรณี ในฐานข้อมูล NoSQL คุณมีเกณฑ์เดียวคุณสามารถค้นหาได้อย่างมีประสิทธิภาพ - กุญแจ ฐานข้อมูลเชิงสัมพันธ์ได้รับการปรับปรุงเพื่อค้นหาค่าใด ๆ ในแถวข้อมูลได้อย่างมีประสิทธิภาพ
ดังนั้นฐานข้อมูล NoSQL จึงไม่ใช่ทางเลือกสำหรับการเก็บข้อมูลที่ต้องการค้นหาเนื้อหาของพวกเขา หรือฉันเข้าใจผิดบางอย่าง?
ตัวอย่าง:
คุณต้องจัดเก็บข้อมูลผู้ใช้สำหรับ webshop
ในฐานข้อมูลเชิงสัมพันธ์คุณเก็บผู้ใช้ทุกคนเป็นแถวในusers
ตารางโดยมี ID, ชื่อ, ประเทศของเขา ฯลฯ
ในฐานข้อมูล NoSQL คุณจะเก็บ ID ของผู้ใช้แต่ละคนเป็นกุญแจและข้อมูลทั้งหมดของเขา (เข้ารหัสใน JSON ฯลฯ ) เป็นค่า
ดังนั้นถ้าคุณต้องการให้ผู้ใช้ทุกคนจากประเทศใดประเทศหนึ่ง (ด้วยเหตุผลบางอย่างที่นักการตลาดจำเป็นต้องรู้บางอย่างเกี่ยวกับพวกเขา) มันง่ายที่จะทำในฐานข้อมูลเชิงสัมพันธ์ แต่ไม่มีประสิทธิภาพมากในฐานข้อมูล NoSQL เพราะคุณต้อง ได้รับทุกการใช้งานแยกทุกข้อมูลและตัวกรอง
ฉันไม่ได้บอกว่ามันเป็นไปไม่ได้แต่มันก็ยากกว่ามากและฉันคิดว่ามันไม่ได้ผลถ้าคุณต้องการค้นหาในข้อมูลของ NoSQL
คุณสามารถสร้างรหัสสำหรับแต่ละประเทศที่จัดเก็บคีย์ของผู้ใช้ทุกคนที่อาศัยอยู่ในประเทศนี้และรับผู้ใช้ของประเทศที่ระบุได้โดยรับกุญแจทั้งหมดที่เก็บไว้ในคีย์สำหรับประเทศนี้ แต่ฉันคิดว่าเทคนิคนี้ทำให้ชุดข้อมูลที่ซับซ้อนยิ่งซับซ้อน - ยากต่อการใช้และไม่มีประสิทธิภาพเท่ากับการสืบค้นฐานข้อมูล SQL ดังนั้นฉันคิดว่ามันไม่ใช่วิธีที่คุณจะใช้ในการผลิต หรือมันคืออะไร?
ฉันไม่แน่ใจว่าฉันเข้าใจผิดบางอย่างหรือมองข้ามแนวคิดหรือแนวปฏิบัติที่ดีที่สุดเพื่อจัดการกรณีการใช้งานดังกล่าว บางทีคุณอาจแก้ไขข้อความของฉันและตอบคำถามของฉัน