My Programing/DataBase
mongo DB 를 시작하다..
nkdk
2011. 12. 5. 11:17
오랜만에 새로운 db 에 도전한다. 이름하여 몽고 DB
몽고에서 만든건 아니다 ㅎㅎ
요즘 트랜드에 맞춰 noSQL을 사용해 보고자 늦게 나마 책 사서 공부 했는데. 이놈 물건이다.
테이블에 저장한다는 개념이 아니고 문서에 저장한다는 개념이다.
예전부터 mysql, oracle, mssql, msql 을 쓰던 사람은 언뜻 무슨말인지 모를지도 모른다.
그건 차차 하면서 알게 될 것이다.
MongoDB의 API는 JSON 오브젝트와 JavaScript 함수의 혼합체이다.
MongoDB는 빠르다는 장점도 가지고 있다. 이는 주로 데이터를 쓰는 방법 즉, 데이터를 메모리에 저장한 후 나중에 백그라운드 스레드를 통해 디스크에 기록하는 방법이 속도 향상 효과를 제공하기 때문이다.
등의 장점을 가지고.. 시작해 본다 하다보면 단점도 있겠지 !
일단 설치인데요. 이 부분부터 마음에 든다. 나 같은 경우는 ubuntu를 쓰고 있기 때문에,
sudo apt-get install mongodb-server
설치 완료이다.
나머지 운영체제에서는 인터넷에 많이 나와있겠죠?
- DB실행
> mongod --dbpath ./db --vvvvvvvv --port 33333 --fork --logpath /var/log/mongodb.log --logappend
data/db 는 어떤 db 폴더에 넣을지 지정하면 된다.
port는 33333 로 지정했습니다.
-- DB 쉘 시작
> mongo
이렇게 하면 쉘이 실행됩니다.
기본적으로 명령어들이 json 을 사용합니다.
{ option1 : "on", option2 : 0}
이런식으로요.
그럼 기존에 sql 과 몽고db 에서 사용하는 명령어를 비교해 봅시다.
아래 표 참고
재미있네요.
그럼 다음 편에서는 좀 더 자세하게 나가보도록 하겠습니다.
튜닝이라던지 어드밴스 한 부분을 살펴 보겠습니다.
몽고에서 만든건 아니다 ㅎㅎ
요즘 트랜드에 맞춰 noSQL을 사용해 보고자 늦게 나마 책 사서 공부 했는데. 이놈 물건이다.
테이블에 저장한다는 개념이 아니고 문서에 저장한다는 개념이다.
예전부터 mysql, oracle, mssql, msql 을 쓰던 사람은 언뜻 무슨말인지 모를지도 모른다.
그건 차차 하면서 알게 될 것이다.
MongoDB의 API는 JSON 오브젝트와 JavaScript 함수의 혼합체이다.
MongoDB는 빠르다는 장점도 가지고 있다. 이는 주로 데이터를 쓰는 방법 즉, 데이터를 메모리에 저장한 후 나중에 백그라운드 스레드를 통해 디스크에 기록하는 방법이 속도 향상 효과를 제공하기 때문이다.
등의 장점을 가지고.. 시작해 본다 하다보면 단점도 있겠지 !
일단 설치인데요. 이 부분부터 마음에 든다. 나 같은 경우는 ubuntu를 쓰고 있기 때문에,
sudo apt-get install mongodb-server
설치 완료이다.
나머지 운영체제에서는 인터넷에 많이 나와있겠죠?
- DB실행
> mongod --dbpath ./db --vvvvvvvv --port 33333 --fork --logpath /var/log/mongodb.log --logappend
verbose
플래그도 지정한다. v가 많을수록 더 많은 세부사항이 표시된다.data/db 는 어떤 db 폴더에 넣을지 지정하면 된다.
port는 33333 로 지정했습니다.
-- DB 쉘 시작
> mongo
이렇게 하면 쉘이 실행됩니다.
기본적으로 명령어들이 json 을 사용합니다.
{ option1 : "on", option2 : 0}
이런식으로요.
그럼 기존에 sql 과 몽고db 에서 사용하는 명령어를 비교해 봅시다.
아래 표 참고
SQL Statement | Mongo Statement |
---|---|
CREATE TABLE USERS (a Number, b Number) |
implicit; can also be done explicitly withdb.createCollection("mycoll") |
ALTER TABLE users ADD ... |
implicit |
INSERT INTO USERS VALUES(3,5) |
db.users.insert({a:3,b:5}) |
SELECT a,b FROM users |
db.users.find({}, {a:1,b:1}) |
SELECT * FROM users |
db.users.find() |
SELECT * FROM users WHERE age=33 |
db.users.find({age:33}) |
SELECT a,b FROM users WHERE age=33 |
db.users.find({age:33}, {a:1,b:1}) |
SELECT * FROM users WHERE age=33 ORDER BY name |
db.users.find({age:33}).sort({name:1}) |
SELECT * FROM users WHERE age>33 |
db.users.find({age:{$gt:33}}) |
SELECT * FROM users WHERE age!=33 |
db.users.find({age:{$ne:33}}) |
SELECT * FROM users WHERE name LIKE "%Joe%" |
db.users.find({name:/Joe/}) |
SELECT * FROM users WHERE name LIKE "Joe%" |
db.users.find({name:/^Joe/}) |
SELECT * FROM users WHERE age>33 AND age<=40 |
db.users.find({'age':{$gt:33,$lte:40}}) |
SELECT * FROM users ORDER BY name DESC |
db.users.find().sort({name:-1}) |
SELECT * FROM users WHERE a=1 and b='q' |
db.users.find({a:1,b:'q'}) |
SELECT * FROM users LIMIT 10 SKIP 20 |
db.users.find().limit(10).skip(20) |
SELECT * FROM users WHERE a=1 or b=2 |
db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } ) |
SELECT * FROM users LIMIT 1 |
db.users.findOne() |
SELECT DISTINCT last_name FROM users |
db.users.distinct('last_name') |
SELECT COUNT(*y) FROM users |
db.users.count() |
SELECT COUNT(*y) FROM users where AGE > 30 |
db.users.find({age: {'$gt': 30}}).count() |
SELECT COUNT(AGE) from users |
db.users.find({age: {'$exists': true}}).count() |
CREATE INDEX myindexname ON users(name) |
db.users.ensureIndex({name:1}) |
CREATE INDEX myindexname ON users(name,ts DESC) |
db.users.ensureIndex({name:1,ts:-1}) |
EXPLAIN SELECT * FROM users WHERE z=3 |
db.users.find({z:3}).explain() |
UPDATE users SET a=1 WHERE b='q' |
db.users.update({b:'q'}, {$set:{a:1}}, false, true) |
UPDATE users SET a=a+2 WHERE b='q' |
db.users.update({b:'q'}, {$inc:{a:2}}, false, true) |
DELETE FROM users WHERE z="abc" |
db.users.remove({z:'abc'}); |
재미있네요.
그럼 다음 편에서는 좀 더 자세하게 나가보도록 하겠습니다.
튜닝이라던지 어드밴스 한 부분을 살펴 보겠습니다.