7 NO Sql คือ nosql vs sql Database อะไรที่ไม่มีใครพูด?
03/03/2024 06/03/2024
no sql
NOSQL คือ
เราสามารถให้คำจำกัดความของ NOSQLคือ ฐานข้อมูลที่ไม่มีภาษา SQL ให้ใช้
รายละเอียดของ NOSQLนั้นต่างจากพวก MySQL Microsoft SQL Oracle ดังนี้
อย่างแรกคือไม่มีความสัมพันธ์ เพราะ NOSQLไม่ใช่ Relational Database ดังนั้นจึงไม่มีคำสั่งพวก JOIN, WHERE ฯลฯ
เน้นใช้งานกับปริมาณข้อมูลที่มีจำนวนมากมายมหาศาลมีขนาดข้อมูลประมาณพวกfacebook.com ,www.twitter.com , www.google.com ประมาณนั้น
แต่เนื่องจาก NOSQL ไม่มีโครงสร้างตายตัว เลยสามารถขายได้มากกว่า ในแบบขนาน (horizontal scaling) คือเพิ่มเครื่องได้ง่ายในกรณีใช้งานจริง
ประสิทธิภาพสูงกว่า แต่ก็มากับการออกแบบที่ไม่แน่นอนไม่ตายตัวและยากกว่า RDB เพราะไม่ต้องคอยจัดการเรื่องความสัมพันธ์
ปกติแล้วฐานข้อมูลแบบ SQL นั้นจะเป็น Normalize แต่ NOSQL จะเน้นเป็นแบบ Denormalize คือเน้นให้ทำงานเร็วที่สุดไม่ต้องไป join อะไรต่างๆนาๆ คือหาเรคคอร์ดเดียวแล้วเอามาใช้งานได้เลย เช่นข้อมูล Contact ของ member เราก็เก็บทุกอย่างทุกคอลัมน์ลงไป ไม่ต้องไปแยกจังหวัด หรืออำเภออะไร เพื่อให้เกิดการ Compare เปรียบเทียบน้อยที่สุด
เวลาจะเชื่อมต่อต้องง่ายเข้าไว้ไม่ต้องมี overhead เยอะ มีแค่ IP กับ Port ก็พอ
ต้องสามารถทำ Replication ได้เพราะ ข้อมูลเป็นสิ่งสำคัญ และจะได้ไม่ทำให้เกิด Single Point of Failure หรือเกิดจุดตายในระบบ คือ พังไปซักเครื่อง ก็ยังทำงานได้ปกติ
เน้นการทำงานแบบ Key/Value หรือ Key/Column แล้วแต่ยี่ห้อ
ตัวอย่างของฐานข้อมูลแบบ NOSQL Database ที่มีในปัจจุบันแบ่งตามประเภทดังนี้
Document
Graph
Key/Value
Tabular
Unknown
CouchDB
CouchDB คือ document-oriented database ที่สามารถ queried และ indexed โดยการทำ MapReduce ผ่าน JavaScript โดย CouchDB จะใช้งานผ่าน RESTful JSON API ซึ่งจะทำให้เราสามารถเรียกจากที่ไหนก็ได้โดยผ่าน HTTP protocal ที่สำคัญไม่ต้องมี Driver ให้วุ่นวายปวดหัว
CouchDB ทำอะไรได้บ้าง
เป็น document database ที่มีการเรียกใช้ผ่าน RESTful JSON API
ไม่มี Schema และสามารถเพิ่มเติมแก้ไข field ได้อย่างทันที
สามารถทำ replication โดยใช้วิธี bi-direction และสามารถจัดการปัญหาเรื่องการ conflict ของ data ได้อีกด้วย
สามารถ Query และ Index ได้โดยการใช้ Javascript แทนการใช้ SQL Query
อะไรที่ไม่ใช่ CouchDB
ไม่ใช่ relational database
ไม่ใช่ตัวแทนของ ralational database
ไม่ใช่ object-oriented db ไม่มี persistance layer
คุณสมบัติที่เด่นๆ
Documents CouchDB document นั้นคือ object ที่ประกอบไปด้วย key และ value โดย value นั้นอาจจะเป็น strings, numbers, dates หรือ lists เช่นตัวอย่างข้างล่างนี้
“Subject”: “I like Plankton”
“Author”: “Rusty”
“PostedDate”: “5/23/2006”
“Tags”: [“plankton”, “baseball”, “decisions”]
“Body”: “I decided today that I don’t like baseball. I like plankton.”
CouchDB database นั้นคือการรวบรวม document พวกนี้ โดยแต่ที่ document นั้นจะมี ID ของตัวเองที่เป็น unique ID
Views นั้นคือวิธีการที่จะรวบรวมพวก documents ต่างๆใน database โดยจะใช้ Javascript เข้ามาช่วยในการจัดการเช่นกำหนด description ดังนั้นเราสามารถที่จะปรับแต่งส่วนของการใช้งานฝั่ง views ได้อย่างอิสระ ทำให้เราสามารถมี views ที่จะนำไปใช้งานได้หลายแบบ ขึ้นอยู่กับการนำไปใช้งานของเรา¹
¹ที่มา:http://bls.buu.ac.th/~f53361/ass06/50531900/50531900_NOSQL.odt
อ่านบทความทั้งหมด >>> pangpond.com