Screen Shot 2558-09-06 at 11.42.01 PM
คำถามที่น่าสนใจคือ
จะเลือกใช้งาน MongoDB หรือ Elasticsearch ดีล่ะ ?

เป็นคำถามที่มักเกิดขึ้นอยู่บ่อยครั้ง
และคำตอบยอดนิยมคือ it’s depends …
คือขึ้นอยู่กับระบบงานของคุณนะสิ !!!

ถ้าตอบแบบนี้ก็อย่าตอบเลยนะเออ …

มาดูคำตอบที่ดูดีหน่อยสิ ?

ระบบงานต้องการอะไรกันแน่ ?
ระบบงานมีการจัดการข้อมูลอย่างไร ?
ทำไมระบบต้องการใช้ database ?
ต้องการ database ไปทำไม ?
ต้องการให้ database ทำอะไรบ้าง ?

ถ้าคุณตอบได้ แสดงว่าคุณเข้าใจความต้องการของระบบแล้วนะ

ไม่ใช่ตอบว่า !!
ใช้ xxxx เพราะว่า เขาบอกว่ามันดี
ใช้ xxxx เพราะว่า เขาบอกว่ามันทำงานได้เร็ว
ใช้ xxxx เพราะว่า ได้รับความนิยมจากคนทั้งโลก

ก่อนอื่นมาทำความรู้จัก MongoDB และ Elasticsearch ก่อนนะ

MongoDB
มันคือ document database ที่ได้รับความนิยมอย่างสูง
เก็บข้อมูลในสิ่งที่เรียกว่า collection
ในรูปแบบที่เรียกว่า BSON หรือ Binary JSON
ทำให้ง่ายต่อการเข้าถึงข้อมูล
และขนาดของข้อมูลที่เล็กลง

BSON ทำให้สามารถเพิ่ม data type เข้ามาได้อีกมากมาย
และที่สำคัญการใช้งานมันเป็นมิตรต่อผู้ใช้ RDBMS มาก่อนอีกด้วย

Elasticsearch
สร้างขึ้นมาเพื่อการค้นหา หรือ search engine โดยเฉพาะ
ทำงานอยู่บน Apache Lucene
เก็บข้อมูลในสิ่งที่เรียกว่า indice
ในรูปแบบ JSON ซึ่งคล้ายกับ MongoDB นั่นเอง
จึงทำให้เกิดความสับสนต่อการใช้งานอย่างมาก
แต่ไม่ทำการแปลงไปอยู่ในรูปแบบ BSON

โดยที่ข้อมูลจะถูกทำการวิเคราะห์ด้วยตัว analyzer
เพื่อนำมาจัดทำ index หรือสมุดหน้าเหลือง
ซึ่งอยู่ในรูปแบบที่เรียกว่า Reverted Index
เพื่อทำให้ง่ายต่อการค้นหานั่นเอง

กลับมาที่คำถาม เลือกอะไรดีล่ะ ?

ตอบง่าย ๆ ว่าไม่เลือกได้ไหม ?
จะใช้ทั้งสองเลยได้ไหมล่ะ ?

กล่าวคือ
ในการจัดการข้อมูลทั่วไปเช่น CRUD ก็ใช้งาน MongoDB ไป

ถ้าระบบต้องการ full-text-search แล้ว
ก็ให้นำ Elasticsearch มาใช้สิ
เพื่อเพิ่มประสิทธิภาพการทำงานของระบบ
เชื่อเถอะว่าไม่มีอะไรที่มันทำงานดีได้ทุกอย่างหรอก

เลือกเครื่องมือที่เหมาะสมกับงานเถอะครับ