태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
BLOG main image
Not so Simple World (251)
이생각 저생각 (92)
이클립스 RCP (10)
Books (15)
잊기전에 회고 (7)
Better SW Development (83)
node.js (OctoberSkyJs) (32)
[뭘, 이런걸 다?] (12)
bảng giá máy tính xách tay
bảng giá máy tính xách tay
Beer Brewing Tutorials
Beer Brewing Tutorials
harga alat kesehatan spirometri
harga alat kesehatan spirometri
air max pas cher
air max pas cher
veste parajumpers
veste parajumpers
«   2017/12   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
856,120 Visitors up to today!
Today 286 hit, Yesterday 324 hit
rss
tistory 티스토리 가입하기!
Recent Entries
2011.03.31 09:33
IBM DeveloperWorks에 올라온 기사 Java development 2.0: MongoDB를 좀 더 잘 이해하기 위한 보충설명입니다. :)

Java development 2.0: MongoDB:
(적절한) RDBMS 이동 기능을 제공하는 NoSQL 데이터 저장소

http://www.ibm.com/developerworks/kr/library/j-javadev2-12/index.html

 

<기본 용어설명>
스케일 업(Scale Up) : 서버 성능을 올리는 것. CPU 증설, 램 Up~
스케일 아웃(Scale Out): 서버 대수를 늘리는 것.
 

샤딩(Sharding): 데이터 베이스의 수평확장(horizontal partitioning)의 일종. 일반적으로 한 테이블의 Row를 분산시키는 것. 요금테이블 -> 1월요금테이블, 2월요금테이블.. 등등으로 나눈다고 생각하면 간단합니다. 샤딩에 대해서는 조만간 따로 글을 올리도록 하겠습니다.

<내용부연 설명>
기사 내용자체가 원체 쉽게 잘 쓰여 있습니다만, 그래도 아래 내용을 먼저 보시고 읽어보시면 더 더욱 쉽게 이해되실 겁니다. :)

"MongoDB의 API는 JSON 오브젝트와 JavaScript 함수의 혼합체이다."
네. 그렇습니다. 따라서 콘솔상에서 자바스크립트 문법을 실행하는 것이 가능합니다.
 

doortts:~/Development/mongodb-osx-x86_64-1.8.0> ./bin/mongo
MongoDB shell version: 1.8.0
connecting to: test

> var a=1, b=2;
> a+b;
3

> print ('hello mongo');
hello mongo
>


dW 기사의 mongodb 실행 명령어는 오타인듯 합니다. 아래와 같이 해야 정상실행됩니다.
./bin/mongod --dbpath ./data/db --vvvvvvv

기사에도 나오지만 mongodb는 document 기반 NoSql중 하나로 기본 데이터로 json 형식을 지원합니다.
ticket =  { officer: "Kristen Ree" , location: "Walmart parking lot", vehicle_plate: "Virginia 5566",  offense: "Parked in no parking zone", date: "2010/08/15"}

> db.tickets.save(ticket);
> ticket
 

{
    "officer" : "Kristen Ree",
    "location" : "Walmart parking lot",
    "vehicle_plate" : "Virginia 5566",
    "offense" : "Parked in no parking zone",
    "date" : "2010/08/15",
    "_id" : ObjectId("4d92e8f3a9770dc9e1e6a027")
}
tickets라는 컬렉션은 미리 지정해 놓지 않아도 위와 같이 명령을 쓰는 순간 만들어 집니다.

> db.tickets.find();

{ "_id" : ObjectId("4d92e8f3a9770dc9e1e6a027"), "officer" : "Kristen Ree", "location" : "Walmart parking lot", "vehicle_plate" : "Virginia 5566", "offense" : "Parked in no parking zone", "date" : "2010/08/15" }

> db.tickets.find({location:/walmart/})

{ "_id" : ObjectId("4d92e8f3a9770dc9e1e6a027"), "officer" : "Kristen Ree", "location" : "Walmart parking lot", "vehicle_plate" : "Virginia 5566", "offense" : "Parked in no parking zone", "date" : "2010/08/15" }

find를 이용해서 컬렉션 안의 데이터를 검색합니다. 삭제는 remove를 이용합니다. find때와 마찬가지로 정규식을 지원합니다. i 는 대소문자 무구분!

db.tickets.remove({vehicle_plate:/virginia/i});

다음은 Mongodb Java Driver를 이용해 만들어 본 데이터 입력에 대한 단위테스트 케이스 입니다.
import static org.junit.Assert.*;

import org.junit.*;

import com.mongodb.*;


public class MongodbTest {

	private DB db;
	private Mongo m;

	@Before
	public void setUp() throws Exception {
		m = new Mongo();
	}
	
	@After
	public void tearDown() throws Exception {
		db = m.getDB("test");
		DBCollection coll = db.getCollection("tickets");
		coll.drop();
	}

	@Test
	public void testMongodbInsert() throws Exception {
		//Given
		BasicDBObject doc = new BasicDBObject();
		doc.put("officer", "Andrew Smith");
		doc.put("location", "Target Shopping Center parking lot");
		doc.put("vehicle_plate", "Virginia 2345");
		doc.put("offense", "Double parked");
		doc.put("date", "2010/08/13");

		//When
		db = m.getDB("test");
		DBCollection coll = db.getCollection("tickets");
		coll.insert(doc);

		//Then
		DBObject dbObject = coll.find(doc).next();

		assertEquals(doc.keySet(), dbObject.keySet());
		assertEquals("Andrew Smith", dbObject.get("officer"));
		assertEquals("Target Shopping Center parking lot", dbObject.get("location"));
		assertEquals("Virginia 2345", dbObject.get("vehicle_plate"));
		assertEquals("Double parked", dbObject.get("offense"));
		assertEquals("2010/08/13", dbObject.get("date"));
	}
}

저작자 표시 비영리 동일 조건 변경 허락
신고