본문 바로가기
nodejs

[node.js] mysql 모듈 - aws rds mysql 인스턴스 연동하기

by jinbro 2017. 7. 5.
[mysql 인스턴스 테스트 - 레코드 추출하기]
- 단어, 날짜, 카운트(날짜 AND 단어별 카운트) 
- 고민했던 것 : 카운트를 컬럼으로 둘 것인가 OR 하나씩 저장시켜서 쿼리문으로 조합할 것인가
- 카운트는 컬럼으로 두지말고 단어와 날짜를 가지고 그룹핑하고 카운트 시키면 되겠음
- 일단 테스트해보고 바꿔가는 형태로 해봐야겠음 : 크롤링부터 데이터 저장까지


[mysql 세팅 및 테스트]
- 환경 : AWS RDS mysql-community-server 5.7, 3306 port
- 접속 환경 : AWS RHEL 7.2 instance
- 특징 
(1) inbound 규칙에서 해당 인스턴스만 접근하도록 해당 인스턴스 시큐리티 그룹만 접근가능하도록 설정해둠 

(2) 원래는 aws instance에 mysql 깔고 호스팅하려고 세팅까지 했었는데, 아마존에서 rds 쓰도록 유도함 - 세팅을 콘솔에서 할 수 있음

- 테이블 생성 : 앞서 언급 했던 것처럼 우선 단어와 날짜만 저장할 수 있도록 테이블을 생성한다.
(1) use 데이터베이스명;
(2) create table word (name varchar(10), day date);
(3) describe word;
=> 생성한 테이블 구성 확인하기

(4) insert into word values(~~~);
(5) select name, day, count(*) from word group by day, name;
=> day와 name으로 그룹핑시킴


[nodejs - mysql 모듈]
(1) mysql 모듈 : mysql 서버에 쿼리문을 던지고 레코드를 받기위해서 해당 모듈을 사용
=> npm i mysql (필요에 따라 save 옵션을 주면 됨)

(2) 스크립트 작성
const mysql = require(‘mysql’);
const connection = mysql.createConnect({
    host          : ,
    port          : ,
    user          : ,
    password : ,
    database  :
});

connection.connect();

connection.query(‘select * from word’, function(err, res, fileds){
    if(err){
        console.error(err.stack);
        return ;
    }   

    console.log(res[0]);
}


connection.end(); 
=> 예외처리하기 : 커넥션이 되지않았을 때 
=> db 인스턴스 정보 환경변수 설정 : 리눅스의 쉘스크립트나 프로그램들이 실행 시작할 때 환경에 설정된 값들로 초기화되는 변수
    => 특정 사용자에서만 사용하기 : 특정 사용자 홈디렉토리(~/.profile)에 저장
    => export 환경변수명=값
    => echo ‘export 환경변수명=값’ >> ~/.profile  (해당 파일에 환경변수 선언문을 넣음)
    => echo $환경변수명 (값이 출력되면 설정끝!)

=> 결과보기


[더하기]
- 크롤링한 결과를 어떻게 저장하는게 더 효율적인가를 고민해보기
- 레일즈 서버에서 접근할 수 있도록 인바운드 규칙 수정 + 요청 - 응답 되는지 확인하기
- 접근 확인했으니 크롤링 - 형태소 분석 결과 디비에 저장하는 것까지 구현하기


[참고자료]
- npmjs, mysql module : https://www.npmjs.com/package/mysql

- aws, MYSQL 데이터베이스 엔진 기반 DB 인스턴스에 연결하기 : https://goo.gl/zFNdoQ



댓글