728x90
Data Consistency와 Data Integrity는 서로 관련이 있지만 약간 다른 개념입니다.
Data Consistency
- 정의: 데이터 일관성은 데이터의 상태가 항상 일관되게 유지되는 것을 의미합니다. 즉, 데이터베이스 내의 데이터가 서로 모순되지 않고, 같은 의미를 지니고 있어야 합니다.
- 예시: 예를 들어, 같은 유저의 정보를 두 개의 다른 테이블에 저장할 때, 이름이나 주소가 변경되면 두 개의 테이블에서 같은 값으로 변경되어야 합니다. 만약 한 테이블에서는 업데이트되었지만 다른 테이블은 그렇지 않다면, "데이터 일관성이 깨졌다"라고 합니다.
- 메카니즘
- Isolation Level : read committed, read uncommitted, repeatable read, serializable
- Transaction Control : 데이터베이스가 일관성 있는 상태를 유지하는 단위. 예시 : commit, rollback
- Locking : 데이터가 동시에 여러 트랜잭션에 의해 수정되지 않도록 보호하는 방법. 예시 : Shared Lock, Exclusive Lock
- Data Replication : 여러 데이터베이스 인스턴스에 데이터를 복사하여 저장하는 방식으로 동기, 비동기 두가지 방식이 있습니다.
- MVCC(Multi-Version Concurrency Control) : 다중 버전 동시성 제어는 여러 사용자가 동시에 데이터를 읽고 쓸 때
발생하는 충돌을 최소화하는 방법입니다. 트랜잭션이 데이터를 읽을 때, 다른 트랜잭션에 의해 데이터가 수정되는 것을 방지하기 위해 데이터의 여러 버전을 유지합니다.- 예시: 트랜잭션 A가 데이터를 수정하는 동안, 트랜잭션 B는 수정 전의 데이터를 읽을 수 있습니다.
이렇게 하면 트랜잭션 B가 트랜잭션 A의 완료를 기다리지 않고도 데이터를 읽을 수 있습니다.
- 예시: 트랜잭션 A가 데이터를 수정하는 동안, 트랜잭션 B는 수정 전의 데이터를 읽을 수 있습니다.
728x90
Data Integrity
- 정의: 데이터 무결성은 데이터의 무결성과 신뢰성을 보장하는 것을 의미합니다. 이는 데이터가 올바르게 입력되고, 잘못된 데이터가 들어가지 않도록 하는 다양한 규칙이나 제약 조건을 포함합니다.
- 예시: 데이터베이스에 입력할 수 있는 값을 특정 타입으로 제한하거나, 외래 키(Foreign Key) 제약 조건을 설정하여 데이터 간의 관계를 유지하는 것이 데이터 무결성을 보장하는 방법입니다. 즉, 숫자 타입으로 지정한 컬럼에서는 숫자 값만 입력되도록 합니다. 유저마스터정보가 있고, 유저구매이력정보에 유저 식별자(ID)가 포함되어 있다면 이를 외래 키로 지정하여 유저구매이력정보가 있는 유저는 유저마스터정보가 항상 존재하도록 합니다.
- 메카니즘
- Data Type : 허용하는 형식의 값만 입력 가능함. 예시: Integer, Varchar(n), Datetime, ...
- Costraints
- Primary Key : 테이블의 각 레코드가 고유해야 한다는 규칙.
- Foreign Key : 두 테이블 간의 관계를 정의하여 데이터의 참조 무결성을 보장.
- Unique : 특정 필드에 중복 값이 존재하지 않도록 보장.
- Check : 특정 컬럼 값이 지정된 조건을 충족해야 함.
- Not Null : 특정 컬럼 값에 NULL 존재하지 않도록 보장.
요약
- Data Consistency: 데이터 간의 일관성과 조화에 초점.
- Data Integrity: 데이터의 정확성과 신뢰성을 보장에 초점.
결론적으로, 데이터 무결성을 유지하는 것은 데이터의 일관성을 확보하는 데 기여하지만, 두 개념은 각각의 초점과 적용 방법이 다릅니다.
728x90
'Data Science > DB+SQL' 카테고리의 다른 글
[DuckDB] what is DuckDB (0) | 2024.09.24 |
---|---|
[DBMS] Isolation Level (0) | 2024.09.21 |
[mysql] Temporary Tablespace 관리 (0) | 2024.04.26 |
[mysql] SQL split string to multiple rows (0) | 2023.09.20 |
[mysql] SQL 최적화 : slow query log 설정하기 (0) | 2023.03.03 |
최근댓글