Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL

NoSQL คืออะไร และมันเป็นเทรนด์ใหญ่ถัดไปของฐานข้อมูลหรือไม่?


NoSQL คืออะไร?

ตามนิยามทางการของ Wiki: "ฐานข้อมูล NoSQL (ตั้งต้นหมายถึง "non SQL" หรือ "non relational") ให้กลไกสำหรับการจัดเก็บและดึงข้อมูลที่ถูกสร้างแบบจำลองด้วยวิธีอื่นนอกเหนือจากความสัมพันธ์แบบตารางที่ใช้ในฐานข้อมูลเชิงสัมพันธ์ (RDBMS) มันครอบคลุมเทคโนโลยีฐานข้อมูลหลากหลายที่พัฒนาขึ้นตอบสนองต่อการเพิ่มขึ้นของปริมาณข้อมูลที่จัดเก็บเกี่ยวกับผู้ใช้ วัตถุ และผลิตภัณฑ์ ความถี่ในการเข้าถึงข้อมูลนี้ และความต้องการด้านประสิทธิภาพและการประมวลผล โดยทั่วไป ฐานข้อมูล NoSQL โครงสร้างเป็น key-value pair, graph database, document-oriented หรือ column-oriented structure

ตลอดทศวรรษของการพัฒนาซอฟต์แวร์ เราใช้ฐานข้อมูลในรูป SQL (Structured Query Language) ที่เราจัดเก็บข้อมูลในตารางเชิงสัมพันธ์ อย่างไรก็ตาม ในไม่กี่ปีที่ผ่านมา ด้วยการเพิ่มขึ้นอย่างมากของการใช้อินเทอร์เน็ตและแอปพลิเคชัน Web 2.0 ฐานข้อมูลโตเป็นพันพันเทราไบต์ แอปพลิเคชันอย่าง Facebook, Google, Amazon, WhatsApp ฯลฯ ก่อให้เกิดยุคใหม่ของการจัดการฐานข้อมูลที่ปฏิบัติตามแนวทางการออกแบบเรียบง่าย ความเร็ว และการขยายตัวเร็วกว่าฐานข้อมูลดั้งเดิม ฐานข้อมูลแบบนี้ใช้ใน big data, massive real-time applications และ analytics

ตัวอย่างเช่น สมมติว่าคุณมีแอปพลิเคชันบล็อกเก็บบล็อกของผู้ใช้ ตอนนี้สมมติว่าคุณต้องรวมฟีเจอร์ใหม่ เช่น ผู้ใช้กดไลก์โพสต์บล็อกเหล่านี้ หรือคอมเมนต์ หรือไลก์ความคิดเห็นเหล่านี้ ด้วยการนำ RDBMS แบบปกติมาใช้ จะต้องปรับโครงสร้างฐานข้อมูลเดิมให้เปลี่ยนแปลงทั้งหมด อย่างไรก็ตาม หากคุณใช้ NoSQL ในสถานการณ์เช่นนี้ คุณสามารถแก้ไขโครงสร้างข้อมูลของคุณให้ตรงกับความต้องการที่ไวพร้อม (agile) ได้ง่าย ด้วย NoSQL คุณสามารถเริ่ม insert ข้อมูลใหม่นี้ในโครงสร้างที่มีอยู่ได้ทันที โดยไม่ต้องสร้างคอลัมน์ที่กำหนดไว้ล่วงหน้าหรือโครงสร้างที่กำหนดไว้ล่วงหน้า

ความท้าทายของ RDBMS

  • RDBMS สมมติโครงสร้างข้อมูลที่ชัดเจน และสมมติว่าข้อมูลเป็นไปอย่างมาก

  • ต้องการ schema ของแอปพลิเคชันและคุณสมบัติ (คอลัมน์ ชนิด ฯลฯ) ถูกกำหนดล่วงหน้าก่อนสร้างแอปพลิเคชัน สิ่งนี้ไม่เข้ากับแนวทางการพัฒนา agile สำหรับแอปพลิเคชันที่ไดนามิกมาก

  • เมื่อข้อมูลเริ่มโตใหญ่ขึ้น คุณต้องขยายฐานข้อมูลแบบแนวตั้ง (vertically) คือ เพิ่มความจุให้เซิร์ฟเวอร์ที่มีอยู่

ประโยชน์ของ NoSQL เหนือ RDBMS

Schema Less -

ฐานข้อมูล NoSQL ที่ไม่มี schema ไม่กำหนดโครงสร้างข้อมูลที่เคร่งครัด

Dynamic และ Agile -

ฐานข้อมูล NoSQL มีแนวโน้มที่จะเติบโตแบบไดนามิกพร้อมกับความต้องการที่เปลี่ยนแปลง จัดการข้อมูลที่มีโครงสร้าง ส่วนมีโครงสร้าง และไม่มีโครงสร้างได้

Scales Horizontally -

ในทางตรงข้ามกับ SQL databases ที่ขยายแบบแนวตั้ง NoSQL ขยายแบบแนวนอนโดยการเพิ่มเซิร์ฟเวอร์และใช้แนวคิด sharding และ replication พฤติกรรมของ NoSQL นี้เข้ากับบริการคอมพิวติ้งคลาวด์อย่าง Amazon Web Services (AWS) ซึ่งอนุญาตให้คุณจัดการเซิร์ฟเวอร์เสมือนที่สามารถขยายแบบแนวนอนตามความต้องการ

Better Performance -

ฐานข้อมูล NoSQL ทั้งหมดอ้างว่าส่งมอบประสิทธิภาพที่ดีกว่าและเร็วกว่าเมื่อเทียบกับการนำ RDBMS แบบดั้งเดิมมาใช้

พูดถึงข้อจำกัด เนื่องจาก NoSQL เป็นชุดฐานข้อมูลทั้งหมด (ไม่ใช่ฐานข้อมูลเดียว) ข้อจำกัดแตกต่างจากฐานข้อมูลไปยังฐานข้อมูล บางฐานข้อมูลไม่รองรับ ACID transactions ในขณะที่บางตัวอาจขาดความน่าเชื่อถือ แต่นักแต่ละตัวมีจุดแข็งของตัวเอง ทำให้เหมาะสำหรับความต้องการเฉพาะ

ประเภทของฐานข้อมูล NoSQL

Document Oriented Databases -

ฐานข้อมูลแบบเอกสาร (Document oriented databases) จัดการเอกสารเป็นหนึ่งเดียว และหลีกเลี่ยงการแยกเอกสารเป็นคู่ name/value ที่ระดับ collection นี่ช่วยให้รวบรวมชุดเอกสารที่หลากหลายเข้าไว้ใน collection เดียวได้ ฐานข้อมูลเอกสารอนุญาตให้จัดทำดัชนีเอกสารบนพื้นฐานไม่ใช่แค่ primary identifier แต่ยังรวม properties ด้วย โครงสร้าง document databases โอเพนซอร์สที่แตกต่างกันมีอยู่ اليوم แต่ที่โดดเด่นที่สุดคือ MongoDB และ CouchDB จริงๆ แล้ว MongoDB กลายเป็นหนึ่งในฐานข้อมูล NoSQL ที่นิยมที่สุด

Graph Based Databases -

ฐานข้อมูลกราฟใช้โครงสร้างกราฟกับโหนด ขอบ และ properties เพื่อแทนและจัดเก็บข้อมูล ตามนิยาม ฐานข้อมูลกราฟคือระบบจัดเก็บใดๆ ที่ให้ index-free adjacency หมายความว่าทุกองค์ประกอบมี pointer ตรงไปยังองค์ประกอบที่อยู่ติดกัน และไม่ต้องการ index lookups ฐานข้อมูลกราฟทั่วไปที่จัดเก็บกราฟใดๆ แตกต่างจากกราฟเฉพาะทางอย่าง triple-stores และ network databases Indexes ใช้สำหรับ traverse กราฟ

Column Based Databases -

การจัดเก็บแบบคอลัมน์ (column-oriented storage) อนุญาตให้จัดเก็บข้อมูลได้อย่างมีประสิทธิภาพ มันหลีกเลี่ยงการใช้พื้นที่เมื่อจัดเก็บ nulls โดยเพียงแค่ไม่จัดเก็บคอลัมน์เมื่อไม่มีค่าสำหรับคอลัมน์นั้น หน่วยข้อมูลแต่ละหน่วยสามารถคิดได้เป็นชุดของ key/value pairs โดยหน่วยตัวเองถูกระบุด้วย primary identifier ซึ่งมักเรียกว่า primary key Bigtable และโคลนของมันมักเรียก primary key นี้ว่า row-key

Key Value Databases -

คีย์ของคู่ key/value เป็นค่าไม่ซ้ำในเซต และสามารถค้นหาได้ง่ายเพื่อเข้าถึงข้อมูล คู่ key/value มีหลายประเภท: บางตัวเก็บข้อมูลในหน่วยความจำ และบางตัวให้ความสามารถในการ persist ข้อมูลลงดิสก์ Key/value store ที่เรียบง่ายแต่ทรงพลังคือ Oracle's Berkeley DB

ฐานข้อมูล NoSQL ยอดนิยม

มา สรุปฐานข้อมูล NoSQL ยอดนิยมบางตัวที่อยู่ในหมวดหมู่ข้างต้นตามลำดับ

  • Document Oriented Databases - MongoDB, HBase, Cassandra, Amazon SimpleDB, Hypertable, ฯลฯ
  • Graph Based Databases - Neo4j, OrientDB, Facebook Open Graph, FlockDB, ฯลฯ
  • Column Based Databases - CouchDB, OrientDB, ฯลฯ
  • Key Value Databases - Membase, Redis, MemcacheDB, ฯลฯ

NoSQL คืออะไร และมันเป็นเทรนด์ใหญ่ถัดไปของฐานข้อมูลหรือไม่?

NoSQL Databases. Image Source: getfilecloud.com

สรุป

ในบทความนี้ เราเรียนรู้เกี่ยวกับเทคโนโลยีฐานข้อมูล NoSQL 是什么 และมันแตกต่างจาก RDBMS อย่างไรในหลักๆ เราจึงสำรวจประเภทต่างๆ ของฐานข้อมูล NoSQL การประยุกต์ใช้ และฐานข้อมูลยอดนิยมบางตัวของแต่ละประเภท

องค์กรหลายแห่งในปัจจุบันกำลังปรับตัวไปใช้ฐานข้อมูลแบบนี้สำหรับชุดข้อมูลมหาศาลและแอปพลิเคชัน high-scale นี่แสดงให้เห็นว่า NoSQL 肯定会是 web และเทคโนโลยีฐานข้อมูล的下一个大事件 有潜力打破 RDBMS 的多年遗产