블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday



MongoDB는 오픈소스 NoSQL 데이터베이스 이다. 이는 In-Memory기반으로 쉽게 확정할 수 있고, 성능 또한 뛰어나 널리 사용되고 있다. 그럼 간단하게 설치 방법에 대해 알아보자.


 MongoDB사이트에 접속해서 설치 파일을 다운로드 한다. 다운로드 주소는 아래와 같다.
--> http://www.mongodb.org/downloads



[그림 1 - 다운로드 사이트]


 [그림 1]과 같이 다운로드 사이트에 접속했다면, 설치하고자 하는 환경에 맞게 파일을 다운로드 한다. 난 윈도우(Windows 7) 64비트를 사용중이므로, "64-bit zip"파일을 다운로드 받았다. 다운로드 받은 파일을 적당한 위치에 옮겨 두고 압축을 풀도록 한다. 




[그림 2 - 압축 푼 모습]


[그림 2]와 같이 압축을 풀었다면, 해당 폴더 안에 데이터를 저장할 폴더를 만들어 보자. "data"라는 폴더를 생성하고, data폴더 밑에 "db"라는 폴더를 생성하자. 




[그림 3 - data폴더 생성]


[그림 3]과 같이 data폴더와 그 하위에 "db"폴더를 생성했다면 이제 MongoDB를 실행 시켜보자.


커맨드 창을 열고 해당 압축을 풀었던 위치에 "bin"폴더로 이동하도록 하자.



[그림 4 - bin폴더로 이동한 커맨드창]


 bin폴더로 이동했다면, 아래와 같이 커맨드를 실행시켜 보자.



 mongod.exe --dbpath ../data/db 


위와 같이 mongod를 실행시켜 서버를 구동하고, db파일 경로를 지정해 준다. 



[그림 5 - MongoDB 실행모습]


[그림 5]와 같이 MongoDB가 시작되며 포트는 27017로 되어 있는 걸 확인 할 수 있다. 그럼 한번 테스트 명령어 날려보도록 하자. 실행시켜둔 커맨트창은 열어두고, bin폴더에 mongo.exe를 실행 시키자. 이는 클라이언트 명령 프롬프트이다. 



[그림 6 - 테스트 쿼리 화면]


mongo.exe를 실행 시키면 [그림 6]과 같이 test 데이터베이스로 기본 잡힐 것이다. 그럼 [그림 6]과 같이 데이터 저장과 읽기 명령어 날려 보도록 하자. 



 // 저장

 db.test.save({ a:1}); 


 // 읽기

 db.test.find()


위 명령어를 날려서 [그림 6]과 같이 나온다면 정상적으로 설치 및 실행이 되는것이다. 



Posted by happydong
, |



ㅁ File System 모듈 추가


파일을 핸들링 하기 위해서는 File System모듈을 사용해야 한다.

파일 시스템 모듈을 사용하려면 아래 코드와 같이 정의해서 사용하면 된다. 


 var fs = require('fs'); 


ㅁ 파일 읽기

 

 파일은 동기와 비동기로 읽어 올 수가 있다. 동기 호출은 readFileSync 메서드를 이용하면 되고, 비동기 호출은 readFile 메서드를 이용하면된다. readFileSync 메서드는 fs.readFileSync(filename, [options])로 호출하며, readFile 메서드는 fs.readFile(filename, [options], callback)으로 호출한다. 


  var fs = require('fs');


  // 동기 호출

  var data = fs.readFileSync('test.txt','utf8');

  console.log(data);


  // 비동기 호출

  fs.readFile('test.txt', 'utf8', function(err, data){

      if(err) throw err;

      console.log(data);

  });

 



ㅁ 파일 확인


 파일이 존재하는지 확인하기 위해서는 비동기 확인 메서드인 exists(path, callback) 또는 동기 메서드인 existsSync(path) 를 이용한다. 


  var fs = require('fs');


  // 동기 확인

  var exists = fs.existsSync('test.txt');

  console.log(exists);


  // 비동기 확인

  fs.exists('test.txt', function(exists){

     console.log(exists);

  });



ㅁ 파일 쓰기

 

 파일 쓰기 위해서는 비동기 메서드인 writeFile(filename, data, [options], callback) 또는 동기 메서드인 writeFileSync(filename, data, [options])를 사용하면 된다. 


  var fs = require('fs');


  // 동기 파일 쓰기

  fs.writeFileSync('test.txt', 'Dong Wook Kim', 'utf8');


  // 비동기 파일 쓰기

  fs.writeFile('test.txt', 'Dong Wook Kim', 'utf8', function(err){

      if(err) throw err;

      console.log('Success!!');

  });



** 동기 호출과 비동기 호출의 차이점은 동기 호출의 경우 비동기 메서드명 뒤에 "~Sync"라는 접미사가 붙는다. 


기타 다양한 API확인은 아래 링크를 참고하자.

--> http://nodejs.org/api/fs.html (바로가기)





Posted by happydong
, |



이벤트 등록과 삭제는 기존 자바스크립트와 비슷하다. 모 node가 자바스크립트 기반이니깐 당연하지!! ^^ 


 ㅁ Event등록


 이벤트 등록은 addListener 또는 on을 이용하여 등록 할 수 있다. 


 var firstEventHandler = function(){

  // 내용

 } 

 process.addListener('exit', firstEventHandler);


 var secondEventHandler = function(){

  // 내용

 }

 process.on('exit', secondEventHandler);



 on과 addListener 메서드 모두 동일한 기능이므로, 가독성이 좋은 on메서드를 주로 사용하자. node에서는 동일한 이벤트가 10개 초과 등록되면 에러가 발생한다. 이때 setMaxListeners(n) 메서드를 이용하여 필요 시에 추가적으로 설정해주면 에러가 발생하지 않는다.


 ㅁ Event삭제


 이벤트 삭제는 removeListener 메서드로 삭제할 수 있으며, 해당 이벤트 모두 삭제 하고 싶으면 removeAllListeners메서드를 이용하면 된다. 


 var errorHandler = function(e){

  // 내용

 } 

 // 등록

 process.on('uncaughtException', errorHandler);

 // 삭제

 process.removeListener('uncaughtException', errorHandler);

 // 모든 이벤트 삭제

 process.removeAllListeners('uncaughtException');



ㅁ Event 발생

 

 emit 메서드를 이용해서 강제로 이벤트를 발생 시킬 수 있다. 


  process.on('fnTest', function(){

      // 내용

  });


  process.emit('fnTest');



Posted by happydong
, |