나의 우당탕탕 nifi에서 dbcpconnectionpool을 이용하여 mysql과 연동하기,,
학습목표
- Controller Service의 개념
- DBCPConnectionPool의 개념
- ConnectionPool의 개념
- NiFi에서 controller service를 이용하여 DB Connection Pool을 관리
- DBCPConnectionPool을 이용하여 DB에 연동
NiFi 에서 Controller service란?
controller service는 reporting task(보고 작업), processor(NiFi에서의 processor 개념)에서 사용할 수 있는 shared service(공유 서비스)이다. 프로그램을 구성하거나 작업할때에 활용할 수 있도록 만들어놓은 service이다.
Controller service로 제공하는 DBCPConnectionPool이란?
NiFi와 Database연동을 하게된다면 꼭 쓰게되는 NiFi에서 제공하는 Controller Service중 한개이다. 특히, 자주쓰이는 PutSQL, ExecuteSQL에서 꼭 쓰이기 때문에 개념부터 제대로 알아보자.
connection pool이란?
DBCPConnectionPool 이란 DatabaseConnectionPool이다. 여기서 ConnectionPool 이라는 개념도 알고가자.
커넥션풀(Connection Pool)
커넥션 풀이란 DB와 미리 connection(연결)을 해놓은 객체들을 pool(웅덩이)에 저장해두었다가, 클라이언트 요청이 오면 커넥션을 빌려주고, 볼일이 끝나면 다시 커넥션을 반납받아 pool에 저장하는 방식을 말한다.
클라이언트가 DB와 연결이 필요할 때, connection pool에서 connection을 빌려와 DB에 접근해서 쿼리를 막 날린 후,
볼 일이 끝나면 사용했던 connection을 다시 pool에 반납을 하는 과정을 표현했다.
특징과 장단점
Pool 속에 미리 Connection이 생성되어 있기 때문에 Connection을 생성하는 데 드는 연결 시간이 소비되지 않는다. Connection을 계속해서 재사용하기 때문에 생성되는 Coneection 수가 많지 않다. Connection을 생성하고 닫는 시간이 소모되지 않기 때문에 그만큼 어플리케이션의 실행 속도가 빨라지며, 도한 한 번에 생성될 수 있는 Connection 수를 제어하기 때문에 동시 접속자 수가 몰려도 웹 어플리케이션이 쉽게 다운되지 않는다. 한마디로 DB접근 시 불필요한 작업(커넥션 생성, 끊기)이 사라지므로 성능향상을 기대할수 있다.
Connection Pool에서 생성되어 있는 Connection의 갯수는 한정적이다. 동시 접속자가 많아져 Connection이 모자랄 경우에는 원활한 서비스가 이루어지지 않는다. Connection이 반납될 때까지 기다려야한다. 유저 수에 따라 Connection을 조절할 필요가 있다.
단점은 Connection또한 객체이므로 메모리를 차지한다. 따라서 유저 수를 보고 Connection수를 조절하는것이 좋다.
따라서 DBCPConnectionPool의 기능은 Database Connection Pooling 서비스를 제공하고. 연결을 풀에서 요청하고 사용 후 반환 할 수 있는것. 이다.
-환경설정-
OS : CentOS 7
DBMS : MySQL
MySQL은 설치되어있다는 전제하에
DBMS 마다 상이하기 본인의 dbms찾아봐야한다.
1. Database Connection URL : jdbc:mysql://ip주소혹은url주소:포트번호/이름
2. Database Driver Class Name : com.mysql.jdbc.Driver
3. Database Driver Location(s) : /connector를 다운받은 위치/커넥터이름.jar (ex. /home/usr/mysql-connector.jar
4. Database User : userid
5. Password : pw
CentOS 환경이라서 wget으로 tar.gz 파일을 다운받으려 했지만 그냥 zip파일로 받고싶어서 zip파일로 받음 ㅎㅎ, , gui 아닌 분들은 wget으로 바로 받기
[다운링크]https://dev.mysql.com/downloads/connector/j/
위의 링크로 들어가서
platform independent 으로 들어가서 zip파일 다운로드
압축 풀고 jar 파일을 옮겨준다
pwd jar 위치 확인 후 -> 3번 driver location(s)에 위치 작성