1. DataSource란

DataSource 인터페이스가 나오기 이전에 서로 다른 DBCP 구현체가 많아서 연동이 어려웠습니다. 
이러한 문제를 해소하기 위해 DBCP 표준 인터페이스를 만들었는데, 이것이 DataSource 입니다.

즉, DataSource는 Connection pool을 관리하고 연동할 수 있게 하는 표준 인터페이스 입니다.

 

2. DBCP(DataBase Connection Pool)란 

DB Connection 객체를 미리 만들어 Connection Pool에 보관하고 필요할 때마다 DB에 연결된 Connection을 
꺼내 사용하는 것을 의미합니다.

Connection Pool을 사용하는 이유는 Connection 객체를 만드는 것이 큰 비용을 소모하는 작업이기 때문입니다. 
미리 만들어진 Connection을 재사용하여 CPU의 부담과 Connection을 생성하는데 필요한 시간을 줄일 수 있습니다. 

1) DBCP 기본 option

maxActive 유휴 상태와 사용중인 커넥션을 포함해서 pool이 허용하는 최대 커넥션 개수
maxIdle pool에서 유지할 유휴 상태의 커넥션 최대 개수
minIdle pool에서 유지할 유휴 상태의 커넥션 최소 개수
initialSize 초기 connection pool의 connection 개수

DBCP 옵션의 무결성을 지키기 위해 아래와 같이 되어야 합니다.

maxActive >= initialSize
초기 connection 개수는 maxActive를 넘으면 안된다.

maxActive = maxIdle
최대 커넥션 수는 최대 유휴 상태 커넥션 수와 같아한다.

여담이지만..
WAS의 Thread는 Connection Pool의 갯수보다 여유있게 설정하는 것이 좋다고합니다.
하지만 가장 좋은 방법은 성능 테스트를 통해 최적화된 값을 구하는 것!

참조
www.holaxprogramming.com/2013/01/10/devops-how-to-manage-dbcp/

1. ERD(Entity Relationship Diagram)란?

개체 속성과 개체 간 관계를 도표로 표현한 것을 의미한다.


2. ERD 관계 표현법

1) 일대 일 (식별 관계)

주민과 상세 주소 간 관계를 표현한 ERD 이다.

상세 주소 테이블은 person_id를 기본키로 사용하고 있고, person_id를 통해 person 테이블을 참조 하고 있다. 

 

한명의 주민은 한개의 상세 주소를 가질 수 있다.

상세 주소는 주민 id가 없다면 존재 할 수 없다. (식별 관계)

주민 (주인 테이블) , 상세 주소 (자식 테이블) 

부모테이블의 id를 저장하는 테이블은 자식 테이블이 되고, 데이터를 제공하는 테이블은 부모 테이블이 된다.

2) 일대 다 (참조 필수)

부서와 회사원 간 관계를 표현한 ERD이다.

회사원은 한개의 부서에 반드시 소속되어야한다.

한개의 부서에 여러 회사원이 소속 될 수 있다.  

한개의 부서에 소속된 회사원이 한명도 없을 수 있다.

2) 일대 다(참조 Null 허용)

회사원이 꼭 부서에 소속될 필요는 없다.

한개의 부서에 여러 회사원이 소속 될 수 있다.

한개의 부서에 소속된 회사원이 한명도 없을 수 있다.


3. 비 식별관계와 식별관계

1) 비식별 관계

 

비식별관계는 점선으로 표현한다.

기본키에 외래키가 포함되어 있지 않다면 비식별 관계라고 한다.

2) 식별 관계

기본키에 외래키가 포함되어있다면 이를 식별 관계라고한다. 

1. 식별관계

식별관계를 설명하기 전에 위 테이블에 대해 알아보자

student(학생)과 subject(과목) 그리고 studnet_subject(수강) 테이블이 있다.

student 테이블에는 id(pk), name(학생이름), code(학번)  컬럼이 정의되어있고, 

subject 테이블에는  id(pk), name(과목이름), code(과목번호)  컬럼이 정의되어있다.

student_subject 테이블에는 어떤 학생이 어떤 과목을 수강했는지 알 수 있게 각각 student_id, subject_id 컬럼이 정의되어 있다.

그리고 두 컬럼은 기본키(Primary Key)이면서 외래키(Foreign Key)이다.

이렇듯 기본키에 외래키가 포함되어있다면 이를 식별 관계라고한다.  즉 외부 테이블에 의해 식별되며, student_id, subject_id 중 한개라도 존재하지 않으면 데이터 행을 이룰 수 없다.

(PK는 Not Null 제약조건을 위배할 수 없기 때문)


2. 비식별 관계

member와 member_access_log 테이블이 있다.

member는 회원 정보를 저장하는 테이블이고, member_access_log는 member가 특정 서비스에 접속할때 마다 쌓는 로그 테이블이다.

식별관계와 다르게 기본키를 직접 생성해 사용한다. 

비식별 관계란 기본키에 외래키가 포함되어 있지 않고, 외부 테이블을 참조만 하는 관계를 의미한다.

 

'IT > 데이터베이스' 카테고리의 다른 글

DataSouce와 DBCP(DataBase Connection Pool)란  (0) 2020.11.04
[데이터베이스] ERD 표기법 설명  (0) 2020.01.28

+ Recent posts