เมื่อลองจับ MongoDB ครั้งแรก #หิวเลย

Boyd BigData RPG
Big Data Engineering
3 min readNov 15, 2017
นั่นมัน Mango !!

เดี๋ยวๆนะ MongoDB คืออะไรหว่า หลายคนก็คงเคยได้ยินมาเยอะแยะมากมาย แต่ส่วนใหญ่อาจจะยังไม่เคยได้ลองเล่นกับมัน วันนี้ก็เลยจะลองแชร์ ประสบการณ์ที่ได้เรียนมาอันน้อยนิดแชร์กันนะครับ (รูปไม่เกี่ยวแต่อย่างใด 5555+)

MongoDB คือ โปรแกรมช่วยจัดการฐานข้อมูลในรูปแบบ NoSQL (Not only structured query language) ลองเข้าไปชมเวปไซต์เข้าได้ << คลิก >>

เพราะในโลกยุคปัจจุบันข้อมูลของเราไม่ได้ถูกจัดเก็บในรูปแบบเพียงแค่ SQL หรือรูปแบบที่เราเข้าใจได้ง่ายๆ เป็นตาราง มี row มี column ชัดเจน แต่ยังมีข้อมูลที่เป็นในรูปแบบ ของ “Video”, “Image”, “Voice”, และอื่นๆอีกมากมาย และด้วยปริมาณที่ ข้อมูลต่างๆมีมากขึ้นแบบ Exponential (แบบ f(x) = x^n ) ทำให้การใช้ฐานข้อมูลแบบเดิมๆเป็นไปได้ยากขึ้น

Source: http://www.techvshuman.com/2016/04/27/future-of-business/

MongoDB กับการเติบโต อย่างก้าวกระโดดโดยผลสำรวจจาก เวปไซต์จัดอันดับ

Source: https://db-engines.com/en/ranking

จะเห็นว่า อันดับแรกเป็นกลุ่มที่ Poppular กันอยู่แล้ว และเป็นฐานข้อมูลชนิด RDBMS ที่มีการเก็บข้อมูลแบบ SQL

แล้วถ้าอยากจะลองใช้ MongoDB บ้างล่ะเริ่มจากตรงไหนดี !!??

>> ดาวน์โหลดโปรแกรม MongoDB <<

>> ดาวน์โหลดโปรแกรมช่วยจัดการ MongoDB <<

หลังจากโหลดเสร็จแล้วและลงเครื่องเรียบร้อย ก็มาต่อกันตามนี้เลย

  • หากลงปกติตัว Program จะมาอยู่ตามนี้
    C:\Program Files\MongoDB\Server\3.4\bin
  • จากนั้นทำการสร้าง Folder ที่เก็บข้อมูลของเรา ไว้ที่ไหนก็ได้แต่ต้องจำได้นะ อิอิ อย่างของผมก็เก็บไว้ประมาณนี้ D:\data
  • จากนั้นก็กดเรียก Command Prompt ขึ้นมาแล้วพิมพ์ตามขั้นตอนนี้เลย
cd "C:\Program Files\MongoDB\Server\3.4\bin"
  • เสร็จแล้วกด Enter 1 ที แล้วตามด้วย code ด้านล่างต่อ
mongod --dbpath "D:\data"
  • เสร็จแล้วกด Enter 1 ทีเป็นอันเสร็จ แต่ยังไม่ต้องปิด Command Prompt นะมันจะรันให้เราแปบเดียวก็เสร็จ

เรามาต่อกันที่ตัวจัดการ MongoDB หรือ Robo3T กัน

  • คลิกที่เจ้าตัว Icon หุุ่นยนต์โลดด !!
  • ค่า Default ของ Local Address โดยปกติคือ 27017 หากมีอยู่แล้วก็ Connect ได้เลย
  • ถ้าหากยังไม่มีให้ Connect ก็ลองกด Create ด้านบน ก่อนนะครับ แล้ว ok
  • จากนั้น คลิกขวาที่ Test แล้วกด Run Shell ดูครับ
  • Shell นี่แหละที่เราจะเอาไว้สร้าง Dataset หรือทำการ Query กับมัน
  • หากเราลอง Double Click ที่ Student จะได้ Document ที่เกี่ยวข้องตามนี้
  • เนื่องจาก MongoDB มีการเก็บไฟลล์แบบ Document โดยมี Key value ของมัน เช่นอันนี้เป็นข้อมูลนักเรียนที่มีการเก็บในกลุ่มของ Object id หากเรากดเข้าไป หรือทำการเรียกหาก็จะต้องทำการค้นหาจาก Object id ที่เฉพาะนั้นๆ เพื่อทำการค้นเข้าไปต่อ
  • Data ของ MongoDB จะถูกเขียนในรูปแบบของ JSON file ดังนั้นหากจะเก็บข้อมูลต่างๆก็ต้องเขียนในรูปแบบดังกล่าว
คนละ JSON ละเพ่ !!!!

งั้นเรามาเริ่มเขียนกันดีกว่า

  • เริ่มจากมาที่ช่องเขียน Code แล้วเรียกใช้ database ที่ช่อง shell นี้นะ
use pokemon
  • รูปแบบของ JSON กับการสร้าง Dataset เริ่มต้นก็ประมาณนี้เลย
db.pokemon.insert({
_id: ObjectId(),
title: 'Pokedex',
description: 'Pokedex is the pokemon database',
pkid: '001',
pkname: 'Chamander',
pktype: 'Fire',
pkevol: 16
})
  • เสร็จแล้วลองคลุมเฉพาะแค่ code ที่เรา insert แล้วกด Ctrl + Enter ดูเพื่อ Run
  • ตรวจสอบอีกทีว่าขึ้นไหมโดยคำสั่ง
db.pokemon.find()
  • หากสำเร็จจะได้ผลแสดงออกมาดังนี้

แล้วถ้าถามเรื่องประสิทธิภาพล่ะ

  • NoSQL ใช้วเลา Run มากกว่า SQL เพราะมันต้องคนหาทีละ Key เข้าไป และอีกอย่างตัว Data มันก็ไม่ได้เก็บอย่างเป็นระเบียบเหมือนกับ SQL นั่นเอง
  • แต่แน่นอน NoSQL ก็แลกมากับการที่มันมีความยืดหยุ่นกว่ามากนั่นเองครับ

เรียน และ ศึกษา MongoDB เพิ่มเติมได้ที่ << PDF file >>

เนื่องจากภาษาของ Mongodb ไม่เหมือนกับฝั่งตระกูล SQL ที่เวลา Query แล้วจะเหมือนภาษาคนซะมากกว่าและเข้าใจได้ง่ายแม้ไม่เคย Code ก็ตามที แต่กลับกัน เจ้า MongoDB มีเงื่อนไขค่อนข้างเยอะกว่า แต่ให้ผลลัพธ์ที่เหมือนกัน ทำให้นักพัฒนามีการปรับให้ง่ายขึ้น จาก Run บน Shell ก็เปลี่ยนมา Run บน Jupytet โดยภาษา Python หรือเรียกอีกชื่อ Pymongo นั่นเอง

จะเริ่ม Pymongo จากไหนดีล่ะ ??

เดี๋ยวไว้มาต่อกันในเรื่องการใช้งาน Jupyter ใน Blog ต่อไปละกันนะครับ

สำหรับครั้งนี้ก็มาจากที่เคยได้มีโอกาสเรียนกับท่านยกสมาคม Programmer ไทยพี่ ปั๊บ Apaichon Punopas อ. เจด Worajedt Sitthidumrong และ อ. เอก Eakasit Pacharawongsakda ครับผม

หากเพื่อนๆมีไอเดียอะไรเพิ่มเติม หรือเนื้อหาผิดพลาดประการใด ติชม เพื่อการปรับปุงได้เลยครับ แล้วจะลองเขียนบทความที่เกี่ยวกับ โลกของ Data Science แบบง่ายๆ
(ที่บอยด์เข้าใจ หรือพึ่งเข้ามาในวงการนี่แหละมาลงให้อ่านกันเรื่อยๆนะ ถ้ามีเวลา อิอิ)

--

--

Boyd BigData RPG
Big Data Engineering

Lead Data Scientist | Digital Marketer | Biotechnologist | Vlogger | @BigDataRPG | BS Biot30 KU69 | BD03 DPU