sql nosql ACID

.·2022년 7월 3일
0

SQL

  • 정해진 규격
  • join(시스템이 커질 경우 join문이 많은 복잡한 쿼리가 탄생)
  • 트랜잭션 사용
  • 분산처리 어려움
  • ACID(Atomicity(원자성), Consistency(일관성), 독립성(Isolation), 지속성(Durability))

nosql

  • 스키마가 없어 정해진 규격 없음(자유로운 데이터 구조, 언제든 저장된 데이터를 조정하고 새로운 필드 추가 가능)
  • join 불가능(하나의 데이터 테이블사용)
  • 트랜잭션 x
  • 분산처리 쉬움
  • 일관성을 포기(데이터 분산을 위해)
  • 데이터 중복이 발생
  • update가 많이 이루어지지 않는 시스템에 좋음(자주 변경되지 않는 데이터)

ACID

  • 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질
  • 원자성(Atomicity)
    - 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것.
    - All Or Nothing의 개념으로 작업 단위를 일부분만 실행하지 않는다는 것
    - 성질보존하기 : 트랜잭션 이전상태를 임시저장하여 오류 발생시 rollback 처리
  • 일관성(Consistency)
    - 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것을 말함.
    - 트랜잭션 도중 데이터 타입이 바뀌면 안되고 일관성을 지켜야 한다.
    - 성질보존하기 : 트랜잭션 수행 전, 후에 데이터 모델의 모든 제약 조건(기본키, 외래키, 도메인, 도메인 제약조건 등)을 체크
    - 성질보존하기 : 트리거(어떤 이벤트와 조건이 발생했을대 DBMS가 자동적으로 수행할 동작을 명시)
  • 격리성(Isolation)
    - 트랜잭션 수행시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장.
    - 트랜잭션끼리는 서로를 간섭할 수 없다.
    - 성질보존하기 : 세마포어(lock & excute unlock) -> 데드락조심
    - 세마포어 개선 : 2Pl 프로토콜 -> 여러 트랜잭션이 공유하고 있는 데이터에 동시에 접근할 수 없도록 하기 위한 목적(lock단계와 unlock 단계를 구분)
  • 지속성(Durability)
    - 성공적으로 수행된 트랜잭션은 영원히 반영이 되야함.
    - commit을 하면 현재 상태는 영원히 보장.
    - 지속성 보장하기 : Recovery

InnoDB 엔진

  • RDB에서 일반적으로 잠금 스케줄러를 사용해줌.

스키마(Schema)

  • DB의 구조와 제약조건에 관해 전반적인 명세를 기술한 것.
  • 개체의 특성을 나타내는 속성(Attribute)
  • 속성들의 집합으로 이루어진 개체(Entity)
  • 개체 사이에 존재하는 관계(Relation)에 대한 정의
  • 이들을 유지해야 할 제약조건

제약조건

  • NOT NULL : NULL값 입력 금지
  • UNIQUE : 중복값 입력 금지 (NULL값은 중복입력 가능.)
  • PRIMARY KEY : 다른 테이블의 컬럼을 조회해서 무결성 검사
  • CHECK : 조건으로 설정된 값만 입력 허용
profile
.

0개의 댓글