nosql

7 NO Sql คือ nosql vs sql Database อะไรที่ไม่มีใครพูด?

Click to rate this post!
[Total: 170 Average: 5]

no sql

NOSQL คือ

เราสามารถให้คำจำกัดความของ NOSQLคือ ฐานข้อมูลที่ไม่มีภาษา SQL ให้ใช้

รายละเอียดของ NOSQLนั้นต่างจากพวก MySQL Microsoft SQL Oracle ดังนี้

  1. อย่างแรกคือไม่มีความสัมพันธ์ เพราะ NOSQLไม่ใช่ Relational Database ดังนั้นจึงไม่มีคำสั่งพวก JOIN, WHERE ฯลฯ
  2. เน้นใช้งานกับปริมาณข้อมูลที่มีจำนวนมากมายมหาศาลมีขนาดข้อมูลประมาณพวกfacebook.com,www.twitter.com, www.google.com ประมาณนั้น
  3. แต่เนื่องจาก NOSQL ไม่มีโครงสร้างตายตัว เลยสามารถขายได้มากกว่า ในแบบขนาน (horizontal scaling) คือเพิ่มเครื่องได้ง่ายในกรณีใช้งานจริง
  4. ประสิทธิภาพสูงกว่า แต่ก็มากับการออกแบบที่ไม่แน่นอนไม่ตายตัวและยากกว่า RDB เพราะไม่ต้องคอยจัดการเรื่องความสัมพันธ์
  5. ปกติแล้วฐานข้อมูลแบบ SQL นั้นจะเป็น Normalize แต่ NOSQL จะเน้นเป็นแบบ Denormalize คือเน้นให้ทำงานเร็วที่สุดไม่ต้องไป join อะไรต่างๆนาๆ คือหาเรคคอร์ดเดียวแล้วเอามาใช้งานได้เลย เช่นข้อมูล Contact ของ member เราก็เก็บทุกอย่างทุกคอลัมน์ลงไป ไม่ต้องไปแยกจังหวัด หรืออำเภออะไร เพื่อให้เกิดการ Compare เปรียบเทียบน้อยที่สุด
  6. เวลาจะเชื่อมต่อต้องง่ายเข้าไว้ไม่ต้องมี overhead เยอะ มีแค่ IP กับ Port ก็พอ
  7. ต้องสามารถทำ Replication ได้เพราะ ข้อมูลเป็นสิ่งสำคัญ และจะได้ไม่ทำให้เกิด Single Point of Failure หรือเกิดจุดตายในระบบ คือ พังไปซักเครื่อง ก็ยังทำงานได้ปกติ
  8. เน้นการทำงานแบบ Key/Value หรือ Key/Column แล้วแต่ยี่ห้อ

ตัวอย่างของฐานข้อมูลแบบ NOSQL Database ที่มีในปัจจุบันแบ่งตามประเภทดังนี้

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 เช่นตัวอย่างข้างล่างนี้
    1. “Subject”: “I like Plankton”
    2. “Author”: “Rusty”
    3. “PostedDate”: “5/23/2006”
    4. “Tags”: [“plankton”, “baseball”, “decisions”]
    5. “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