วันอังคารที่ 18 มีนาคม พ.ศ. 2557

ทำความรู้จักกับ MongoDB [การติดตั้ง MongoDB สำหรับ Windows,การ Insert, Update, Remove ข้อมูล]



MongoDB คือ NoSQL รูปแบบหนึ่ง ที่ไม่เหมือนกับ MySQL แน่ๆ ซึ่ง NoSQL ก็มีข้อจำกัดและความสามารถบางอย่างที่ไ่ม่สามารถแทน MySQL ได้ทั้งหมด

จุดเด่นของ NoSQL ส่วนใหญ่ คือความสามารถในการ write ข้อมูลได้เร็วกว่า MySQL เป็นอย่างมาก หากงานที่เราทำนั้นเน้นการ write ข้อมูลมากๆ เช่นต้องเก็บ Log แบบตลอดเวลาแบบ Real-time ทุกการกระทำ และข้อมูลมีขนาดใหญ่โตมาก การใช้งาน MongoDB ก็จะตอบโจทย์ได้เป็นอย่างดี

MongoDB เป็น database แบบ Document-Oriented โดยลักษณะข้อมูลที่ทำการเก็บจะคล้ายกับ JSON เป็นอย่างมาก มีข้อดีอย่างมากคือ Row แต่ละ Row ไม่จำเป็นต้องมีโครงสร้างข้อมูลเหมือนกัน

ในเรื่อง Memory การช้ NoSQL หลายคนอาจเข้าใจผิดว่าจะกิน Memory ซึ่งไม่เป็นความจริง

การออกแบบ Database Schema MongoDB มีความยืดหยุ่นในการออกแบบสูงกว่า MySQL ในโลกของ MySQL เรามี Primary Key, Foreign Key สำหรับเชื่อมข้อมูลหลายตารางเข้าด้วยกัน แต่ในโลกของ MongoDB เราอาจกระจายข้อมูลไว้ในหลายตาราง (MongoDB เรียกว่า Collection) แล้วเชื่อมกันด้วย Reference ก็ได้ หรือเราจะเก็บเป็น Embedded Document ก็ได้ ซึ่งแต่ละแบบก็มีข้อดีข้อเสียแตกต่างกันไป 

แอปที่มีลักษณะการเก็บข้อมูลเป็นเอกสาร เช่น กระทู้ บล็อก ประกาศขายสินค้า ที่ไม่ต้องเอาเอกสารไปสร้าง Relation กับข้อมูลอื่นๆ มาก และมีความต้องการขยายข้อมูลออกไปเรื่อยๆ ไม่มีการลบข้อมูลเก่าออกจากระบบ มีผู้ใช้เข้าใช้งานหนาแน่น ก็ลองพิจารณา MongoDB ดูครับ

การติดตั้ง MongoDB บน Windows
1.ก่อนอื่นเข้าไปที่ http://www.mongodb.org/downloads แล้วเลือก Dowload MongoDB for windows 64-bit



2.เมื่อดาวน์โหลดเสร็จแล้ว จะได้ไฟล์ mongodb-win32-x86_64-2.4.9.zip  ดังรูป



3.จากนั้นทำการแตกไฟล์ (Unzip) มาเก็บไว้ที่ไดร์ C: หรือไดเรกทอรี่ต้องการได้เลยครับ เจ้าของกระทู้ขอเปลี่ยนชื่อโฟล์เดอร์ใหม่เป็น mongodb เพื่อให้ง่ายกับการใช้คำสั่งบน Command line



3.สร้างโฟล์เดอร์ data/db

พิมพ์คำสั่ง Make Directory บน Command Line ก็ได้ เราจะได้โฟล์เดอร์ data/db 

>cd\
>md data\db







4. เปิดการทำงานของ MongoDB บน Server ใช้คำสั่ง


>C:\mongodb\bin\mongod.exe




5.เปิด Command Line อีกหน้าต่างหนึ่ง ทดสอบการ Connect ระหว่าง Client กับ Server พิมพ์คำสั่งต่อไปนี้


>C:\mongodb\bin\mongo.exe




แสดงผลการเชื่อมต่อระหว่าง Client กับ Server


6. การ Insert Data 




7.การ Update ข้อมูล

ก่อนอัพเดทข้อมูล


หลังอัพเดทข้อมูล


8.การ Remove ข้อมูล



ศึกษาคำสั่งเพิ่มเติมได้ที่ http://docs.mongodb.org/manual/

การติดตั้ง Service MongoDB

เปิด Command Line (CMD) โดยเลือก Start > run >cmd แล้วคลิกขวาเลือก Run as administrator จากนั้นพิมพ์คำสั่ง

>C:\mongodb\bin\mongod.exe --config C:\mongodb\bin\mongod.cfg --install


การ Start Service ของ MongoDB สามารถทำได้ โดยการพิมพ์คำสั่ง ดังนี้

>net start MongoDB


การ Stop Service ของ MongoDB สามารถทำได้ โดยการพิมพ์คำสั่ง ดังนี้

>net stop MongoDB


และการลบ Service MongoDB ออกจาก Windows สามารถทำได้ โดยการพิมพ์คำสั่ง ดังนี้

>C:\mongodb\bin\mongod.exe --remove

การใช้ MongoDB กับ JAVA


1.การเชื่อมต่อ MongoDB 


การเชื่อมต่อไปยัง Server สำหรับ MongoDB Version มากกว่าหรือเท่ากับ 2.10.0

// เวอร์ชั่นเก่า, uses Mongo
 Mongo mongo = new Mongo("localhost", 27017);
 
 // สำหรับเวอร์ชั่นมากกว่า 2.10.0, uses MongoClient
 MongoClient mongo = new MongoClient( "localhost" , 27017 );

2.สร้าง Database 

การสร้าง Database หากไม่มีชื่อ Database นี้อยู่ MongoDB จะทำการสร้าง Database ใหม่ขึ้นมาให้

 DB db = mongo.getDB("database name");
แสดงข้อมูลใน Database ทั้งหมด
 List<String> dbs = mongo.getDatabaseNames();
 for(String db : dbs){
  System.out.println(db);
 }

3. Mongo Collection

ดึงค่าจาก Collection หรือTable ใน MySQLไม่ใช่ Table ซะทีเดียว แต่อยู่ในระดับเดียวกัน
 DB db = mongo.getDB("testdb");
 DBCollection table = db.getCollection("user");
แสดงข้อมูลจาก Collection ที่เลือกจาก Database
 DB db = mongo.getDB("testdb");
 Set<String> tables = db.getCollectionNames();
 
 for(String coll : tables){
  System.out.println(coll);
 }

4. Save example

จัดเก็บข้อมูล(Data) ลงใน (Collection) ชื่อ “user”.
 DBCollection table = db.getCollection("user");
 BasicDBObject document = new BasicDBObject();
 document.put("name", "mkyong");
 document.put("age", 30);
 document.put("createdDate", new Date());
 table.insert(document);

5. ตัวอย่างการ Update ข้อมูล

อัพเดทข้อมูลที่ “name=mkyong”.
 DBCollection table = db.getCollection("user");
 
 BasicDBObject query = new BasicDBObject();
 query.put("name", "mkyong");
 
 BasicDBObject newDocument = new BasicDBObject();
 newDocument.put("name", "mkyong-updated");
 
 BasicDBObject updateObj = new BasicDBObject();
 updateObj.put("$set", newDocument);
 
 table.update(query, updateObj);

6. ตัวอย่างการค้นหา(Find) ข้อมูล

ค้นหา Documnet ที่ "name=mkyong”, และแสดงข้อมูลด้วย DBCursor
 DBCollection table = db.getCollection("user");
 
 BasicDBObject searchQuery = new BasicDBObject();
 searchQuery.put("name", "mkyong");
 
 DBCursor cursor = table.find(searchQuery);
 
 while (cursor.hasNext()) {
  System.out.println(cursor.next());
 }

9. Delete example

ค้นหา Document ที่ “name=mkyong”, และลบออก
 DBCollection table = db.getCollection("user");
 
 BasicDBObject searchQuery = new BasicDBObject();
 searchQuery.put("name", "mkyong");
 
 table.remove(searchQuery);

ตัวอย่างโค๊ดทั้งหมดของโปรแกรม Hello World!

package com.example.news;

import java.net.UnknownHostException;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
protected TextView add;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
add = (TextView) findViewById(R.id.textView1);

try {
/**** Connect to MongoDB ****/
// Since 2.10.0, uses MongoClient
MongoClient mongo = new MongoClient("localhost", 27017);

/**** Get database ****/
// if database doesn't exists, MongoDB will create it for you
DB db = mongo.getDB("testdb");

/**** Get collection / table from 'testdb' ****/
// if collection doesn't exists, MongoDB will create it for you
DBCollection table = db.getCollection("user");

/**** Insert ****/
// create a document to store key and valu

}
catch (UnknownHostException e) {

} catch (MongoException e) {
e.printStackTrace();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


ที่มา:
http://www.thaicreate.com/community/mongodb-tutorial.html
http://www.mkyong.com/mongodb/java-mongodb-hello-world-example/
http://goo.gl/MZtAWa
http://goo.gl/fIZSc7


ไม่มีความคิดเห็น:

แสดงความคิดเห็น