티스토리 뷰

컴퓨터 공학과 졸업/기본 개념

DBCP

심재철 2018. 2. 14. 22:15

DBCP(DataBase Connection Pool)


데이터 베이스 커넥션 풀


풀이라는것은 풀장을 떠올리면 뭔지 이해하기 쉽다. 수영장 같은 것이다.

수영장인데 그 안에 커넥션이라는것이 들어가는 수영장이다.


우리가 JSP&Servlet 방식 웹개발이나 스프링 웹 개발을 하게 될때 데이터베이스에 접근해야 하는 일이 자주 발생한다.

이럴때 보통 JDBC를 이용하게 된다. 근데 JDBC를 이용할때, 먼저 DriverManger로 부터 커넥션 객체를 생성하고, 

그 커넥션 객체로 부터 Statement를 생성하며 그 Statement를 실행 한 결과로 ResultSet을 반환 받아서 커서로 ResultSet의 내용을 하나하나 사용하게 된다.


그리고 나서 ResultSet,Statement,Connection 객체를 순서대로 닫아주게 된다.


디비 접근이 필요할때마다 위의 과정을 반복해야 하는데 문제는 이 데이터베이스와의 커넥션 과정은 매우 무거운 작업이다. 그렇기 때문에 많은 사용자가 웹 서버에 접속해서 디비에 수많은 접근이 필요하다고 할때 위의 방법처럼 매번 커넥션을 생성한뒤, 디비에접근해서 어떤 일을 처리하고, 커넥션을 다시 닫아주고 이렇게 하게 될 경우 데이터베이스에 큰 부하를 줄 수 있다. 


그렇기 때문에 요즘은 이런방식을 사용하지 않고 DBCP라는것을 사용한다.

이것은 위에서 말했듯이 커넥션 객체가 들어갈 수 있는 어떤 수영장이라고 생각하면 이해하기 쉽다.


데이터베이스와의 커넥션 작업이 매우 무거운 작업이라고 했다. 그렇기 때문에 사용자가 어떤 디비 작업이 필요한 어떤 요청을 해오기 전에 미리 커넥션 객체를 생성해놓고(웹서버와 디비서버를 연결하는) 필요할때마다 그 커넥션 객체를 풀에서 꺼내서 사용한다음 사용이 끝나면 다시 그 풀에 반환하는 구조이다.


예를 들어 50개의 커넥션 객체를 커넥션 풀에 넣어놓는 경우 최대 50명의 클라이언트까지는 서버에 어떤 요청을 보냈을때 큰 딜레이 없이 바로바로 응답을 받을 수 있을 것이다. 하지만 50명의 클라이언트에 의한 요청을 서버가 아직 처리하지 못했는데 51번째 클라이언트가 요청을 보낸경우, 그 클라이언트는 어떤 작업이 끝나기를 기다려야 한다. (커넥션 객체가 총 50개이므로 하나의 커넥션 객체가 풀로 돌아올때 까지 기다려야 한다.)



'컴퓨터 공학과 졸업 > 기본 개념' 카테고리의 다른 글

HTTP  (0) 2018.06.28
URI = URL + URN  (0) 2018.06.26
JNDI  (0) 2018.02.14
GET방식과 POST방식  (1) 2018.01.26
POJO,DTO,DAO,VO  (2) 2018.01.23
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함