몽고디비란 것이 있다. MongoDB. 속도도 빠르고, 개념도 깔끔하다. CouchDB라던가 Hadoop 따위는 아직은 나한테는 공부용인 것 같았지만 이 녀석은 달라보인다.
실무에 곧바로 적용해보기로 하고, 간단하게 방금 공부한 것을 정리해둔다.
먼저 깔끔한 우분투 8.04 LTS를 서버버전으로 깔았다.
[code shell]sudo mkdir -p /data/db
cd /opt/
wget http://downloads.mongodb.org/linux/mongodb-linux-i686-latest.tgz
sudo tar -zxvf mongodb-linux-i686-latest.tgz
sudo mv mongodb-linux-i686-2009-11-09/ mongodb
sudo mongodb/bin/mongod [/code]
라고 하고, 터미널을 하나 더 열었다.
vi m.groovy 해서 다음 내용을 넣었다.
[code groovy]import com.mongodb.*
def m = new Mongo()
def db = m.getDB("mydb")
def coll = db.getCollection("myfam")
coll.drop()
def doc = [name:"한글", desc:"mytest", age:21, loc: [x:203, y:102]]
as BasicDBObject
def doc2 = [name:"영어", desc:"wife", age:22, loc: [x:253, y:102]]
as BasicDBObject
coll.insert(doc)
coll.insert(doc2)
println coll.getCount()
def obj = coll.findOne([age:21] as BasicDBObject)
println obj
println "showing a custom query"
def cur = coll.find([age:['$lt':23]] as BasicDBObject)
while(cur.hasNext()) {
println cur.next()
}
def obj2 = coll.findOne([name:"한글"] as BasicDBObject)
println obj2[/code]
그리고
[code shell]wget http://cloud.github.com/downloads/mongodb/mongo-java-driver/mongo-1.0.jar
groovy -cp mongo-1.0.jar m.groovy[/code]
여기까지 실행해보면, 서버가 잘 동작하고, 자바/그루비랑도 잘 어울리는 것을 알 수있다. 조금만 더 공부해보자. (여기가 더 재미있다.)
--------
[code shell]~$ /opt/mongodb/bin/mongo[/code]
를 실행해보자.
[code]MongoDB shell version: 1.1.3-
url: test
connecting to: test
type "help" for help
> show dbs
admin
local
mydb
> show collections
system.indexes
testCollection // 방금 그루비로 만든 녀석이다.
> db.xx.save({name:"hhh",age:11}) // xx 는 정의한적이 없다.
> db.xx.save({name:"yyy",age:12}) //스키마도 만든적이 없다.
> db.xx.save({name:"xxx",age:13}) //그냥 save해버린다.
> show collections
system.indexes
testCollection
xx // xx라는 컬렉션이 생겼다.
// 검색도 해보자
> db.xx.find({age:12})
{ "_id" : ObjectId("4af82b2e3138af056bab5259"), "name" : "yyy", "age" : 12 }
// 11살넘는 아이들만..
> db.xx.find({age: {$gt : 11}})
{ "_id" : ObjectId("4af82b2e3138af056bab5259"), "name" : "yyy", "age" : 12 }
{ "_id" : ObjectId("4af82cb03138af056bab525a"), "name" : "xxx", "age" : 13 }
exit
[/code]
여기까지.. 이후에는 몽고디비 홈페이지에서 문서를 보면서 조금씩 더 공부하면 되겠다.
P.S. 그루비 소스는 http://jameswilliams.be/blog/entry/165 에서 가져왔다. (한글 때문에 조금 손댔다)
mongo 쉘 데모는 http://hompy.info/586 를 참고했다. (조금만 바꿔서 해봤다)
실무에 곧바로 적용해보기로 하고, 간단하게 방금 공부한 것을 정리해둔다.
먼저 깔끔한 우분투 8.04 LTS를 서버버전으로 깔았다.
[code shell]sudo mkdir -p /data/db
cd /opt/
wget http://downloads.mongodb.org/linux/mongodb-linux-i686-latest.tgz
sudo tar -zxvf mongodb-linux-i686-latest.tgz
sudo mv mongodb-linux-i686-2009-11-09/ mongodb
sudo mongodb/bin/mongod [/code]
라고 하고, 터미널을 하나 더 열었다.
vi m.groovy 해서 다음 내용을 넣었다.
[code groovy]import com.mongodb.*
def m = new Mongo()
def db = m.getDB("mydb")
def coll = db.getCollection("myfam")
coll.drop()
def doc = [name:"한글", desc:"mytest", age:21, loc: [x:203, y:102]]
as BasicDBObject
def doc2 = [name:"영어", desc:"wife", age:22, loc: [x:253, y:102]]
as BasicDBObject
coll.insert(doc)
coll.insert(doc2)
println coll.getCount()
def obj = coll.findOne([age:21] as BasicDBObject)
println obj
println "showing a custom query"
def cur = coll.find([age:['$lt':23]] as BasicDBObject)
while(cur.hasNext()) {
println cur.next()
}
def obj2 = coll.findOne([name:"한글"] as BasicDBObject)
println obj2[/code]
그리고
[code shell]wget http://cloud.github.com/downloads/mongodb/mongo-java-driver/mongo-1.0.jar
groovy -cp mongo-1.0.jar m.groovy[/code]
여기까지 실행해보면, 서버가 잘 동작하고, 자바/그루비랑도 잘 어울리는 것을 알 수있다. 조금만 더 공부해보자. (여기가 더 재미있다.)
--------
[code shell]~$ /opt/mongodb/bin/mongo[/code]
를 실행해보자.
[code]MongoDB shell version: 1.1.3-
url: test
connecting to: test
type "help" for help
> show dbs
admin
local
mydb
> show collections
system.indexes
testCollection // 방금 그루비로 만든 녀석이다.
> db.xx.save({name:"hhh",age:11}) // xx 는 정의한적이 없다.
> db.xx.save({name:"yyy",age:12}) //스키마도 만든적이 없다.
> db.xx.save({name:"xxx",age:13}) //그냥 save해버린다.
> show collections
system.indexes
testCollection
xx // xx라는 컬렉션이 생겼다.
// 검색도 해보자
> db.xx.find({age:12})
{ "_id" : ObjectId("4af82b2e3138af056bab5259"), "name" : "yyy", "age" : 12 }
// 11살넘는 아이들만..
> db.xx.find({age: {$gt : 11}})
{ "_id" : ObjectId("4af82b2e3138af056bab5259"), "name" : "yyy", "age" : 12 }
{ "_id" : ObjectId("4af82cb03138af056bab525a"), "name" : "xxx", "age" : 13 }
exit
[/code]
여기까지.. 이후에는 몽고디비 홈페이지에서 문서를 보면서 조금씩 더 공부하면 되겠다.
P.S. 그루비 소스는 http://jameswilliams.be/blog/entry/165 에서 가져왔다. (한글 때문에 조금 손댔다)
mongo 쉘 데모는 http://hompy.info/586 를 참고했다. (조금만 바꿔서 해봤다)