본문 바로가기

Database3

[Database] 식별관계와 비 식별관계 RDBMS의 테이블을 생성하고, 각 테이블마다 관계를 설정해 줄 때 일반적으로 외래 키를 사용하곤 합니다. 외래 키를 통해 다른 테이블과 같은 키를 공유하고 이를 이용하여 조인하여 관계를 이용하는 방식을 사용합니다. 외래 키를 사용하여 테이블 간 관계를 정립해 줄 때 사용하는 전략은 크게 식별 관계, 비식별 관계 전략이 있습니다. 식별 관계 식별 관계란, 부모 테이블의 기본키 또는 유니크 키를 자식 테이블이 자신의 기본키로 사용하는 관계입니다. 부모 테이블의 키가 자신의 기본키에 포함되기 때문에 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있습니다. 즉, 부모 데이터가 없다면 자식 데이터는 생길 수 없습니다. 식별관계는 ERD상에서 실선으로 표시합니다. 자식 테이블에 데이터가.. 2020. 7. 18.
[DB] 분산 시스템을 선택하는 삼각형, CAP 이론 CAP란 분산 시스템은 일관성(Consistency), 가용성(Availability), 분할 내성(Partition tolerance) 이라는 3가지중 최대 2가지만 만족할 수 있다는 이론입니다. RDBMS, NoSQL등 어떤 데이터베이스를 사용해야 하는지 선택할 때 해당 시스템의 특성에 따라 CAP 필요성에 대해 분석하고 그에 맞는 데이터베이스를 선택할 수 있습니다. 일관성(Consistency) - 모든 노드들이 동일 시간 동일 데이터를 사용자에게 보여줘야 하는 것 가용성(Availability) - 특정 노드에 장애가 발생해도 성공적으로 서비스를 지속하는 것 분할 내성(Partition tolerance) - 연결이 끊어져도 연속해서 동작하는 것 DBMS별 CAP CAP 이론에 따르면 분산 시스템.. 2020. 3. 19.
[MySQL] 트랜잭션의 격리 수준(isolation level) 격리 수준이란? 트랜잭션의 격리 수준이란 여러 트랜잭션이 동시에 처리될 때 서로 다른 트랜잭션에서 변경, 조회하는 데이터를 어느 수준에서 볼 수 있는지 설정하는 것 입니다. 격리 수준이 낮은 순서부터 'READ UNCOMMITTED', 'READ COMMITTED', 'REPEATABLE READ', 'SERIALIZABLE' 총 4가지의 격리 수준이 있습니다. MySQL은 데이터의 변경시 변경 전 데이터를 UNDO 영역에 저장하고, 변경된 데이터는 바로바로 레코드에 저장합니다. 그렇기 때문에 격리된 데이터를 조회할 때에는 테이블에서 바로 조회하는 것이 아닌, UNDO영역에 백업된 레코드를 가져와 조회합니다. 격리 수준에 따라 발생할 수 있는 문제점 DIRTY READ 트랜잭션에서 작업이 다 끝나지 않았.. 2020. 3. 1.