MongoDB เป็นชื่อที่โผล่ขึ้นมาบ่อยมากในคู่มือของเว็บแอปสมัยใหม่ โดยเฉพาะโปรเจกต์ที่เขียนด้วย JavaScript หลายคนจึงสงสัยว่าตกลงมันคืออะไร ทำไมถึงไม่เก็บข้อมูลเป็นตารางเหมือนฐานข้อมูลที่คุ้นเคย และควรเลือกใช้ตอนไหน
บทความนี้อธิบายว่า MongoDB คืออะไร คำว่า NoSQL หมายถึงอะไร ต่างจากฐานข้อมูล SQL ยังไง เหมาะและไม่เหมาะกับงานแบบไหน แล้วปิดท้ายด้วยสองเรื่องที่คนมักรู้ตอนสายเกินไป คือมันกินแรมมากกว่าที่คิด และมันถูกเจาะบ่อยเพราะตั้งค่าไม่รัดกุม
MongoDB คืออะไร
MongoDB คือระบบจัดการฐานข้อมูลในกลุ่มที่เรียกว่า NoSQL ซึ่งไม่ได้เก็บข้อมูลเป็นตารางที่มีคอลัมน์ตายตัว แต่เก็บเป็นสิ่งที่เรียกว่า document แต่ละ document เก็บข้อมูลหนึ่งรายการไว้ครบในตัวเอง และมีหน้าตาคล้ายข้อมูลรูปแบบ JSON ที่นักพัฒนาเว็บคุ้นเคยอยู่แล้ว
จุดขายหลักที่ทำให้มันแพร่หลายคือความยืดหยุ่นของโครงสร้าง ในฐานข้อมูลแบบตาราง ถ้าจะเพิ่มข้อมูลใหม่หนึ่งช่องคุณต้องแก้โครงสร้างของทั้งตาราง แต่ใน MongoDB คุณเพิ่มข้อมูลใหม่ลงใน document ใหม่ได้เลยโดยที่ document เก่าไม่ต้องเปลี่ยนตาม ระบบที่โครงสร้างข้อมูลยังไม่นิ่งจึงเริ่มงานได้เร็วกว่า
MongoDB รันเป็นบริการเบื้องหลังบนเซิร์ฟเวอร์เช่นเดียวกับฐานข้อมูลตัวอื่น แอปเชื่อมต่อเข้ามาผ่านไลบรารีของภาษาที่ใช้ ตัวมันมีทั้งรุ่นที่ติดตั้งบนเครื่องของตัวเองและบริการแบบคลาวด์ที่ผู้พัฒนาให้บริการเอง
ข้อควรรู้เรื่องสัญญาอนุญาต รุ่น Community ดาวน์โหลดและใช้ฟรี แต่ตั้งแต่ปี 2018 เป็นต้นมาใช้สัญญาอนุญาตแบบ SSPL ซึ่งมีเงื่อนไขเข้มกับผู้ที่นำตัวฐานข้อมูลไปเปิดเป็นบริการคลาวด์ให้คนอื่นใช้ สำหรับคนที่ติดตั้งใช้กับระบบของตัวเองตามปกติ เรื่องนี้ไม่กระทบ
NoSQL คืออะไร ต่างจาก SQL ยังไง
NoSQL เป็นคำเรียกรวมของฐานข้อมูลที่ไม่ได้ยึดรูปแบบตารางเชิงสัมพันธ์เป็นหลัก ไม่ได้แปลว่าไม่มีภาษาสอบถามข้อมูล และไม่ได้แปลว่าดีกว่าหรือใหม่กว่า มันแค่เลือกจัดเก็บข้อมูลคนละแนวคิดเพื่อแลกกับข้อดีคนละชุด
ในฐานข้อมูล SQL ข้อมูลที่เกี่ยวข้องกันถูกแยกไว้คนละตารางแล้วเชื่อมด้วยคีย์ เวลาต้องการข้อมูลครบชุดจึงต้องดึงหลายตารางมาต่อกัน ส่วนใน MongoDB นิยมเก็บข้อมูลที่ใช้ด้วยกันไว้ใน document เดียวไปเลย อ่านครั้งเดียวได้ครบ แลกกับการที่ข้อมูลบางส่วนอาจซ้ำอยู่หลายที่ และเมื่อแก้ต้องตามแก้ให้ครบเอง
| หัวข้อ | MongoDB (NoSQL) | ฐานข้อมูล SQL แบบตาราง |
|---|---|---|
| หน่วยเก็บข้อมูล | document รวมกันอยู่ใน collection | แถวในตารางที่มีคอลัมน์กำหนดไว้ |
| โครงสร้าง | ยืดหยุ่น แต่ละ document มีฟิลด์ไม่เหมือนกันได้ | กำหนดล่วงหน้า ทุกแถวมีคอลัมน์เหมือนกัน |
| การเปลี่ยนโครงสร้าง | เพิ่มฟิลด์ใหม่ได้ทันทีโดยไม่แตะข้อมูลเดิม | ต้องแก้โครงสร้างตาราง และวางแผนก่อนบนข้อมูลใหญ่ |
| ความสัมพันธ์ของข้อมูล | นิยมฝังข้อมูลที่ใช้ด้วยกันไว้ใน document เดียว | แยกตารางแล้วเชื่อมด้วยคีย์ ไม่เก็บข้อมูลซ้ำ |
| การกันข้อมูลผิดรูปแบบ | ต้องกำหนดกฎเพิ่มเอง ถ้าไม่ตั้งก็ใส่อะไรก็ได้ | ฐานข้อมูลบังคับชนิดข้อมูลให้ตั้งแต่ต้นทาง |
| ภาษาสอบถามข้อมูล | ใช้รูปแบบคำสั่งเฉพาะของ MongoDB | ใช้ SQL ซึ่งเป็นมาตรฐานกลางที่ย้ายความรู้ข้ามตัวได้ |
| จุดแข็ง | ข้อมูลรูปร่างไม่แน่นอน อ่านทั้งก้อนบ่อย ขยายเครื่องแนวกว้างได้ง่าย | ความถูกต้องของข้อมูล รายงานซับซ้อน ข้อมูลไม่ซ้ำซ้อน |
เก็บข้อมูลแบบ document หน้าตาเป็นยังไง
ลองนึกถึงข้อมูลลูกค้าหนึ่งคน ในฐานข้อมูลแบบตาราง คุณจะมีตารางลูกค้าเก็บชื่อกับอีเมล แล้วมีอีกตารางเก็บที่อยู่ และอีกตารางเก็บเบอร์โทร เพราะลูกค้าหนึ่งคนอาจมีหลายที่อยู่ เวลาจะแสดงโปรไฟล์เต็มจึงต้องดึงสามตารางมาต่อกัน
ใน MongoDB ข้อมูลลูกค้าคนนั้นถูกเก็บเป็น document เดียว ข้างในมีชื่อ อีเมล แล้วมีรายการที่อยู่กับรายการเบอร์โทรซ้อนอยู่ข้างในเลย อ่านครั้งเดียวได้ข้อมูลครบทั้งโปรไฟล์ ไม่ต้องต่อตาราง นี่คือเหตุผลที่หน้าจอโปรไฟล์ในแอปมักดึงข้อมูลได้เร็วมาก
ข้อแลกเปลี่ยนคือถ้าข้อมูลชุดเดียวกันถูกฝังไว้ในหลาย document เช่นชื่อร้านที่ฝังไว้ในทุกออร์เดอร์ วันที่ร้านเปลี่ยนชื่อคุณต้องไล่แก้ทุกที่เอง ฐานข้อมูลไม่ได้บังคับให้ตรงกันเหมือนการเชื่อมด้วยคีย์ในระบบตาราง
ศัพท์ที่ต้องรู้มีไม่กี่คำ และเทียบกับฝั่งตารางได้ตรงตัวดังนี้
- Document — ข้อมูลหนึ่งรายการที่เก็บครบในตัวเอง เทียบได้กับหนึ่งแถวในตาราง แต่ซ้อนข้อมูลย่อยไว้ข้างในได้
- Collection — ที่รวม document เรื่องเดียวกัน เทียบได้กับหนึ่งตาราง แต่ไม่บังคับให้ทุก document มีฟิลด์เหมือนกัน
- Field — ช่องข้อมูลใน document เทียบได้กับคอลัมน์ ต่างกันตรงที่แต่ละ document มีฟิลด์ไม่เท่ากันได้
- Index — โครงสร้างช่วยค้นหาเหมือนสารบัญ ถ้าไม่สร้างไว้ การค้นหาจะไล่อ่านทุก document ซึ่งช้ามากเมื่อข้อมูลโต
- Schema validation — กฎที่คุณกำหนดเองเพื่อบังคับรูปแบบข้อมูล ถ้าไม่ตั้ง ฐานข้อมูลจะรับข้อมูลรูปแบบไหนก็ได้
- Replica set — ชุดเครื่องที่เก็บสำเนาข้อมูลเดียวกันไว้หลายชุด เพื่อให้ระบบยังทำงานต่อได้เมื่อเครื่องหนึ่งล่ม
เหมาะกับงานแบบไหน ไม่เหมาะกับงานแบบไหน
MongoDB ไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับทุกงาน และเหตุผลที่โปรเจกต์จำนวนไม่น้อยต้องย้ายออกภายหลัง คือเลือกมันตั้งแต่แรกโดยดูจากความนิยม ไม่ได้ดูจากลักษณะข้อมูล กลุ่มงานที่มันทำได้ดีจริงมีดังนี้
- ข้อมูลที่โครงสร้างยังไม่นิ่ง เช่นระบบที่ฟิลด์เพิ่มลดตามฟีเจอร์ใหม่ในช่วงพัฒนา
- ข้อมูลที่แต่ละรายการมีฟิลด์ไม่เท่ากันโดยธรรมชาติ เช่นแคตตาล็อกสินค้าที่สินค้าแต่ละประเภทมีคุณสมบัติคนละชุด
- บันทึกเหตุการณ์ ข้อมูลจากอุปกรณ์ หรือ log ที่เขียนเข้ามาต่อเนื่องจำนวนมากและอ่านแบบทั้งก้อน
- ข้อมูลที่ถูกอ่านครบทั้งชุดพร้อมกันเสมอ เช่นโปรไฟล์ผู้ใช้ หรือเนื้อหาหนึ่งหน้าที่มีส่วนประกอบซ้อนกันหลายชั้น
- ระบบที่วางแผนขยายด้วยการเพิ่มเครื่องแนวกว้างตั้งแต่ต้น เพราะ MongoDB ออกแบบมาให้กระจายข้อมูลข้ามเครื่องได้
- ต้นแบบและโปรเจกต์ระยะเริ่มต้นที่ต้องการความเร็วในการเปลี่ยนโครงสร้างมากกว่าความเข้มงวด
MongoDB กินแรมมาก พูดให้ตรง
ข้อนี้ต้องพูดตรง ๆ เพราะเป็นสาเหตุอันดับหนึ่งที่คนติดตั้ง MongoDB บนเครื่องเล็กแล้วเจอปัญหา MongoDB ออกแบบมาให้ทำงานเร็วโดยกันหน่วยความจำก้อนใหญ่ไว้เก็บข้อมูลที่ใช้บ่อย ค่าเริ่มต้นของมันคือกันไว้ประมาณครึ่งหนึ่งของแรมที่เหลือหลังหักไว้หนึ่งกิกะไบต์ หรืออย่างน้อย 256 MB แล้วแต่ว่าค่าไหนมากกว่า แปลว่าบนเครื่องแรม 4 GB มันจะกันไว้ราว 1.5 GB ตั้งแต่ยังไม่ทำอะไรเลย และนั่นยังไม่รวมหน่วยความจำที่ระบบปฏิบัติการใช้แคชไฟล์ให้อีกชั้น ตารางด้านล่างคือแพ็กเกจ VPS ของ Plusweb ทุกตัวมี 1 Public IPv4 ในตัว ตัวเลขในวงเล็บคือราคาต่อเดือนเมื่อชำระรายปี
| แพ็กเกจ | CPU | RAM | SSD | ราคา/เดือน (รายปี) | เหมาะกับ |
|---|---|---|---|---|---|
| VPS-00 | 1 vCore | 1 GB | 15 GB | 150฿ (120฿) | ไม่แนะนำสำหรับ MongoDB ที่ใช้งานจริง ใช้ได้แค่ทดลองเล่น |
| VPS-01 | 1 vCore | 3 GB | 30 GB | 250฿ (200฿) | ขั้นต่ำที่พออยู่ได้ สำหรับแอปเล็กและข้อมูลไม่มาก |
| VPS-02 | 2 vCores | 4 GB | 60 GB | 350฿ (280฿) | จุดเริ่มต้นที่แนะนำสำหรับระบบใช้งานจริงขนาดเล็ก |
| VPS-03 | 4 vCores | 8 GB | 100 GB | 600฿ (480฿) | ข้อมูลโตขึ้น มีผู้ใช้พร้อมกันมากขึ้น หรือรันคู่กับแอปบนเครื่องเดียว |
| VPS-04 | 5 vCores | 10 GB | 140 GB | 1,000฿ (800฿) | แยกเครื่องฐานข้อมูลออกมาเฉพาะ เพื่อไม่ให้แย่งแรมกับแอป |
| VPS-06 | 8 vCores | 16 GB | 220 GB | 1,600฿ (1,280฿) | ข้อมูลขนาดใหญ่ที่ต้องการให้ข้อมูลร้อนอยู่ในแรมทั้งหมด |
ความปลอดภัย เรื่องที่พลาดกันจริงและพลาดกันบ่อย
นี่คือหัวข้อที่ต้องอ่านให้ครบก่อนเปิดใช้จริง เพราะกรณีข้อมูลรั่วจากฐานข้อมูล MongoDB ที่ถูกเปิดออกอินเทอร์เน็ตโดยไม่ตั้งรหัสผ่าน เป็นเรื่องที่เกิดขึ้นจริงและเกิดซ้ำมาตลอดหลายปี ไม่ใช่ความเสี่ยงตามทฤษฎี
สาเหตุมาจากการติดตั้งแล้วเปิดให้เข้าถึงจากทุกที่ โดยยังไม่ได้เปิดระบบตรวจสอบตัวตน ฐานข้อมูลจึงยอมให้ใครก็ตามที่รู้ไอพีและพอร์ตเข้ามาอ่านหรือลบข้อมูลได้ทันที และบนอินเทอร์เน็ตมีบอตไล่สแกนหาเครื่องแบบนี้ตลอดเวลา เครื่องที่เปิดทิ้งไว้มักถูกเจอภายในไม่กี่ชั่วโมง ไม่ใช่หลายเดือน
เคสที่โด่งดังที่สุดคือคลื่นการโจมตีเรียกค่าไถ่ในปี 2017 ที่ฐานข้อมูล MongoDB ซึ่งเปิดโล่งอยู่บนอินเทอร์เน็ตถูกลบข้อมูลทิ้งเป็นจำนวนมาก แล้วทิ้งข้อความเรียกเงินแลกกับการคืนข้อมูล เจ้าของหลายรายจ่ายไปแล้วก็ไม่ได้ข้อมูลคืน เพราะข้อมูลถูกลบทิ้งจริง ๆ ไม่ได้ถูกสำเนาเก็บไว้ก่อน
ข่าวดีคือรุ่นใหม่ ๆ ตั้งค่าเริ่มต้นให้ปลอดภัยขึ้นมาก โดยยอมรับการเชื่อมต่อจากตัวเครื่องเองเท่านั้นจนกว่าคุณจะไปแก้ค่าเอง ปัญหาส่วนใหญ่ที่ยังเกิดทุกวันนี้จึงมาจากการที่คนตั้งใจไปเปิดให้เข้าถึงจากภายนอกเพื่อความสะดวก แล้วลืมตั้งรหัสผ่านตามไป
- เปิดระบบตรวจสอบตัวตนก่อนเสมอ และสร้างบัญชีผู้ดูแลพร้อมรหัสผ่านที่ยาวและไม่ซ้ำกับที่อื่น ก่อนที่จะเปิดให้เครื่องอื่นเชื่อมต่อได้
- อย่าเปิดพอร์ตฐานข้อมูลออกสู่อินเทอร์เน็ตแบบไม่จำกัด ถ้าแอปกับฐานข้อมูลอยู่เครื่องเดียวกัน ให้ฐานข้อมูลรับเฉพาะการเชื่อมต่อจากในเครื่องพอ
- ถ้าจำเป็นต้องต่อจากภายนอก ให้จำกัดไอพีต้นทางที่ไฟร์วอลล์ หรือให้วิ่งผ่านช่องทางที่เข้ารหัสอย่าง SSH แทนการเปิดพอร์ตตรง
- สร้างบัญชีแยกต่อหนึ่งแอป และให้สิทธิ์เฉพาะฐานข้อมูลที่แอปนั้นต้องใช้ ไม่ใช้บัญชีผู้ดูแลสูงสุดเป็นบัญชีเชื่อมต่อประจำวัน
- เข้ารหัสการเชื่อมต่อเมื่อข้อมูลต้องวิ่งข้ามเครื่อง เพื่อไม่ให้ข้อมูลและรหัสผ่านวิ่งเป็นข้อความธรรมดา
- อัปเดตเวอร์ชันตามรอบ เพราะช่องโหว่ที่ถูกเปิดเผยแล้วคือสิ่งแรกที่บอตไล่ลอง
- ตรวจสอบซ้ำหลังติดตั้งเสร็จว่าพอร์ตฐานข้อมูลมองไม่เห็นจากเครื่องภายนอกจริง อย่าเชื่อว่าค่าเริ่มต้นปลอดภัยโดยไม่ทดสอบ
เรื่องอื่นที่ต้องเผื่อเมื่อรันบน VPS
นอกจากแรมกับความปลอดภัยแล้ว ยังมีรายละเอียดอีกไม่กี่ข้อที่ทำให้คนติดตั้งแล้วสะดุด และรู้ไว้ก่อนจะประหยัดเวลาได้มาก โดยเฉพาะถ้าคุณจะรันมันคู่กับบริการอื่นบนเครื่องเดียวผ่าน Docker
- สำรองข้อมูลเป็นรอบและเก็บไว้คนละเครื่อง จากนั้นทดลองกู้คืนจริงอย่างน้อยหนึ่งครั้ง ไฟล์สำรองที่ไม่เคยกู้เท่ากับไม่มี
- เผื่อพื้นที่ดิสก์มากกว่าขนาดข้อมูลจริง เพราะยังต้องมีที่ให้ index ไฟล์บันทึกการเปลี่ยนแปลง และไฟล์ระหว่างสำรองข้อมูล
- สร้าง index ให้ตรงกับคำค้นที่ใช้จริง ถ้าไม่มี index ระบบจะไล่อ่านทุก document ซึ่งกินทั้งซีพียูและแรมอย่างรวดเร็วเมื่อข้อมูลโต
- ระวังเรื่องความเข้ากันได้ของซีพียู เพราะไฟล์ติดตั้งอย่างเป็นทางการของ MongoDB ตั้งแต่รุ่น 5.0 เป็นต้นไป ต้องการซีพียูที่รองรับชุดคำสั่ง AVX ถ้าเครื่องไม่รองรับ บริการจะไม่ยอมเริ่มทำงานเลย
- ถ้าระบบต้องออนไลน์ตลอดเวลาจริง ๆ ให้วางแผนทำสำเนาข้อมูลหลายชุดข้ามเครื่อง แทนที่จะฝากทุกอย่างไว้กับเครื่องเดียว
- เฝ้าดูการใช้แรมและพื้นที่ดิสก์ไว้เสมอ เพื่อให้รู้ตัวก่อนที่บริการจะถูกปิดเพราะทรัพยากรหมด
สรุป
MongoDB คือฐานข้อมูล NoSQL ที่เก็บข้อมูลเป็น document ยืดหยุ่นแทนตารางคอลัมน์ตายตัว จุดแข็งคือรองรับข้อมูลที่รูปร่างไม่แน่นอน อ่านข้อมูลทั้งชุดได้ในครั้งเดียว และขยายเครื่องแนวกว้างได้ ส่วนจุดที่ต้องแลกคือฐานข้อมูลไม่ได้บังคับความถูกต้องให้เหมือนระบบตาราง คุณต้องออกแบบและตั้งกฎเอง
ก่อนเลือกใช้ ให้ถามตัวเองว่าข้อมูลของคุณมีรูปร่างไม่แน่นอนจริงหรือไม่ ถ้าข้อมูลเป็นตารางชัดเจนและมีความสัมพันธ์กันเยอะ ฐานข้อมูลแบบ SQL จะให้ผลที่ดูแลง่ายกว่า ลองเทียบกับ MySQL คืออะไร และ PostgreSQL คืออะไร ก่อนตัดสินใจ
และถ้าตัดสินใจจะรันเอง อย่าลืมสองข้อที่ย้ำไว้ทั้งบทความ คือเผื่อแรมให้พอตั้งแต่แรก และอย่าเปิดฐานข้อมูลออกสู่อินเทอร์เน็ตโดยไม่มีรหัสผ่านเด็ดขาด คนที่ยังไม่เคยเช่าเซิร์ฟเวอร์มาก่อนแนะนำอ่าน VPS คืออะไร และ VPS ต่างจาก Web Hosting ยังไง ประกอบ เพราะโฮสติ้งแบบแชร์ทั่วไปไม่ให้ติดตั้งฐานข้อมูลเองอยู่แล้ว
จะรัน MongoDB ต้องเผื่อแรมให้พอ
VPS ของ Plusweb มีให้เลือกตั้งแต่ 1 GB ถึง 16 GB สิทธิ์ root เต็มพร้อม Public IPv4 ในตัว ตั้งไฟร์วอลล์เองได้ทั้งหมด
คำถามที่พบบ่อย
MongoDB คืออะไรแบบสั้นที่สุด?
MongoDB คือฐานข้อมูลกลุ่ม NoSQL ที่เก็บข้อมูลเป็น document ซึ่งมีหน้าตาคล้ายข้อมูลรูปแบบ JSON แต่ละ document เก็บข้อมูลหนึ่งรายการไว้ครบในตัวเองและมีฟิลด์ไม่เท่ากันได้ ต่างจากฐานข้อมูลแบบตารางที่ทุกแถวต้องมีคอลัมน์เหมือนกัน จุดขายคือความยืดหยุ่นของโครงสร้างข้อมูล
NoSQL คืออะไร แปลว่าไม่ใช้ SQL เลยใช่ไหม?
NoSQL เป็นคำเรียกรวมของฐานข้อมูลที่ไม่ได้ยึดรูปแบบตารางเชิงสัมพันธ์เป็นหลัก ไม่ได้แปลว่าไม่มีวิธีสอบถามข้อมูล MongoDB มีรูปแบบคำสั่งของตัวเองสำหรับค้นหาและแก้ไขข้อมูล เพียงแต่ไม่ใช่ภาษา SQL มาตรฐาน และไม่ได้แปลว่าดีกว่าหรือมาแทน SQL เพราะทั้งสองแบบใช้ร่วมกันในระบบเดียวได้
MongoDB กับ MySQL ควรเลือกอะไร?
ให้ดูที่ลักษณะข้อมูลเป็นหลัก ถ้าข้อมูลเป็นตารางชัดเจน มีความสัมพันธ์กันเยอะ และต้องการความถูกต้องสูง เช่นระบบบัญชีหรือสต็อก ฐานข้อมูลแบบ SQL ตอบโจทย์ตรงกว่า แต่ถ้าข้อมูลแต่ละรายการมีฟิลด์ไม่เท่ากัน โครงสร้างยังเปลี่ยนบ่อย หรือเป็นข้อมูลเหตุการณ์ที่เขียนเข้ามาต่อเนื่อง MongoDB จะทำงานได้ลื่นกว่า
MongoDB ต้องใช้แรมเท่าไหร่?
มากกว่าที่คนส่วนใหญ่คาด เพราะค่าเริ่มต้นของมันคือกันหน่วยความจำไว้ราวครึ่งหนึ่งของแรมที่เหลือหลังหักหนึ่งกิกะไบต์ สำหรับใช้งานจริงจึงควรเริ่มที่ VPS-02 ที่ 4 GB ขึ้นไป ส่วน VPS-01 ที่ 3 GB พออยู่ได้สำหรับแอปเล็กและข้อมูลไม่มาก และ VPS-00 ที่ 1 GB เหมาะแค่การทดลองเท่านั้น
ข่าวข้อมูลรั่วจาก MongoDB เกิดจากอะไร?
เกือบทั้งหมดเกิดจากการตั้งค่าเอง ไม่ใช่ช่องโหว่ของตัวซอฟต์แวร์ คือเปิดให้ฐานข้อมูลเข้าถึงได้จากอินเทอร์เน็ตโดยยังไม่ได้เปิดระบบตรวจสอบตัวตน ใครที่สแกนเจอจึงอ่านหรือลบข้อมูลได้ทันที เคยเกิดเป็นคลื่นการโจมตีเรียกค่าไถ่ครั้งใหญ่ในปี 2017 วิธีป้องกันคือเปิดระบบตรวจสอบตัวตนก่อนเสมอ และอย่าให้ฐานข้อมูลมองเห็นได้จากอินเทอร์เน็ตสาธารณะ
ใช้ MongoDB ฟรีได้ไหม?
รุ่น Community ดาวน์โหลดและติดตั้งใช้กับระบบของตัวเองได้ฟรี แต่ตั้งแต่ปี 2018 เป็นต้นมาใช้สัญญาอนุญาตแบบ SSPL ซึ่งมีเงื่อนไขเข้มสำหรับผู้ที่นำตัวฐานข้อมูลไปเปิดเป็นบริการให้คนอื่นใช้ในลักษณะบริการคลาวด์ สำหรับการใช้งานทั่วไปในระบบของตัวเองบน VPS เรื่องนี้ไม่กระทบ
GUIDES
บทความที่เกี่ยวข้อง
อ่านต่อในหัวข้อใกล้เคียง
MySQL คืออะไร? เข้าใจฐานข้อมูลยอดนิยมแบบไม่ต้องมีพื้นฐาน
MySQL คือระบบจัดการฐานข้อมูลเชิงสัมพันธ์ที่เว็บทั่วโลกใช้เก็บข้อมูลมากที่สุดตัวหนึ่ง อ่านให้เข้าใจว่ามันคืออะไร เก็บข้อมูลยังไง ต่างจาก MariaDB ตรงไหน และควรรันบนโฮสติ้งหรือบน VPS
อ่านต่อPostgreSQL คืออะไร? จุดเด่น ข้อจำกัด และวิธีเลือกให้ตรงงาน
PostgreSQL คือฐานข้อมูลโอเพนซอร์สที่ขึ้นชื่อเรื่องความถูกต้องของข้อมูลและความสามารถขั้นสูง อ่านให้เข้าใจจุดเด่นจริง ๆ ของมัน เทียบกับ MySQL แบบไม่เชียร์ข้างเดียว และสิ่งที่ต้องเผื่อเมื่อรันบน VPS
อ่านต่อRedis คืออะไร? ใช้ทำอะไร และควรเผื่อสเปกเท่าไหร่
Redis คือที่เก็บข้อมูลที่วางข้อมูลไว้ในแรม จึงอ่านเขียนได้เร็วมาก แต่ก็มีข้อแลกเปลี่ยนที่ต้องรู้ก่อนใช้ อ่านให้ครบว่ามันเหมาะกับงานแบบไหน ไม่เหมาะกับอะไร และต้องระวังเรื่องอะไรบ้าง
อ่านต่อ