redis กับ MongoDB เปรียบเทียบ ใช้ตัวไหนดีกว่ากัน

presented-by

คำถามยอดฮิด ผมเองก็เคยถามตัวเองเหมือนกัน ว่าเราจะเลือกได้อย่างไร ว่าเราจะใช้ redis หรือ MongoDB ดีกว่ากัน

ก่อนอื่น คงต้องให้คนอ่านทำความเข้าใจก่อน ว่า redis คืออะไร คือ database ที่ทำงานได้เร็วมาก และ mongoDB คืออะไร และตัวอย่าง mongoDB

เก็บข้อมูลถาวรหรือเปล่า

ง่ายมาก ถ้าข้อมูลที่เราต้องทำงานด้วยเป็นข้อมูลที่สำเนาชุดเดียว ไม่มีเก็บที่อื่นอีก อันนี้ MongoDB แน่นอนเพราะ มีความน่าเชื่อถือในการเก็บข้อมูลถาวรมากกว่า redis

ต้องการความเร็วสุดๆมั้ย

ถ้าต้องการความเร็วสุดๆ Redis ให้คุณได้มากกว่า MongoDB อย่างแน่นอน ทั้งอ่านและเขียนเลย โดยเฉพาะเมื่อเรา config ให้ redis ทำงานบน ram อย่างเดียวแล้วจะเร็วกว่ามากๆ และไม่รวนด้วย

ความซับซ้อนของข้อมูลที่เก็บ

ทั้ง redis ,mongoDB รองรับการเก็บข้อมูลเชิงโครงสร้างที่ซับซ้อนระดับหนึ่งทั้งคู่ คือไม่ใช่แค่ key value อย่างเดียว มี field ต่างๆด้วยในด้วย ถือว่า ข้อนี้ให้เสมอกัน

ความหลากหลายในการทำงาน

ข้อนี้ redis กินขาดเลย เพราะว่า redis รองรับการทำงานที่หลากหลาย ทั้ง sort, set, list, pub/sub และอื่นๆ ที่ต่างจาก mongoDB ทำงานเน้นที่ storage เป็นหลักเลย

ขนาดของข้อมูล

ถ้าใหญ่ ให้ mongoDB เลย เพราะ redis ทำงานบน RAM ที่ราคาแพงกว่า Harddisk/SSD มากๆ ทำให้ทรัพยากรที่รองรับการทำงานมีจำกัดด้วย

ความนิยม

mongoDB ได้รับความนิยมกว่ามาก คนใช้เยอะ คู่มือหลากหลาย ตัวอย่างอีกเพียบ redis ก็ยังตามมาอยู่ห่างๆ ไม่ได้หยุดอยู่กับที่

ความยากง่ายในการใช้งานจริง

ถ้าเป็นคนที่เข้าใจการใช้งานแล้ว (ไม่พูดถึงมือใหม่) redis ใช้งานง่ายกว่ามากๆ เพราะคำสั่งที่ให้จำเพิ่มมีไม่เยอะ และตรงไปตรงมา เงื่อนไขเวลาทำงานก็แทบไม่มีเลย

แล้วทำไมต้องเลือก database ตัวเดียว?

ข้อนี้ผมอยากให้ทุกคนที่ได้อ่าน ลองคิดสักนิดหนึ่ง ทุกอย่างในโลกไม่ได้มีคำตอบเดียว ระบบต่างๆ ก็ไม่จำเป็นต้องทำงานบน database ชนิดเดียว ผมมีงานหนึ่งที่ implement ให้ลูกค้า ราคา project นี้หลายแสนบาท ผมทำงานอยู่คนเดียวทั้งหมด ผมใช้ database MySQL + Redis โดยแบ่งส่วนการทำงานจากกันเป็นส่วนๆ เช่น เก็บข้อมูลถาวรก็เก็บลง MySQL เวลาใช้งานก็อ่านขึ้นมาเก็บ Redis จากนั้นก็อ่านจาก redis ตลอดไป เหล่านี้เป็นต้น ซึ่งถ้าคุณทำงานแล้วจะใช้ MySQL + mongoDB + Redis + memcache ก็ไม่ผิด แต่ต้องแยกแยะให้ออกว่า จังหวะไหนต้องใช้ตัวไหน เพราะการที่เรามี database หลากหลาย นั่นหมายถึงการ maintenance ยากและใช้เวลามากขึ้นรวมถึงใช้ resource ที่มากขึ้นด้วย

ดังนั้น อยากให้พิจารณาที่เรื่องการออกแบบเชิง software architecture มากกว่า เพราะว่าสุดท้ายเมื่อเราออกแบบเสร็จและพิจารณาจากการใช้งาน ความถี่ ขนาดของข้อมูลและอื่นๆแล้วเราก็จะได้คำตอบเอง

mean stack คืออะไร

mean stack logomean stack เป็นการรวมเอา ชุด service จำนวน 4 อย่าง ที่เอามาประกอบกัน เพื่อใช้สำหรับรันงาน Web Application/Website ในฝั่ง server

M มาจาก mongoDB

mongoDB เป็น Database NoSQL ตัวหนึ่ง (อ่านเรื่อง NoSQL เพิ่มเติม) ซึ่งทำงานได้เร็ว และรองรับการขยายตัวได้ง่าย ได้รับความนิยมเพิ่มขึ้นเรื่อยๆ อ่านเพิ่มเติม mongoDB คืออะไร

N มาจาก Node.js

ผมขออธิบาย ตัว N ก่อนก็แล้วกัน (เดี่ยวจะเข้าใจว่าเพราะอะไร) Node.js เป็นภาษาที่ถูกเอามารันเป็น server side โดย Node.js เองนั้น เวลาเราจะใช้งานเราจะใช้ภาษา JavaScript เขียนขึ้นมา แล้วเอาไปรันใน Node.js environment ได้ หากคนที่เคยทำเว็บมา ก็เปรียบได้กับภาษา JavaScript คือ PHP หรือ .Net นั่นแหล่ะ และ Node.js เอง ก็เปรียบกับ อ่านต่อ… “mean stack คืออะไร”

mongoDB คืออะไร และตัวอย่าง mongoDB

mongoDB Logo

mongoDB คือชื่อของ Database แบบ NoSQL แบบหนึ่ง (อ่านต่อเรื่อง NoSQL กับ NoSQL คืออะไร) โดยเราไม่ต้องเตรียมสร้าง table , field เอาไว้รอก่อน เหมือนอย่าง Database ทั่วไป คิดอยากจะเก็บอะไรก็เก็บเข้าไปได้เลย

มันไม่ใช่ Relational database ดังนั้นไม่ต้องสร้างโครงสร้างก่อนใช้

หรือพูดง่ายๆคือ ไม่ต้องกำหนดโครงสร้างข้อมูลที่เราจะเก็บ แค่คิดอยากจะเก็บอะไรก็เก็บเข้าไปได้เลย อ่านต่อ… “mongoDB คืออะไร และตัวอย่าง mongoDB”