2012-03-15 4 views
0

Hibernate의 경우 연결 풀을 사용하여 연결 풀을 관리 할 수 ​​있습니다. 수영장 내부의 연결 상태가 열렸습니까? 아니면 닫혀 있습니까? 그리고 연결이 열려 있으면 보안 위협이 될 수 있으며 데이터베이스에 위협이 될 수 있습니다.연결 풀의 사용은 무엇이며 유해합니까?

그리고 우리는 Oracle을 데이터베이스로 사용하고 있습니다. 그런데 사용되지 않는 연결을 끊는 Oracle 내부 메커니즘이 있습니까?

답변

2

데이터베이스 연결을 풀링하는 목적은 열기 연결을 설정하여 응용 프로그램이 새 연결을 열려고 할 때마다 풀에서 이미 열린 연결을 투명하게 반환합니다. 매번 새로운 연결을 여는 것보다 훨씬 빠릅니다.

데이터베이스 관점에서는 응용 프로그램이 열려 있지만 유휴 데이터베이스 연결 (SQL 콘솔을 열고 쿼리를 실행하지 않는 것처럼)이있는 것처럼 보입니다.

저는 보안 전문가가 아니므로 Oracle 연결과 TCP/IP 스택이 얼마나 안전한지 잘 모릅니다. 하지만 유휴 연결이 응용 프로그램 사이에 몇 초 동안 남아 있다는 사실은 문제가되지 않아야합니다. 수백만 개의 응용 프로그램이 데이터베이스 연결 풀링을 사용하고 있습니다. 실제로 어떤 응용 프로그램도 생각할 수 없습니다. 이 아니며이 아닙니다.이 도구를 사용하는 공격 벡터에 대해 들어 본 적이 없습니다. 풀링 된 연결은 여전히 ​​데이터베이스 기반 인증 및 인증의 대상이됨을 기억하십시오. 그것은이 많이 걱정 (또는 데이터베이스 연결이 인터넷을 통해하는 경우가 아닌 인트라넷 경우

터널링 또는 데이터베이스 연결을 암호화를 생각해 보자.

+0

데이터베이스 손상은 어떻게됩니까? 데이터베이스 파일이 손상됩니까 – Chan

+0

@ Duli-chan : 연결 풀링과는 아무런 관련이 없습니다. 또한 RDBMS는 ACID 원리, 부패가 ** 발생해야합니다. –

-2

이 모든 문제는 사용 코드에 투명합니다. 혼자서 연결 풀을 구현하는 경우에만이 질문을 할 것입니다. 잘 알려진 (예 : c3p0)을 사용하는 경우 DataSource 인터페이스를 기준으로 코딩하기 때문에 해당 이슈와 관련되지 않습니다.

(이 라이브러리는 버그, 메모리 누수 또는 orphane 개방 연결에 대해 무료라는 의미는 아닙니다.)

3

풀 내부의 연결은 열려 있습니다 (적어도 일정 기간 동안 풀 구현에 따라 유휴 연결이 닫힐 수 있음). 새로운 데이터베이스 연결을 생성하고 여는 것은 많은 비용이 듭니다. 풀링은이 비용을 줄이기 위해 사용됩니다.

연결 풀링을 사용하지 않을 때보 다 보안 위협이 없습니다. 두 경우 모두 응용 프로그램의 데이터베이스 액세스 수준은 여전히 ​​동일합니다. 연결을 먼저 열어야하는지 여부에 관계없이 동일한 수준의 손상을 수행 할 수 있습니다.

+2

또한, 구현에 따라 수영장이 부실하거나 죽은 정리에 기능을해야합니다 연결 풀링은 성능 향상을위한 것임 – cjstehno