Notice
Recent Posts
Recent Comments
05-21 07:17
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Database Management - OracleDB 기본 지식 본문

BackEnd/Database Management

Database Management - OracleDB 기본 지식

알 수 없는 사용자 2023. 5. 2. 14:57

 OracleDB는 Oracle사의 DBMS이다. 세계에서 가장 많이 사용되고 있는 상용 DBMS 중 하나이며, 대규모 기업용 어플리케이션에 많이 활용되어진다. 기본적으로 다음 장점들이 있어 많이 사용하게 된다.

  • 매우 안정적이고, 확장성이 뛰어남
  • 대량의 데이터를 처리함
  • 다양한 운영체제 및 하드웨어 플랫폼에서 실행가능
  • SQL 기반의 RDBMS이며, ACID(원자성Atomicity, 일관성Consistency, 격리성Isolation, 지속성Durability)을 지원하는 트랜잭션(Transaction)을 보장
  • 다양한 보안기능, 백업 및 복구 기능, 모니터링 기능, 데이터 분석 기능 가짐

 

Multi-Byte

 문자 하나를 나타내기 위해 여러바이트(Byte)를 사용하는 인코딩 방식을 의미하는데, 대게 아시아 언어 등에서 사용되는 문자들은 문자의 조합마다, 문자의 개수들이 너무 많기 때문에 이런 하나하나를 표현하기 위해 2바이트 이상의 저장공간이 필요하게 된다. 이를 토대로 한글 또한 Multi-Byte로 저장되게 되는데, 2 Byte로 Oracle DB에서 저장된다.

 

Data Types

 보통 DBMS에 데이터들을 저장할 때, 오로지 두 가지 유형으로만 저장되며, 그 유형으로는 Atomic value(원자값, 더 이상 분해되지 않는 하나의 값)를 포함하는 scalar 또는 값들의 집합체인 nonscalar(= collection)이다. 다음 표를 보자

Datatype Diagram in Oracle_built_in_datatypes

 해당 데이터 타입들은 오라클 내장 데이터 타입들에 대한 관계도이다.

 

ACID

 데이터베이스 트랜잭션의 특징을 나타내는 약어(Abbr.)이다.

  • 원자성Atomicity : 트랜잭션은 전체 실행(모든 작업 실행)/전체 실행 안됨(모든 작업 실행 안됨)의 상태를 가짐.
  • 일관성Consistency : 트랜잭션 수행 전과 후의 데이터베이스 상태는 일관되어야 함.
  • 격리성Isolation : 다수의 트랜잭션에 대해 각각이 독립적으로 수행되는 것.
  • 지속성Durability : 트랜잭션이 완료되면 그 결과는 영구적으로 저장되어야 함.

각각의 특성들은 서로 상호 연관이 있으며, 이중 중요한 개념만 다루겠다.

 

격리성 Isolation

DB에서 사용되는 개념으로 데이터베이스에서 저장된 데이터의 일관성을 유지하기 위한 하나의 기능이다. 이를 달성하기 위해 격리성(Isolation)은 다른 트랜잭션과 격리되어야 하고, 이때 동시성 제어 메커니즘을 사용하여 구현된다. DB에서 격리성을 구현하는데 사용되는 가장 일반적인 방법은 트랜잭션 격리 수준(Isolation level)을 설정하는 것이다. 일반적으로 다음과 같은 4가지 격리 수준이 있다.

  1. Read uncommitted : 가장 낮은 격리수준으로, 다른 트랜잭션이 변경 중인 데이터도 읽어올 수 있음
  2. Read committed : 다른 트랜잭션이 변경 중인 데이터는 읽어올 수 없음
  3. Repeatable read : 트랜잭션이 읽는 데이터는 트랜잭션 시작 지점에 조회된 데이터만 읽을 수 있음
  4. Serializable : 가장 높은 격리 수준으로, 모든 트랜잭션을 직렬화하여 실행함.
  Dirty Read Non-repeatable Read Phantom Read Concurrency
Read uncommitted O O O 동시성 ↑, 일관성 ↓




동시성 ↓, 일관성 ↑
Read committed - O O
Repeatable read - - O
Serializable - - -
Commit : 트랜잭션의 원자성과 지속성을 보장하기 위한 개념이며, 트랜잭션(Insert, Update, Delete 등등)의 결과를 완료 후에 그 결과를 영구적으로 데이터베이스에 저장하는 작업을 말한다.

Rollback : 커밋하지 않은 데이터에 대해 이전 상태로 복구가 되는 작업이며, 롤백은 트랜잭션을 종료하고, 해당 트랜잭션이 시작하기 전의 상태로 데이터베이스를 되돌리는 작업이다.

Dirty Read : 아직 커밋되지 않은 데이터를 읽는 것을 말한다. 따라서, 이 상태에서 롤백이 되면 아예 없던 데이터를 읽을 수 있다.
Non-Repeatable Read : 하나의 트랜잭션에서 같은 쿼리를 두 번 실행할 때, 이전에 읽었던 데이터와 다른 결과가 반환되는 것.
Phantom Read : 하나의 트랜잭션이 범위를 지정한 쿼리를 실행할때, 다른 트랜잭션이 해당 범위에 새로운 데이터를 추가, 삭제 후 커밋을 하는 경우, 처음 실행한 쿼리와 다른 결과가 반환되는 것을 말함.

 

일관성 Consistency

 DB에서 사용되는 개념으로 데이터베이스에서 저장된 데이터의 무결성Integrity을 유지하는 것을 의미

  1. 데이터 유효성 검사 : 모든 데이터는 미리 정의된 규칙을 따라야 한다.
  2. 제약 조건(Constraints) 적용 : 모든 데이터는 제약 조건에 따라야 한다.
  3. 트랜잭션 처리 : Atomicity가 보장되어야 한다.
  4. 동시성(Concurrency) : 여러 사용자에 대해 수정/접근이 일어날때, Isolation을 통해 일관되어야 한다.

 

 

Comments