NoSQL

ถ้าพูดกันในเรื่องของความสามารถในการขยายระบบ หรือที่เรียกกันติดปากว่า scalability ในยุคนี้ดูจะเป็นเรื่องที่มีความจำเป็นมากขึ้นเรื่อยๆ เนื่องจากจำนวนผู้ใช้อินเทอร์เน็ตมีจำนวนมากขึ้น รวมถึงขนาดของข้อมูลมีขนาดใหญ่ขึ้นและความต้องการเก็บข้อมูลที่มีลักษณะเป็น history สามารถดึงของเก่ามาให้ได้เมื่อจำเป็น ความต้องการที่เก็บข้อมูลจำนวนมหาศาลนี้เป็นตัวเร่งทำให้เกิดเทคโนโลยีในการเก็บข้อมูลแบบใหม่ ที่สามารถขยายตัวได้อย่างไม่จำกัด ในราคาที่ถูกกว่าการซื้อ storage hardware ที่มีราคาแพง และอาจจะไม่สามารถรองรับความต้องการได้เสมอไป

ถ้าหากกล่าวถึง LAMP stack ใน data tier นิยมใช้ MySQL ซึ่งเป็น relational database ในการเก็บข้อมูล ถ้าหากพิจารณาถึงความต้องการในการเก็บข้อมูลของเราดีๆแล้ว อาจไม่จำเป็นต้องใช้ relational database ในการเก็บข้อมูลเสมอไป เนื่องจากเหตผลต่างๆดังนี้

  • ไม่จำเป็นต้องใช้ relational database ในการเก็บข้อมูล
  • การ ขยายระบบ (scale) relational database ทำได้ยาก และมีความซับซ้อนสูง
  • การทำ normalization ใน relational database มักทำให้ performance แย่ลง
  • ในหลายๆกรณี ใช้แค่ primary key look-up ก็เพียงพอต่อการ retrieve ข้อมูลแล้ว

จากปัญหาที่กล่าวมาข้างต้น ได้มีคนคิดค้น data store แบบใหม่ซึ่งมีความสามารถแก้ปัญหาดังที่ได้กล่าวมาแล้วได้ โดย data store แบบใหม่นี้มักมีลักษณะดังนี้

  1. ข้อมูลจะมีลักษณะ de-normalized ไม่มี schema และมักเป็นการเก็บข้อมูลทั้งก้อน (document storage)
  2. การเก็บข้อมูลจะมีลักษณะเป็นคู่ของ key/value โดยสามารถดึงข้อมูลกลับมาได้โดยหาจาก key
  3. สามารถขยายระบบตามแนวขนานได้ (horizontal scaling) ซึ่งถ้าระบบทำงานไม่ทันก็สามารถเพิ่ม node เข้าไป ไม่ต้องเปลี่ยน node ใหม่ที่เร็วกว่าเดิม ซึ่งวิธีนี้จะลด down-time และความซับซ้อนในการ deploy ระบบ
  4. สนับสนุนการทำ replication ซึ่งทำให้แน่ใจว่าข้อมูลจะไม่หายเมื่อมี node ใด node หนึ่งพัง
  5. มี API ในการเข้าถึงข้อมูลที่ง่ายไม่ซับซ้อน เช่น HTTP และ REST เป็นต้น
  6. สนับสนุน MapReduce style programming
  7. มีลักษณะเป็น Eventually Consistent

ถ้าหากข้อมูลที่ต้องการเก็บมีลักษณะเป็นอย่างในข้อ 1 และ 2 เราสามารถที่จะตัดสินในไม่ใช้ relational database ในการเก็บข้อมูลได้ เราอาจเรียกการเก็บข้อมูลที่มีลักษณะเป็น distributed schema-free แบบนี้ว่า NoSQL ได้

อ้างอิงจาก: NoSQL: Distributed and Scalable Non-Relational Database Systems

ข้อมูลเพิ่มเติม :

1 คิดบน “NoSQL

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s