Normalization

(빅데이터 등장 이후 잘 안쓰긴 합니다. 그래도 RDB에서는 중요해요)

  • 좋은 relational design 생성
  • instructor와 department를 in_dept으로 결합한다고 가정, 이는 instructor와 department 간의 natural join을 나타냄

  • 정보의 반복이 있음
  • Null 값을 사용해야 함 (새로운 부서를 추가하는 경우, instructor가 없는 경우)

Decomposition

  • in_dep schema에서 정보 반복 문제를 피하는 유일한 방법은 이를 두 개의 schema - instructor와 department schema -로 분해하는 것임
  • 모든 Decomposition가 좋은 것은 아님. 예를 들어, employee(ID, name, street, city, salary)를 employee1 (ID, name)과 employee2 (name, street, city, salary)로 분해한다고 가정
  • 두 명의 동일한 이름을 가진 직원이 있을 때 문제가 발생함
  • 다음 슬라이드는 정보를 잃는 방식을 보여줌 - 원래의 employee relation을 재구성할 수 없음 - 따라서 이것은 lossy decomposition

A Lossy Decomposition

Levels of Normalization

  • 데이터베이스의 중복 양에 따라 normalization 수준이 결정됨
  • 다양한 normalization 수준:
    • First Normal Form (1NF)
    • Second Normal Form (2NF)
    • Third Normal Form (3NF)
    • Boyce-Codd Normal Form (BCNF) : most poppular
    • Fourth Normal Form (4NF)
    • Fifth Normal Form (5NF)
    • Domain Key Normal Form (DKNF)

First Normal Form (1NF) (제 1 정규형)

  • 테이블의 모든 필드가 스칼라 값을 포함하는 경우 1NF에 속함 (값 목록이 아닌 경우)

1NF - Decomposition

  1. 반복 그룹에 나타나는 모든 항목을 새 테이블에 배치
  2. 생성된 각 새 테이블에 PK 지정
  3. 새로운 테이블에 기존 테이블의 primary key Duplicate 하거나 반대로 한다

Functional Dependencies

테이블의 어떤 attribute 집합이 다른 집합의 attribute를 결정하는 경우, 두 번째 attribute 집합는 첫 번째 attribute 집합에 기능적으로 종속되어 있다고 한다

Second Normal Form (2NF) (제 2 정규형)

  • 테이블이 2NF에 속하려면 두 가지 요구사항이 있어야 함
    1. 데이터베이스는 제 1 정규형에 있어야 함
    2. 테이블의 모든 nonkey 속성은 전체 PK에 기능적으로 종속되어야 함 (단일 키에 부분적으로 종속되지 않음)

 

-        Single key nonkey 찾는 경우

-        AuId 만으로도 AuAddress 찾을  있고, 따라서 AuAddress 결정하는데 Title PubId  필요가 없다

2NF - Decomposition

1.     어떤 data item primary key 일부에만 완전히 종속된 경우, 해당 data item   primary key 일부를 new table이동 (부분 종속성 식별)

2.     같은 primary key 일부에 종속된 data item 있다면, 이들도 new table 포함시킨다. (관련 데이터 포함)

3.     original table에서 복사한 부분 Primary key new table primary key 정의한다. 또한, repeating group 속하는모든 items new table 옮긴다(새로운 primary key 정의)

 

 

Third Normal Form (3NF) (제 3 정규형)

  • 이 형태는 non-key attribute 간의 상호 의존성이 없어야 함을 규정함
  • 테이블이 3NF에 속하려면 두 가지 요구사항이 있어야 함
    1. 테이블이 2NF에 속해야 함
    2. 어떤 attribute transitively(이행적으로종속되면 안된다

Example (Not in 3NF)

  • Scheme: {Studio, StudioCity, CityTemp}
    1. Primary Key: {Studio}
    2. {Studio} → {StudioCity}
    3. {StudioCity} → {CityTemp}
    4. {Studio} → {CityTemp}
    5. StudioCity와 CityTemp는 전체 키에 의존함, 따라서 2NF
    6. CityTemp는 Studio에 이행적으로 의존함, 따라서 3NF 위반

3NF - Decomposition

  1. 이행적 종속에 관련된 모든 항목을 새 엔터티로 이동
  2. 새 엔터티에 대한 PK를 식별
  3. 새 엔터티에 대한 PK를 원래 엔터티의 Foreign Key로 배치

Example (Convert to 3NF)

  • Old Scheme: {Studio, StudioCity, CityTemp}
  • New Scheme: {Studio, StudioCity}
  • New Scheme: {StudioCity, CityTemp}

Example (Convert to 3NF)

  • Old Scheme: {BuildingID, Contractor, Fee}
  • New Scheme: {BuildingID, Contractor}
  • New Scheme: {Contractor, Fee}

Boyce-Codd Normal Form (BCNF)

  • BCNF는 candidate key에 속한 attribute 간의 종속을 허용하지 않음
  • BCNF는 3NF를 더 발전시킨 것으로, 3NF에서 non-key attribute의 제한을 제거함
  • 다음 조건이 참일 경우 3NF와 BCNF는 동일하지 않음
    1. 테이블에 두 개 이상의 candidate key가 있음
    2. 두 개 이상의 candidate key가 여러 attribute으로 구성됨
    3. candidate keys 들이 일부 attributes share하고 있는 경우

  •  

BCNF - Decomposition

  1. 두 candidate primary key를 별도의 엔터티에 배치
  2. 나머지 데이터 항목을 primary key에 대한 종속성에 따라 생성된 엔터티에 배치

Example 1 (Convert to BCNF)

  • Old Scheme: {City, Street, ZipCode}
  • New Scheme1: {ZipCode, Street}
  • New Scheme2: {City, Street}

Example 2 (Convert to BCNF)

  • Old Scheme: {MovieTitle, MovieID, PersonName, Role, Payment}
  • New Scheme: {MovieID, PersonName, Role, Payment}
  • New Scheme: {MovieTitle, PersonName}

Example 3 (Convert to BCNF)

  • Old Scheme: {Client, Problem, Consultant}
  • New Scheme: {Client, Consultant}
  • New Scheme: {Client, Problem}

Other Normal Form

4NF - Decomposition(실제 실무에서 잘 사용하지 않음)

  1. 두 개의 multi-valued relation를 별도의 테이블로 이동
  2. 각 새 엔터티에 대해 PK를 식별

Example 1 (Convert to 3NF)

  • Old Scheme: {MovieName, ScreeningCity, Genre}
  • New Scheme: {MovieName, ScreeningCity}
  • New Scheme: {MovieName, Genre}

Fifth Normal Form (5NF)

  • 모든 테이블이 중복을 피하기 위해 가능한 한 많은 테이블로 분해된 경우 5NF를 만족함. 5NF에 도달하면 사실이나 의미를 변경하지 않고 작은 relation로 분해할 수 없음

'DataBase' 카테고리의 다른 글

[DataBase] 09. BigData and Distributed DataBase  (0) 2024.06.26
[DataBase] 08. Transaction Recovery  (0) 2024.06.26
[DataBase] 07. Data Storage Structure  (0) 2024.06.25
[DataBase] 06. Physical Storage System  (0) 2024.06.25
[DataBase] 05. E-R Model  (0) 2024.06.25

 

Motivation

  • 매우 대량의 데이터 수집
    • 웹, 소셜 미디어, 최근에는 사물인터넷의 성장에 의해 주도됨
    • 웹 로그는 초기 데이터 소스였음
      • 웹 로그에 대한 분석은 광고, 웹 사이트 구조화, 사용자에게 표시할 게시물 등에 큰 가치를 가짐
  • 빅 데이터: 이전 세대 데이터베이스와 구별됨
    • 볼륨: 저장된 데이터의 양이 훨씬 큼
    • 속도: 삽입 속도가 훨씬 높음
    • 다양성: 관계형 데이터를 넘어 다양한 유형의 데이터 포함

Querying Big Data

  • 매우 높은 scalability(확장성)이 필요한 트랜잭션 처리 시스템
    • 많은 애플리케이션이 매우 높은 확장성을 얻을 수 있다면 ACID 속성 및 기타 데이터베이스 기능을 기꺼이 포기함
  • 매우 높은 확장성과 비관계형 데이터를 지원해야 하는 쿼리 처리 시스템

Big Data Storage Systems

  • 데이터베이스의 역할 감소
  • 데이터 읽기/쓰기 역할 증대
  • 분산 파일 시스템
  • 여러 데이터베이스에 걸친 Sharding
  • Key-value 스토리지 시스템
  • 병렬 및 분산 데이터베이스

Hadoop File System Architecture

  • 클러스터 전체에 단일 네임스페이스
  • 파일은 블록으로 분할됨
    • 일반적으로 64MB 블록 크기
    • 각 블록은 여러 데이터노드에 복제됨
  • 클라이언트
    • 네임노드에서 블록의 위치를 찾음
    • 데이터노드에서 직접 데이터에 접근

Hadoop Distributed File System (HDFS)

  • 네임노드
    • 파일 이름을 블록 ID 목록에 매핑
    • 각 블록 ID를 해당 블록의 복사본을 포함하는 데이터노드에 매핑
  • 데이터노드: 블록 ID를 디스크의 물리적 위치에 매핑
  • Data Coherency(데이터 일관성)
    • Write-once-read-many access 모델
    • 클라이언트는 기존 파일에만 추가할 수 있음
  • 수백만 개의 대형 파일에 적합한 분산 파일 시스템
    • 그러나 수십억 개의 작은 튜플과 함께 성능이 좋지 않음

Sharding

  • Sharding: 여러 데이터베이스에 데이터를 분할
  • 데이터 베이스의 테이블을 특정 기준에 따라 여러 파티션(또는 샤드)로 나눈다. 이 기준을 일반적으로partitioning attributes(partitioning keys 또는 shard keys라고도 함. 예: 사용자 ID
    • 예: 데이터베이스 1에서 키 값이 1에서 100,000인 레코드, 데이터베이스 2에서 키 값이 100,001에서 200,000인 레코드
  • 애플리케이션은 각 데이터베이스에서 어느 레코드가 있는지 추적하고 해당 데이터베이스로 쿼리/업데이트를 보냄
  • 긍정적 측면: 확장성이 좋고 구현이 쉬움(+ 병렬 처리가 가능하여 처리량 향상)
  • 부정적 측면:
    • Not transparent(투명하지 않음): 애플리케이션이 여러 데이터베이스에 걸친 쿼리, 쿼리 라우팅을 직접 처리해야 함
    • 데이터베이스가 과부하되면 해당 load의 일부를 이동하는 것이 쉽지 않음
    • 데이터베이스가 많아질수록 failure 가능성 증가
      • 가용성을 보장하기 위해 복제본을 유지해야 하므로 애플리케이션의 작업이 증가

Sharding (e.g., Range Partitioning)

Simple Problem

  • Challenge
    • 1부터 10¹⁰까지 소수 출력

  • 작업을 고르게 분할
  • 각 스레드는 10⁹ 범위를 테스트

Types of Skew(왜곡의 유형)

  • Data-distribution skew: 일부 노드는 많은 튜플을 갖는 반면, 다른 노드는 적은 튜플을 가질 수 있음
  • Data-distribution skew는 balanced range-partitioning vector를 생성하여 범위 분할로 피할 수 있음
  • 현재 분할이 정적이라고 가정, 즉 분할 벡터가 한 번 생성되고 변경되지 않음
    • 모든 변경은 재분할 필요
    • 동적 분할은 분할 벡터를 연속적으로 변경할 수 있음
      • 이에 대해서는 나중에 더 설명

Dynamic Repartitioning

 

 

Replication (복제)

  • 목표: 장애에도 불구하고 가용성 보장
  • 데이터는 2개, 보통 3개의 노드에 복제됨
  • 복제 단위는 일반적으로 파티션 (tablet)
  • 장애가 발생한 노드의 데이터 요청은 자동으로 복제본으로 라우팅됨
  • 각 tablet이 두 노드에 복제된 파티션 테이블

Basics: Data Replication (기본: 데이터 복제)

  • 복제본의 위치
    • 데이터 센터 내 복제
      • 기기 장애 처리
      • 로컬 기기에 복제본이 있으면 지연 시간 감소
      • rack내에서, 또는 rack 간 복제
    • 데이터 센터 간 복제
      • 데이터 센터 장애(정전, 화재, 지진 등) 및 전체 데이터 센터의 네트워크 분할 처리
      • 가까운 데이터 센터에 복제본이 있으면 최종 사용자에게 더 낮은 지연 시간 제공

Key Value Storage Systems

  • Also-known-as
    • KV store
    • Key value database
  • 대규모 데이터 세트의 빠른 처리를 위해 SQL 포기
  • key-value storage system은 작은 (KB-MB) 크기의 대량 (수십억 개 이상의) 기록을 저장
  • Records는 여러 기기에 파티션됨
  • 쿼리는 시스템에 의해 적절한 기기로 라우팅됨
  • Records는 또한 여러 기기에 복제되어 기기 장애 시에도 가용성 보장
    • key-value storage system은 업데이트가 모든 복제본에 적용되어 값이 일관되도록 보장
  • key-value storage system은 다음과 같은 것들을 저장할 수 있다
    • uninterpreted bytes with an associated key (바이트 기반 키-값 저장소)
      • 예: Amazon S3, Amazon Dynamo
    • 연결된 key가 있는 wide-table 기반 저장소(임의의 수의 속성을 가진 와이드 테이블 형태로 저장)
      • Google BigTable, Apache Cassandra, Apache Hbase, Amazon DynamoDB
      • 일부 작업 (예: 필터링)을 저장소 노드에서 실행 가능
    • JSON
      • MongoDB, CouchDB (document model)
  • 문서 저장소는 반구조적 데이터를 저장하며, 일반적으로 JSON
  • 일부 key-value storage system은 타임스탬프/버전 번호와 함께 여러 버전의 데이터를 지원

Data type (Relational VS noSQL)

  • Relational (관계형)
    • SQL Databases
    • 분석 (OLAP)
  • Non-SQL Databases (비-SQL 데이터베이스)
    • Key-Value
    • Column-Family
    • Graph
    • Document

Key Value Storage Systems

  • Key Value Storage System은 다음 기능을 지원한다
    • put(key, value): 관련 키와 함께 값을 저장하는 데 사용
    • get(key): 지정된 키와 관련된 저장된 값을 검색
    • delete(key): 키 및 관련 값을 제거
  • 일부 시스템은 키 값에 대한 범위 쿼리도 지원
  • Key Value Storage System은 완전한 데이터베이스 시스템이 아님
    • 트랜잭션 업데이트에 대한 지원 없음/제한적
    • 응용 프로그램은 자체적으로 쿼리 처리를 관리해야 함
  • 위의 기능을 지원하지 않으면 확장 가능한 데이터 저장 시스템을 구축하기 쉬워짐
    • NoSQL 시스템이라고도 함

Internals of KV store (KV 저장소 내부 구조)

  • RocksDB: 페이스북에서 개발 및 유지 관리
    • 단순한 아키텍처
    • HW에 대한 완전한 제어

Centralized Database Systems (중앙 집중식 데이터베이스 시스템)

  • 단일 컴퓨터 시스템에서 실행
  • 단일 사용자 시스템
  • 다중 사용자 시스템은 서버 시스템으로도 알려져 있음
    • 클라이언트 시스템에서 서비스 요청 수신
    • 대규모 병렬 처리를 위한 다중 코어 시스템
      • 일반적으로 몇 개에서 수십 개의 프로세서 코어
      • 대조적으로, 세분화된 병렬 처리는 매우 많은 수의 컴퓨터 사용

Server System Architecture (서버 시스템 아키텍처)

  • 서버 시스템은 크게 두 가지로 분류될 수 있음
    • 트랜잭션 서버
      • 관계형 데이터베이스 시스템에서 널리 사용
    • 데이터 서버
      • 고성능 트랜잭션 처리 시스템을 구현하는 병렬 데이터 서버

Transaction Servers (트랜잭션 서버)

  • query server systems 또는 SQL server systems라고도 함
    • 클라이언트가 서버에 요청을 보냄
    • 트랜잭션이 서버에서 실행됨
    • 결과가 클라이언트로 전송됨

Transaction System Processes

Transaction Server Process Structure

  • 일반적인 트랜잭션 서버는 공유 메모리에서 데이터를 액세스하는 여러 프로세스로 구성됨
  • 공유 메모리는 공유 데이터 포함
    • Buffer pool
    • Lock table
    • Log buffer
    • Cached qurey plans (같은 쿼리가 다시 제출될 경우 재사용)
  • 모든 데이터베이스 프로세스는 공유 메모리에 접근 가능
  • 서버 프로세스
    • 사용자 쿼리(트랜잭션)를 받아 실행하고 결과를 반환
    • 프로세스는 멀티스레드일 수 있으며, 단일 프로세스가 여러 사용자 쿼리를 동시에 실행할 수 있음
    • 일반적으로 여러 멀티스레드 서버 프로세스 사용
  • Database writer process
    • 수정된 버퍼 블록을 지속적으로 디스크에 출력
  • Log writer process
    • 서버 프로세스는 단순히 로그 레코드를 로그 레코드 버퍼에 추가
    • 로그 기록 프로세스는 로그 레코드를 안정적인 저장소에 출력
  • Checkpoint process
    • 주기적인 체크포인트 수행
  • Process monitor process
    • 다른 프로세스를 모니터링하고, 다른 프로세스가 실패하면 복구 조치 수행
      • 예: 서버 프로세스가 실행 중인 트랜잭션 중단 및 재시작
  • Lock manager process
    • lock 요청/승인에 대한 프로세스 간 통신 오버헤드를 피하기 위해 각 데이터베이스 프로세스는 직접 lock 테이블에서 작업
      • 대신, lock manager 프로세스에 요청을 보내지 않음
    • 여전히 데드락 감지를 위해 lock manager 프로세스 사용
  • 두 프로세스가 동시에 동일한 데이터 구조에 접근하지 않도록 하기 위해, 데이터베이스 시스템은 mutual exclusion을 구현
    • Atomic instructions
      • Test-And-Set
      • Compare-And-Swap (CAS)
    • 운영 체제 세마포어(semaphore)
      • Atomic instructions보다 더 높은 오버헤드

Data Servers/Data Storage Systems

  • 데이터 항목은 처리가 수행되는 클라이언트로 전송됨
  • 업데이트된 데이터 항목은 서버에 다시 작성됨
  • 이전 세대의 데이터 서버는 데이터 항목 단위 또는 여러 데이터 항목을 포함하는 페이지 단위로 작동
  • 현재 세대의 데이터 서버 (데이터 저장 시스템이라고도 함)는 데이터 항목 단위로만 작업
    • 일반적으로 사용되는 데이터 항목 형식은 JSON, XML 또는 단순히 해석되지 않은 이진 문자열 포함
  • Prefetching
    • 곧 사용할 수 있는 항목을 미리 가져옴
  • Data caching
    • 캐시 일관성 유지
  • Lock caching
    • Lock은 트랜잭션 간에 클라이언트에 의해 캐시될 수 있음
    • Lock은 서버에 의해 다시 호출될 수 있음
  • Adaptive lock granularity(적응형 lock 적용도)
    • Lock granularity escalation(락 세분화 높이기)
      • 더 세분화된 granularity (예: tuple) lock에서 더 거친 lock으로 전환
    • Lock granularity de-escalation(락 세분화 낮추기)
      • 초기에는 거친 granularity로 시작하여 오버헤드를 줄이고, 서버에서 더 많은 동시성 충돌이 발생할 경우 더 세분화된 granularity로 전환
      • 자세한 내용은 책 참조

Parallel Systems

  • 병렬 데이터베이스 시스템은 빠른 상호 연결 네트워크로 연결된 여러 프로세서 및 여러 디스크로 구성됨
  • Motivation: 단일 컴퓨터 시스템이 처리할 수 없는 워크로드 처리
  • 고성능 트랜잭션 처리
    • 예: 웹 규모의 사용자 요청 처리
  • 의사결정 지원
    • 예: 대규모 웹 사이트/앱에서 수집된 데이터

Parallel Database Architectures

'DataBase' 카테고리의 다른 글

[DataBase] 10. Normalization(정규화)  (0) 2024.06.26
[DataBase] 08. Transaction Recovery  (0) 2024.06.26
[DataBase] 07. Data Storage Structure  (0) 2024.06.25
[DataBase] 06. Physical Storage System  (0) 2024.06.25
[DataBase] 05. E-R Model  (0) 2024.06.25

Transaction

  • Transaction은 여러 데이터 항목을 액세스하고 업데이트할 수 있는 프로그램 실행 단위(Unit)입니다.
    • 예: 계정 A에서 계정 B로 $50을 이체하는 Transaction:
      1. read(A)
      2. A := A - 50
      3. write(A)
      4. read(B)
      5. B := B + 50
      6. write(B)
  • 처리해야 할 두 가지 주요 문제:
    • 하드웨어 고장 및 시스템 충돌과 같은 다양한 종류의 failure(드뭄)
    • 여러 Transaction의 동시 실행(자주 발생)

Example of Fund Transfer

  • Atomicity requirement
    • Transaction이 3단계 후에 failure하고 6단계 전에 failure하면 돈이 "잃어버린" 상태가 되어 일관성이 없는 데이터베이스 상태가 됩니다.
    • failure는 소프트웨어 또는 하드웨어 때문일 수 있습니다.
    • 시스템은 부분적으로 실행된 Transaction의 업데이트가 데이터베이스에 반영되지 않도록 해야 합니다.
  • Durability requirement — 사용자가 Transaction이 완료되었다는 통지를 받은 후 (즉, $50 이체가 이루어진 후), Transaction에 의한 데이터베이스의 업데이트는 소프트웨어나 하드웨어 failure가 있어도 유지되어야 합니다.
  • Consistency requirement in above example:
    • A와 B의 합계는 Transaction의 실행에 의해 변경되지 않습니다.
    • (1번 이전과 6번 이후의 A + B가 동일해야 한다)
  • 일반적으로 Consistency requirement은 다음을 포함합니다.
    • Transaction은 일관된 데이터베이스를 봐야 합니다.
    • Transaction 실행 중 데이터베이스는 일시적으로 일관성이 없을 수 있습니다.
    • Transaction이 성공적으로 완료되면 데이터베이스는 일관성을 유지해야 합니다.
  • Isolation requirement — 3단계와 6단계 사이에 다른 Transaction T2가 부분적으로 업데이트된 데이터베이스에 액세스할 수 있으면 일관성이 없는 데이터베이스를 볼 수 있습니다 (A + B의 합계가 예상보다 적음).
    • Isolation은 Transaction을 순차적으로 실행하여 쉽게 보장할 수 있습니다.
      • 즉, 하나씩 순차적으로 실행합니다.

ACID Properties(중요!)

  • Transaction은 여러 데이터 항목을 액세스하고 업데이트할 수 있는 프로그램 실행 단위입니다. 데이터의 무결성을 유지하기 위해 데이터베이스 시스템은 다음을 보장해야 합니다:
    • Atomicity. Transaction의 모든 작업이 올바르게 데이터베이스에 반영되거나 하나도 반영되지 않아야 합니다.
    • Consistency. Transaction의 실행은 데이터베이스의 일관성을 유지합니다.
      • (위 예시에서 1, 2, 3 만 실행되었다면, 반드시 consistency를 보장해야함)
    • Isolation. 비록 많은 Transaction이 동시에 실행되지만, 각 transaction은 동시에 실행되는 transaction 서로를 몰라야 한다. 중간 transaction 결과는 동시에 실행되는 transaction들로부터 숨겨져야 한다.  모든 트랜잭션 Ti, Tj쌍에 대해 Ti가 실행을 시작하기 전에 Tj가 이미 실행을 완료했거나, Ti가 실행을 완료한 후에 Tj가 시작한 것 처럼 보여야 한다는 것  (각 트랜잭션이 다른 트랜잭션의 중간 결과를 인식하지 못하도록 하고, 서로 간섭하지 않도록 하는 원칙)  
    • Durability. Transaction이 성공적으로 완료된 후에는 데이터베이스에 대한 변경 사항이 시스템 failure가 발생하더라도 유지되어야 합니다.

Transaction State

  • Active – 초기 상태; Transaction이 실행되는 동안 이 상태에 있습니다.
  • Partially committed – final statement가 실행된 직후. (어떤 query도 transaction에 included 될 수 없는 상태)
  • Failed – 정상 실행이 더 이상 진행될 수 없다는 것을 발견한 이후 상태
  • Aborted – Transaction이 롤백되고 데이터베이스가 Transaction 시작 전 상태로 복원된 후. Transaction이 중단된 후 두 가지 선택 사항:
    • Transaction을 다시 시작
      • 내부 논리적 오류가 없는 경우에만 가능
    • Transaction 중단
  • Committed – 성공적으로 완료된 후.

 

Failure Classification

  • Transaction failure:
    • Logical errors: 내부 오류 조건으로 인해 transaction cannot complete (ex. bad query)
    • System errors: 오류 조건 (예: 교착 상태)으로 인해 데이터베이스 시스템이 active transaction을 종료해야 함
  • System crash: 전원 장애 또는 기타 하드웨어 또는 소프트웨어 장애로 시스템이 충돌함.
    • Fail-stop assumption: 비휘발성 저장소 내용이 시스템 충돌로 인해 손상되지 않았다고 가정한다
      • 데이터베이스 시스템은 디스크 데이터 손상을 방지하기 위해 여러 무결성 검사를 수행합니다.
  • Disk failure: 헤드 충돌 또는 유사한 디스크 장애로 인해 디스크 저장소의 일부 또는 전부가 손상됨
    • 파괴는 감지 가능한 것으로 가정: 디스크 드라이브는 Checksum을 사용하여 failure를 감지

Recovery Algorithms

  • 예를 들어, Transaction T_i가 계정 A에서 계정 B로 $50을 이체한다고 가정
    • 두 업데이트: A에서 50을 빼고 B에 50을 더합니다.
  • Recovery 알고리즘은 두 부분으로 나뉩니다:
    1. failure로부터 Recovery할 수 있는 충분한 정보가 존재하도록 보장하기 위해 정상 Transaction 처리 중 수행되는 작업
    2. failure 후 데이터베이스 내용을 atomicity, consistency and durability를 보장하는 상태로 Recovery하기 위해 수행되는 작업

Recovery at Storage Level

  • Volatile storage:
    • system crash를 견디지 못함
    • 예: 주 메모리, 캐시 메모리
  • Nonvolatile storage:
    • system crash를 견딤
    • 예: 디스크, 테이프, 플래시 메모리, 비휘발성 RAM
    • 하지만 여전히 failure할 수 있어 데이터 손실이 발생할 수 있음
  • Stable storage:
    • 모든 failure를 견디는 신화적인 형태의 저장소
    • 비휘발성 매체의 여러 복사본을 유지하여 근사적으로 구현
    • 안정된 저장소 구현에 대한 자세한 내용은 책을 참조하세요

Stable-Storage Implementation

  • 각 블록의 여러 복사본을 별도의 디스크에 유지
    • 복사본은 화재 또는 홍수와 같은 재해로부터 보호하기 위해 remote sites에 있을 수 있습니다.
  • failure로부터 Recovery하기 위해:
    1. 먼저 일관성이 없는 블록을 찾기:
      1. 비용이 많이 드는 솔루션: 모든 디스크 블록의 두 복사본을 비교.
      2. 더 나은 솔루션:
        • 비휘발성 저장소(플래시, 비휘발성 RAM 또는 디스크의 특수 영역)에 진행 중인 디스크 쓰기 기록.
        • Recovery 중 이 정보를 사용하여 일관성이 없을 수 있는 블록을 찾고 이러한 블록의 복사본만 비교.
        • 하드웨어 RAID 시스템에서 사용됨
    2. 불일치 블록의 두 복사본 중 하나에 오류(잘못된 체크섬)가 감지되면 다른 복사본으로 덮어씁니다. 두 복사본 모두 오류가 없지만 서로 다른 경우 첫 번째 복사본으로 두 번째 블록을 덮어씁니다.
  • 데이터 전송 중 failure는 여전히 일관성이 없는 복사본을 초래할 수 있음: 블록 전송은 다음과 같은 결과를 초래할 수 있음
    • 성공적인 완료
    • Partial failure: 대상 블록에 잘못된 정보가 있음
    • Total failure: 대상 블록이 업데이트되지 않음
  • 데이터 전송 중 failure로부터 저장 매체 보호(한 가지 솔루션):
    • (각 블록의 두 복사본을 가정하여) 다음과 같이 output 작업을 실행:
      1. 첫 번째 물리적 블록에 정보를 기록합니다.
      2. 첫 번째 기록이 성공적으로 완료되면 동일한 정보를 두 번째 물리적 블록에 기록합니다.
      3. 두 번째 기록이 성공적으로 완료된 후에만 output이 완료됩니다.

(부연 설명:  번째 블록에 쓰기 중에 문제가 발생하더라도,  번째 블록에도 동일한 정보가 복사되어 있어 데이터 손실을 방지할  있다. 최종적으로  번째 블록에 데이터가 성공적으로 기록되어야만 전체 output 완료된다.)

Recovery and Atomicity

  • 데이터 전송 중 failure로부터 저장 매체 보호(HW 솔루션):
    • SSD에 슈퍼 커패시터(Supercapacitor)를 추가합니다.


Recovery and Atomicity

  • 데이터 전송 중 failure로부터 저장 매체 보호(SW 솔루션):
    • (각 블록의 두 복사본을 가정하여) 다음과 같이 output 작업을 실행:
      1. 첫 번째 물리적 블록에 정보를 기록합니다.
      2. 첫 번째 기록이 성공적으로 완료되면 동일한 정보를 두 번째 물리적 블록에 기록합니다.
      3. 두 번째 기록이 성공적으로 완료된 후에만 output이 완료됩니다.
    • (결론 : 두 개의 physical block에 write해서 안정성을 높인다)

Recovery and Atomicity

  • 데이터베이스 솔루션:
    • failure에도 불구하고 atomicity을 보장하기 위해 데이터베이스 자체를 수정하지 않고 안정된 저장소에 수정 사항을 설명하는 정보를 먼저 출력합니다.
    • log-based Recovery 메커니즘을 자세히 연구합니다.
      • 먼저 주요 개념을 제시합니다.
      • 그런 다음 실제 Recovery 알고리즘을 제시합니다.
    • 덜 사용되는 대안: 섀도우 복사(Shadow-Copy)섀도우 페이징(Shadow-Paging)

Recovery and Atomicity

  • 덜 사용되는 대안: 섀도우 복사(Shadow-Copy) 및 섀도우 페이징(Shadow-Paging)

 

Log-Based Recovery

  • 로그(Log)는 로그 레코드(Log Records)의 시퀀스입니다. 로그 레코드는 데이터베이스에서 업데이트 활동에 대한 정보를 유지합니다.
    • 로그는 안정된 저장소에 보관됩니다.
  • Transaction Ti가 시작될 때, 로그 레코드를 작성하여 자신을 등록합니다.
  • Ti가 write(X)를 실행하기 전에, <Ti, X, V1, V2> 로그 레코드를 작성합니다.
    • 여기서 V1은 쓰기 전의 X의 값(Old Value)이고, V2는 X에 쓰여질 값(New Value)입니다.
  • Ti가 마지막 명령문을 완료하면 로그 레코드가 작성됩니다. (로그가 디스크에 저장되기  까지는 커밋 된게 아니다)

Log Example

 

Undo and Redo Operations

  • Undo and Redo of Transactions
    • undo(Ti) — Ti가 업데이트한 모든 데이터 항목의 값을 마지막 로그 레코드부터 뒤로 돌아가면서 원래 값으로 복원합니다.
      • 데이터 항목 X의 각 시간이 원래 값 V로 복원되면 <Ti, X, V> 로그 레코드가 작성됩니다.
      • Transaction이 중단되면 로그 레코드가 작성됩니다.
    • redo(Ti) — Ti가 업데이트한 모든 데이터 항목의 값을 첫 번째 로그 레코드부터 앞으로 진행하면서 새로운 값으로 설정합니다.
      • 이 경우 로깅은 수행되지 않습니다.

Recovering from Failure

  • failure 이후 recovering 할 때 로그가 존재한다면 Transaction Ti는  undone 되야 한다
    • <Ti start> record 포함하는 경우
    • <Ti commit> 또는 <Ti abort>  포함되어 있지 않는 경우
  • 로그가 있는 경우 Ti 다시 수행해야 한다(redone)
    • <Ti start> record 포함하는 경우
    • <Ti commit> 또는 <Ti abort>  포함되어 있는 경우

Recovery Example

 

각 상황에 따른 Recovery 조치는 다음과 같습니다:
(a) undo(T₀): B는 2000으로 Recovery되고 A는 1000으로 Recovery됩니다. 로그 레코드 <T₀, B, 2000>, <T₀, A, 1000>, <T₀, abort>이 기록됩니다.
(b) redo(T₀)와 undo(T₁): A와 B는 950과 2050으로 설정되고, C는 700으로 Recovery됩니다. 로그 레코드 <T₁, C, 700>, <T₁, abort>가 기록됩니다.
(c) redo(T₀)와 redo(T₁): A와 B는 각각 950과 2050으로 설정됩니다. 그 후 C는 600으로 설정됩니다.

Checkpoints (체크포인트)

  • 로그에 기록된 모든 트랜잭션을 다시 수행하거나 취소하는 것은 매우 느릴 수 있습니다.
    • 시스템이 오랫동안 실행된 경우 전체 로그를 처리하는 것은 시간이 많이 걸립니다.
    • 이미 데이터베이스에 업데이트를 출력한 트랜잭션을 불필요하게 다시 수행할 수 있습니다.
  • 주기적으로 체크포인트를 수행하여 Recovery 절차를 간소화합니다.
    1. 현재 메인 메모리에 있는 모든 로그 레코드를 안정 저장소에 출력합니다.
    2. 모든 수정된 버퍼 블록을 디스크에 출력합니다.
    3. <checkpoint L> 로그 레코드를 안정 저장소에 기록합니다. 여기서 L은 체크포인트 시점에 활성 상태인 모든 트랜잭션의 목록입니다.
    4. 체크포인트를 수행하는 동안 모든 업데이트가 중지됩니다.

Example of Checkpoints

 

1.     T1 체크포인트 이전에 이미 완료되어 디스크에 변경사항이 반영되었으므로 무시 (복구 대상이 아님)

2.     T2, T5 체크포인트 시점에 진행중이 였으므로 복구 대상에 포함되어야 

3.     T2 대한 완료 로그가 있으므로, redo 수행한다. 체크 포인트 이전 부분은 이미 디스크에 반영되었으므로 체크포인트 이후작업만 다시 수행

4.     T3 시작되었다는 로그를 확인하고 복구대상에 포함한다. T3 완료로그를 읽으면 redo 한다

5.     T4 시작로그를 읽고 복구대상에 포함한다.

6.     고장 시점에 다다르면 복구 대상에 남아있는 transaction undo한다.   T5 undo 위해 체크포인트 이전 시점의 로그까지 사용한다.

 

 

File Organization

  • From MySQL to InnoDB
    • Function calls
  • From InnoDB to Linux
    • System call
  • From Linux to File System
    • Ext4_file_Write_iter
  • From File System to HDD
    • SATA_commands

 

  • 데이터베이스는 파일의 모음으로 저장됨 
    • 각 파일은 records의 sequence
      • 각 파일은 하나 이상의 페이지로 구성됨
      • 각 페이지는 하나 이상의 레코드를 포함함
    • 레코드는 필드의 시퀀스
  • 하나의 접근 방법
    • 레코드 크기가 고정되어 있다고 가정
    • 각 파일은 하나의 특정 유형의 레코드만 포함
    • 서로 다른 Relation을 위해 서로 다른 파일 사용
  • 레코드는 디스크 블록보다 작다고 가정한다.

Fixed-Length Records

  • 간단한 접근 방법
    • 각 레코드 i를 바이트 n * i부터 저장, 여기서 n은 각 레코드의 크기
    • 레코드 접근은 간단하지만 레코드가 블록을 넘을 수 있음
      • 수정: 레코드가 블록 경계를 넘지 않도록 함

  • 레코드 i의 삭제:
    • 대안 3가지:
      • 1. 레코드 i + 1, ..., n을 i, ..., n - 1로 이동
      • 2. 레코드 n을 i로 이동
      • 3. 레코드를 이동하지 않고 모든 자유 레코드를 자유 목록에 연결
  • 예: 레코드 3 삭제됨 (1. 레코드 i + 1, ..., n을 i, ..., n - 1로 이동하는 방법)

 

 

  • 예: 레코드 3 삭제되고 레코드 11로 대체됨(2. 레코드 n을 i로 이동하는 방법)

 

  • 3. 레코드를 이동하지 않고 모든 자유 레코드를 자유 목록에 연결하는 방법


Variable-Length Records

(사실 Fixed-Length인 경우는 매우 드물다)

  • Variable-length 레코드는 여러 방식으로 데이터베이스 시스템에서 발생:
    • 파일에서 여러 레코드 유형 저장
    • 하나 이상의 필드 (예: varchar)에 대해 가변 길이를 허용하는 레코드 유형
    • Attribute는 순서대로 저장됨
    • 가변 길이 Attribute는 고정 크기 (offset, length)로 표현되며, 실제 데이터는 모든 고정 길이 Attribute 후에 저장됨
    • Null 값은 null-value bitmap으로 표현됨

 

 

Variable-Length Records: Slotted Page Structure

  • Slotted page

  • 슬롯 페이지 헤더에는 다음이 포함됨:
    • 레코드 엔트리 수
    • 블록 내 빈 공간의 끝
    • 각 레코드의 위치와 크기
  • 레코드는 페이지 내에서 이동할 수 있으며, 이를 통해 레코드 사이에 빈 공간이 없도록 유지; 헤더 내의 엔트리는 업데이트되어야 함

Organization of Records in Files

  • Heap
    • 가장 간단하고 기본적인 조직 형태
    • heap file organization에서는 레코드가 파일의 끝에 삽입됨
    • 레코드가 삽입될 때, 레코드의 정렬 및 정리가 필요하지 않음
      • 레코드는 파일 내의 공간이 있는 곳 어디에나 배치될 수 있음
  • Sequential
    • 레코드를 검색 키의 값에 따라 순차적으로 저장
  • In a multitable clustering file organization
    • 여러 다른 관계의 레코드가 동일한 파일에 저장될 수 있음
      • Motivation: I/O를 최소화하기 위해 관련된 레코드를 동일한 블록에 저장
  • B+-tree file organization
    • 삽입/삭제가 있어도 정렬된 저장 공간
  • Hashing
    • 검색 키에 대해 계산된 해시 함수를 사용; 결과는 파일의 어느 블록에 레코드를 배치해야 하는지 지정함

Sequential File Organization

  • 전체 파일의 순차적 처리를 필요로 하는 응용 프로그램에 적합
  • 파일의 레코드는 Search-key로 정렬됨

  • 삭제
    • 포인터 체인을 사용
  • 삽입
    • 레코드를 삽입할 위치를 찾기
      • 여유 공간이 있으면, 그 공간에 삽입
      • 여유 공간이 없으면, overflow block에 레코드를 삽입
      • 어떤 경우든, 포인터 체인을 업데이트해야 함
  • (이 방법으로 삽입과 삭제를 하면 포인터가 너무 복잡해지는 단점이 존재한다)
  • (급격한 변화가 없는 주식 시장에서 사용하는 방식이다)
  • 파일을 정기적으로 재조직하여 순차적 순서를 복원해야 함

 

  • (bottom에 데이터가 계속 추가되고, keep track 한다)

Multitable Clustering File Organization

  • multitable clustering file organization을 사용하여 하나의 파일에 여러 relation을 저장

  • 장점
    • 조인을 포함한 쿼리에 적합
    • 단일 department와 관련된 instructor를 포함한 쿼리에 적합
  • 단점
    • 단일 department만 포함하는 쿼리에 적합하지 않음
  •  가변 크기의 레코드를 생성
  • 특정 relation의 레코드를 연결하기 위해 포인터 체인을 추가할 수 있음

B+ Tree

(MySQL, MariaDB 등에서 기본으로 사용하는 방식. 평균적인 속도가 빠름)

  • B+ Tree는 균형 이진 검색 트리(balanced binary search tree)임
    • 예시
      • 아래의 B+ 트리 구조에서 55를 검색해야 한다고 가정
      • 먼저 중간 노드를 검색하여 55 레코드를 포함할 수 있는 리프 노드로 이동
      • 중간 노드에서 50과 75 노드 사이의 브랜치를 찾음
      • 마지막으로 리프 노드로 리디렉션됨
      • 여기서 DBMS는 55를 찾기 위해 순차 검색을 수행

Data Dictionary Storage

  • Data Dictionary (또는 시스템 카탈로그)는 메타데이터를 저장; 즉, 데이터에 대한 데이터를 저장
    • 메타데이터는 관계에 대한 정보를 포함
      • relation의 이름
      • 각 relation의 attribute 이름, type 및 length
      • 뷰의 이름과 정의
      • 무결성 제약 조건(Integrity constraints)
    • 사용자 및 계정 정보 (비밀번호 포함)
    • 통계 데이터
    • 물리적 파일 조직 정보
      • relation이 저장되는 방식 (순차/해시/...)
      • relation의 물리적 위치
    • 인덱스에 대한 정보

Storage Access

  • 블록은 storage allocation 및 data transfer의 단위
  • 데이터베이스 시스템은 디스크와 메모리 간의 블록 전송 수를 최소화하려고 함
    • 가능한 많은 블록을 메모리에 유지하여 디스크 액세스 수를 줄일 수 있음
  • Buffer(버퍼)
    • 디스크 블록의 복사본을 저장하기 위해 사용 가능한 main memory의 일부
  • Buffer Manager
    • 메인 메모리에서 버퍼 공간을 할당하는 하위 시스템

Buffer Manager

  • Buffer Manager의 작동
    • 프로그램은 디스크에서 블록이 필요할 때 Buffer Manager를 호출
      • 블록이 이미 버퍼에 있는 경우, Buffer Manager는 메인 메모리에서 블록의 주소를 반환
      • 블록이 버퍼에 없는 경우, Buffer Manager는
        • 블록을 위한 버퍼 공간을 할당
          • 여유 공간이 있는 경우
            • 버퍼에 새 블록 할당
          • 여유 공간이 없는 경우
            • 새 블록을 위해 공간을 만들기 위해 다른 블록을 대체 (버림)
            • 대체된 블록은 디스크에서 마지막으로 읽거나 수정된 경우에만 다시 씀
        • 디스크에서 버퍼로 블록을 읽고, 요청자에게 메인 메모리의 블록 주소를 반환
  • Buffer 교체 전략
    • Pinned block
      • 디스크에 다시 쓰여지지 않는 메모리 블록
    • Shared and exclusive locks buffer
      • 페이지 내용을 읽는 동안 동시에 작동을 방지하고, 한 번에 하나의 이동/재구성을 보장하기 위해 필요
      • Reader는 shared lock을 얻고, 블록을 업데이트하려면 exclusive lock을 요구
      • 잠금 규칙:
        • 한 번에 한 프로세스만 exclusive lock을 얻을 수 있음
        • Shared lock은 exclusive lock과 동시에 존재할 수 없음
        • 여러 프로세스가 동시에 shared lock을 가질 수 있음

Buffer-Replacement Policies

  • 대부분의 OS는 가장 최근에 사용되지 않은 블록을 대체 (LRU 전략)
    • 이전 블록 참조 패턴을 미래 참조의 예측자로 사용
    • LRU 캐싱 방식은 캐시가 가득 차고 캐시에 없는 새 페이지가 참조될 때 가장 최근에 사용되지 않은 페이지를 제거하는 것
    • 자세한 내용은 운영체제 글에서 다뤘다

Column-Oriented Storage

  • 각 relation의 각 column을 별도로 저장

  • Row storage vs. Columnar storage

Columnar Representation(컬럼 기반 표현)

  • 장점:
    • 일부 열만 접근할 경우 I/O 감소
  • 단점:
    • 컬럼(열) 기반 표현에서 레코드 재구성 비용
    • 레코드 삭제 및 업데이트 비용
  • 전통적인 행 기반 표현은 트랜잭션 처리를 위해 선호됨
  • 일부 데이터베이스는 두 가지 표현 방식을 모두 지원
    • hybrid row/column stores라고 불림

'DataBase' 카테고리의 다른 글

[DataBase] 09. BigData and Distributed DataBase  (0) 2024.06.26
[DataBase] 08. Transaction Recovery  (0) 2024.06.26
[DataBase] 06. Physical Storage System  (0) 2024.06.25
[DataBase] 05. E-R Model  (0) 2024.06.25
[DataBase] 04. Intermediate SQL  (0) 2024.06.15

데이터베이스는 본질적으로 data storage system입니다

 

 

물리적 저장 매체의 분류

  • Volatile storage: 전원이 꺼지면 내용이 손실됨
    • non-safe
    • ex) memory
  • Non-volatile storage:
    • 전원이 꺼져도 내용이 지속됨
    • 2차 및 3차 storage 포함, 배터리 백업된 main-memory 포함
  • 저장 매체 선택에 영향을 미치는 요소:
    • 데이터 접근 속도
    • 데이터 단위당 비용
    • reliability(신뢰성)

Storage Hierarchy

  • Primary storage: 가장 빠른 매체지만 volatile (cache, main memory)
  • Secondary storage: 다음 계층, non-volatile, 적당히 빠른 접근 시간
    • on-line storage라고도 함
    • 예: flash memory, magnetic disks
  • Tertiary storage: 가장 낮은 계층, non-volatile, 느린 접근 시간
    • 예: magnetic tape, optical storage

Storage Interfaces

  • Storage 인터페이스 표준
    • Storage는 보통 컴퓨터 시스템에 직접 연결됨
      • SATA (Serial ATA)
        • SATA 3는 최대 6 gigabits/sec의 데이터 전송 속도 지원
    • SAS (Serial Attached SCSI)
      • SAS 버전 3는 12 gigabits/sec 지원
    • NVMe (Non-Volatile Memory Express) 인터페이스
      • PCIe 커넥터를 사용하여 더 낮은 대기 시간과 더 높은 전송 속도 지원
      • 최대 24 gigabits/sec의 데이터 전송 속도 지원
    • Storage Area Networks (SAN): 많은 디스크가 고속 네트워크를 통해 여러 서버에 연결됨
    • Network Attached Storage (NAS): networked storage는 디스크 시스템 인터페이스 대신 네트워크 파일 시스템 프로토콜을 사용하여 파일 시스템 인터페이스 제공

NAS와 SAN의 비교

 

Magnetic Hard Disk Mechanism

Magnetic Disks

  • Read-Write head
  • 플래터 표면이 원형 tracks으로 나누어짐
  • 각 트랙은 sectors로 나누어짐
    • sector는 읽거나 쓸 수 있는 데이터의 가장 작은 단위
    • sector 크기는 보통 512 bytes
    • 트랙당 일반적인 sector 수
      • 500에서 1000 (inner track)에서 1000에서 2000 (outer track)까지
  • 섹터를 읽거나 쓰려면
    • Disk arm이 올바른 트랙에 head를 위치시킴
    • Platter가 계속 회전하며 데이터는 헤드 아래를 지나가면서 읽거나 씀
  • Head-disk assemblies
    • 단일 spindle에 여러 디스크 플래터 (보통 1~5개)
    • 각 플래터에 하나의 헤드, coomon arm에 장착
  • 실린더 i는 모든 플래터의 i번째 트랙으로 구성됨
  • Disk controller
    • 컴퓨터 시스템과 디스크 드라이브 하드웨어 사이의 인터페이스
    • (디스크 내에서 조그만한 CPU 역할을 한다고 생각하면 된다)
      • 섹터를 읽거나 쓰기 위한 명령을 수락
      • 디스크 암을 올바른 트랙으로 이동시키고 실제로 데이터를 읽거나 쓰는 작업을 시작
      • 쓰기 후 섹터를 다시 읽어 성공적으로 쓰기가 완료되었는지 확인
      • 불량 섹터 재매핑 수행

Performance Measures of Disks

Access time

  • 데이터를 읽거나 쓰기 위한 요청이 발행된 순간부터 데이터 전송이 시작될 때까지 걸리는 시간
  • Seek time
    • arm을 올바른 트랙 위로 재배치하는 데 걸리는 시간
      • 일반적인 디스크에서 4에서 10 밀리초
  • Rotational latency
    • 섹터가 헤드 아래로 나타나도록 접근하는 데 걸리는 시간
      • 일반적인 디스크에서 4에서 11 밀리초
  • 전체 지연 시간은 디스크 모델에 따라 5에서 20 밀리초

Data-transfer rate

  • 디스크에서 데이터를 검색하거나 디스크에 데이터를 저장할 때의 속도
    • 최대 속도는 초당 25에서 200MB

Performance Measures

Disk block

  • storage 할당 및 검색을 위한 논리적 단위
  • 보통 4에서 16킬로바이트
    • 작은 블록: 디스크에서 더 많은 전송
    • 큰 블록: 부분적으로 채워진 블록으로 인한 공간 낭비

Sequential access pattern (1, 2, 3, 4, ...)

  • 연속적인 요청은 연속적인 디스크 블록에 대해 발생
  • 디스크 탐색은 첫 번째 블록에 대해서만 필요

Random access pattern(1, 999, 3, 100, ...)

  • 연속적인 요청은 디스크 어디에서나 블록에 대해 발생할 수 있음
  • 각 접근은 탐색을 필요로 함
  • 탐색에 많은 시간이 소요되므로 전송 속도는 낮음

I/O operations per second (IOPS)

  • 디스크가 초당 지원할 수 있는 random block 읽기 수
  • 현재 세대의 magnetic disks에서 초당 50에서 200 IOPS

Flash Storage

NAND flash

  • Storage로 널리 사용됨
  • 페이지 단위 읽기 필요 (페이지: 4KB 또는 8KB)
    • 페이지 읽기 시간은 20에서 100 마이크로초
    • sequential read와 random read 간 큰 차이 없음
  • 페이지는 한 번만 쓸 수 있음
    • rewrite를 위해서는 지워야 함

Solid state disks

  • SSD(solid-state drive)는 플래시 메모리를 사용하여 데이터를 영구적으로 저장하는 solid-state 저장 장치
  • computer storage 계층에서 2차 저장소로서 작동한다
  • SATA를 사용하면 초당 최대 500MB, NVMe PCIe를 사용하면 초당 최대 3GB 전송 속도

NAND flash Overview

  • Erase는 erase block 단위로 발생
    • 2에서 5밀리초 소요
    • erase block은 보통 256KB에서 1MB
  • 논리적 페이지 주소를 물리적 페이지 주소로 remapping하여 erase 대기 시간 회피
  • Flash translation table은 mapping을 추적
    • flash page의 label 필드에 저장됨
    • Flash translation layer에 의해 remapping 수행
  • 100,000에서 1,000,000번의 지우기 후에 erase block은 신뢰할 수 없게 되며 사용할 수 없음
    • Wear leveling

remapping 예시 - Sector Mapping(교수님이 강조하신 부분)

 

Database to Flash memory(교수님이 강조하신 부분)

Flash Storage

Nand Gate에는 life cycle이 있다. nand gate가 고장나면 data consistency가 보장되지 않는다.

Wear leveling

  • 플래시 메모리 (SSD)와 같은 지울 수 있는 저장 매체의 수명을 연장하는 기술

  • Wear leveling은 많이 쓰여진 블록에서 데이터를 가져와 적게 쓰여진 블록으로 재배치
  • 이론적으로, 이는 디스크 전체에 쓰기를 분산시켜 디스크 수명을 연장

Storage Class Memory

3D-Xpoint memory 기술

  • Intel에 의해 개발된 비휘발성 메모리 (NVM) 기술
  • Intel Optane으로 제공
    • SSD 인터페이스는 2017년부터 출시됨
      • 플래시 SSD보다 낮은 지연 시간을 허용
  • 2018년에 발표된 비휘발성 메모리 인터페이스
    • words에 대한 직접 접근을 지원하며, 메인 메모리 속도에 가까운 속도

  • (volatile 속성인 DRAM + persistence를 보장해주는 power를 합쳤다고 보면된다. 속도와 수명을 모두 챙긴 기술)

RAID

RAID: Redundant Arrays of Independent Disks

  • 다수의 디스크를 관리하여 단일 디스크의 뷰를 제공하는 디스크 조직 기술
    • 여러 디스크를 병렬로 사용하여 높은 용량과 고속 제공
    • 데이터를 중복 저장하여 높은 신뢰성 제공, 따라서 디스크가 고장 나더라도 데이터 복구 가능
  • N개의 디스크 중 일부가 고장 날 가능성은 특정 단일 디스크가 고장 날 가능성보다 훨씬 높음
    • 다수의 디스크가 있는 경우 데이터 손실을 방지하기 위해 중복을 사용하는 기술이 중요

RAID 0: block striping; non-redundant

  • RAID0에서는 두 개 이상의 드라이브가 하나의 단일 드라이브처럼 동작합니다.
  • 그러나, RAID0은 보호 기능을 제공하지 않습니다.
  • 장점:
    • RAID0은 중복이 없기 때문에 하드 드라이브 공간을 최대한 활용합니다.
    • 높은 성능
  • 단점:
    • 보호 기능 없음

 

  • (A와 B를 동시에, C와 D를 동시에, ..... 저장가능하기 때문에 high performance)

RAID 1: Mirrored disks with block striping

  • RAID 1에서는 하드 드라이브가 서로의 mirror 역할을 합니다.
    • 이는 중복성(redundancy)을 제공합니다.
  • RAID 0과 달리 드라이브의 전체 결합된 공간을 사용하는 것이 아니라, RAID 1은 중복성을 위해 절반의 공간만 사용합니다.
    • 두 하드 드라이브는 동일한 크기여야 합니다.
  • 장점:
    • Redundancy
  • 단점:
    • 공간 효율성이 낮음

RAID 5: Block-interleaved Distributed Parity

  • RAID5는 distriubted parity(분산 패리티)를 사용한 block-level striping으로 구성됩니다.
  • 단일 드라이브가 실패할 경우, distributed parity로부터 계산하여 데이터 손실 없이 후속 읽기가 가능합니다.
    • RAID 5는 최소 세 개의 디스크가 필요합니다.
  • data와 parity를 모든 디스크에 분할합니다.

  • RAID 5에서 lost data를 재구성하는 것은 매우 간단합니다:
    • 남아 있는 데이터와 parity 정보를 XOR 연산하여 수행합니다, 왜냐하면:
      • A XOR B = Parity
      • A XOR Parity = B
      • B XOR Parity = A

Improvement of Reliability via Redundancy

Redundancy

  • 디스크 장애에서 손실된 정보를 재구성하는 데 사용할 수 있는 추가 정보를 저장합니다.
    • 예: Mirroring or shadowing
      • 모든 디스크를 복제
        • 논리적 디스크는 두 개의 물리적 디스크로 구성됩니다.
      • 모든 쓰기는 두 디스크에서 수행됩니다.
        • 읽기는 어느 디스크에서나 수행할 수 있습니다.
      • 한 쌍의 디스크 중 하나가 고장 나면, 데이터는 여전히 다른 디스크에서 사용할 수 있습니다.
        • 디스크가 고장 나고 시스템이 복구되기 전에 미러 디스크도 고장 나야 데이터 손실이 발생합니다.
          • 위 경우의 발생 확률은 매우 작습니다. (화재나 전기 과전압과 같은 dependent failure modes를 제외하고)

RAID Types

RAID 구현 방식

  • Software RAID
    • "Software RAID"에서는 모든 configuration이 운영 체제에 의해 처리됩니다.
      • RAID 구현은 전적으로 소프트웨어에서 수행되며, 특별한 하드웨어 지원이 필요 없습니다.
      • 소프트웨어 RAID의 장점은 매우 저렴하다는 것입니다. 추가 하드웨어를 구매할 필요가 없고, 대부분의 운영 체제에 포함된 소프트웨어로 RAID를 관리할 수 있습니다.
      • 단점 중 하나는 자체 하드웨어로 관리되지 않기 때문에 컴퓨터의 자원을 소모한다는 점입니다.
  • Hardware RAID
    • "Hardware RAID"에서는 RAID 구성에 관한 모든 정보가 하드웨어 인터페이스 카드에 의해 처리됩니다.
      • 하드웨어 RAID의 장점은 모든 것이 인터페이스 카드에 의해 처리되기 때문에, 컴퓨터가 RAID를 실행하기 위해 메모리나 CPU 성능을 사용할 필요가 없다는 것입니다.

Optimization of Disk-Block Access

Buffering

  • 디스크 블록을 캐시하기 위한 메모리 내 버퍼

Read-ahead

  • 곧 요청될 것을 예상하여 트랙에서 추가 블록을 읽음
  • (요청한 것 플러스 알파로 한 번에 많이 읽어옴)

Disk-arm-scheduling

  • 스케줄링 알고리즘은 디스크 암 이동을 최소화하도록 블록 요청을 재정렬합니다.
    • 엘리베이터 알고리즘
      • 평균 디스크 탐색 시간을 계산하는 방법의 예:
        • 대기 중인 디스크 요청 목록 (트랙 번호 순으로 나열): 100, 50, 10, 20, 75
        • 목록은 오름차순으로 정렬해야 합니다: 10, 20, 50, 75, 100

File organization

(가장 성능 향상이 큰 방법임)

  • 파일의 블록을 가능한 연속적인 방식으로 할당
  • 파일이 조각화될 수 있음
    • 예: 디스크의 여유 블록이 분산되어 있고 새로 생성된 파일이 디스크 전체에 분산된 블록을 가질 경우
    • 조각화된 파일에 대한 순차적 접근은 disk arm의 이동을 증가시킴
  • 일부 시스템은 파일 시스템을 최적화하여 파일 접근 속도를 높이기 위해 조각 모음 유틸리티를 갖추고 있음

'DataBase' 카테고리의 다른 글

[DataBase] 08. Transaction Recovery  (0) 2024.06.26
[DataBase] 07. Data Storage Structure  (0) 2024.06.25
[DataBase] 05. E-R Model  (0) 2024.06.25
[DataBase] 04. Intermediate SQL  (0) 2024.06.15
[DataBase] 03. Introduction to SQL(2)  (0) 2024.06.15

Design Phases(디자인 단계)

초기 단계

  • 잠재적 database 사용자들의 data 요구를 완전히 파악

두 번째 단계

  • data model 선택
    • 선택한 data model의 개념 적용
    • 이러한 요구사항을 database의 개념적 schema로 변환
    • 완전히 개발된 개념적 schema는 기업의 기능적 요구사항(functional requirements)을 나타냅니다.
      • data에 대해 수행될 작업(또는 트랜잭션)의 종류를 설명

최종 단계

  • abstract data model에서 database 구현으로 이동
    • 논리적 설계(Logical design)
      • database schema 결정
      • database 설계는 '좋은' relation schemas 컬렉션을 찾아야 함을 요구합니다.
        • 비즈니스 관점에서 decision: database에 어떤 attribute를 기록해야 하는가?
        • Computer Science 관점에서 decision: 어떤 relation schemas를 가져야 하고 attributes를 다양한 relation schemas에 어떻게 분배해야 하는가?
    • 물리적 설계(Physical design)
      • database의 물리적 레이아웃 결정

Design Alternatives

  • database schema를 설계할 때, 우리는 두 가지 주요 함정을 피해야 합니다:
    • Redundancy(중복): 나쁜 설계는 중복된 정보를 초래할 수 있습니다.
      • 정보의 중복된 표현은 정보의 다양한 복사본 간의 data 불일치를 초래할 수 있습니다.
    • Incompleteness(불완전성): 나쁜 설계는 기업의 특정 측면을 모델링하기 어렵거나 불가능하게 만들 수 있습니다.
  • 나쁜 설계를 피하는 것만으로는 충분하지 않습니다. 우리는 선택해야 할 많은 좋은 설계가 있을 수 있습니다.

Design Approaches(디자인 접근 방식)

  • Entity Relationship 모델
    • entity 및 relation의 모음
      • Entity: 다른 객체와 구별되는 'thing(것)' 또는 'object(객체)'
        • attributes 집합에 의해 설명됨
      • Relationship: 여러 entities 간의 association

ER model in Database Modeling(Database 모델링에서의 ER 모델)

  • ER data model은 database 설계를 용이하게 하기 위해 database의 전체 논리적 구조를 나타내는 schema 지정 기능을 제공하여 개발되었습니다.
    • ER data model은 세 가지 기본 개념을 사용합니다.
      • Entity sets
      • Relationship sets
      • Attributes
    • ER 모델은 database의 전체 논리적 구조를 그래픽으로 표현할 수 있는 ER 다이어그램이라는 관련 다이어그램 표현도 가지고 있습니다.

Entity Sets(엔티티 집합)

  • Entity는, 존재하며 다른 객체들과 구별되는 객체입니다.
    • 예: 특정 사람, 회사, 이벤트, 식물
  • Entity set은 동일한 유형의 entities의 집합으로, 동일한 properties를 공유합니다.
    • 예: 모든 사람, 회사, 나무, 휴일...의 집합
  • Entity는 attributes의 집합으로 표현됩니다. 즉, entity set의 모든 구성원이 소유한 descriptive properties(기술적 속성?)입니다.
    • 예:
      • instructor = (ID, name, salary)
      • course = (course_id, title, credits)
  • attributes의 하위 집합은 entity set의 primary key를 형성합니다. 즉, 각 구성원을 고유하게 식별합니다.

Entity Sets (instructor and student)

Representing Entity sets in ER Diagram(ER 다이어그램에서 Entity 집합 표현)

  • Entity sets은 다음과 같이 그래픽으로 표현될 수 있습니다:
    • 사각형은 entity sets을 나타냅니다.
    • attributes는 entity 사각형 내부에 나열됩니다.
    • 밑줄은 primary key attributes를 나타냅니다.

Relationship Sets

  • 관계 유형은 entity types 간의 연관을 나타냅니다.
    • 예: advisor relationship set을 정의하여 student와 그들의 advisor 역할을 하는 instructor 간의 연관을 나타냅니다.
    • 관련 entities 간의 선을 그릴 수 있습니다.

  • attribute는 relationship set과도 연관될 수 있습니다.
    • 예: instructor와 student 사이의 advisor relationship set은 학생이 advisor와 연관된 날짜를 추적하는 attribute data를 가질 수 있습니다.

Relationship Sets을 ER 다이어그램으로 표현하기

Relationship sets with Attribute

 

Roles

  • Entity가 Relationship에서 수행하는 기능을 Role이라고 한다.
    • Relationship set의 의미가 명확하지 않을 때 유용하다.
  • ER 다이어그램에서, Entity(직사각형)와 Relationship(다이아몬드)를 연결하는 선에 라벨을 붙여 이를 나타낼 수 있다.

 

Relationship Set의 차수

Binary Relationship

  • 두 개의 Entity set(또는 차수 2)을 포함한다.
  • 데이터베이스 시스템에서 대부분의 Relationship sets은 Binary 관계이다.
    • 예: 학생이, 수강 중인 코스에 등록되어 있다.

  • 두 개 이상의 Entity 집합 간의 Relationship은 드물다
    • 예: 학생들이 강사의 지도 아래 연구 프로젝트를 수행한다.
      • Relationship proj_guide는 instructor, student, project 간의 삼항 관계(ternary relationship)이다.

Non-binary Relationship Sets

  • 대부분의 Relationship sets은 Binary 관계이다.
    • Non-binary 관계로 표현하는 것이 더 편리한 경우가 있다.
    • ER 다이어그램의 삼항 관계

 

Attributes

  • Attribute 유형:
    • Simple 및 Composite Attributes
    • Single-valued 및 Multivalued Attributes
      • 예: Multivalued Attribute: phone_numbers
  • Derived Attributes
    • 다른 Attributes로부터 계산될 수 있음
    • 예: 나이, 생년월일
  • Domain
    • 각 Attribute에 허용되는 값의 집합

Attributes

  • Attributes는 Entity type을 정의하는 속성들이다.
    • 예: Roll_No, Name, Age, Address, Phone_numbers는 학생 Entity type을 정의하는 Attributes이다.
    • ER 다이어그램에서 Attribute는 타원으로 표현된다.

Key Attribute

  • Entity set의 각 Entity를 고유하게 식별하는 Attribute를 Key Attribute라고 한다.
    • 예: Roll_No는 각 학생마다 고유하다.
    • ER 다이어그램에서 Key Attribute는 밑줄이 있는 타원으로 표현된다.

 

Attributes

  • Attributes는 Entity type을 정의하는 속성들이다.
    • Composite Attribute
      • 여러 다른 Attribute로 구성된 Attribute를 Composite Attribute라고 한다.
        • 예: 학생 Entity 유형의 address Attribute는 street, city, state, country로 구성된다.
        • ER 다이어그램에서 Composite Attribute는 여러 타원으로 구성된 타원으로 표현된다.

 

  • Attributes는 Entity 유형을 정의하는 속성들이다.
  • Multivalued Attribute
    • 주어진 Entity에 대해 하나 이상의 값을 가질 수 있는 Attribute를 Multivalued Attribute라고 한다.
      • 예: Phone_No (학생의 경우 여러 값을 가질 수 있다).
      • ER 다이어그램에서 Multivalued Attribute는 이중 타원으로 표현된다.

  • Derived Attribute
    • 다른 Attributes로부터 도출될 수 있는 Attribute를 Derived Attribute라고 한다.
      • 예: 나이 (생년월일(DOB)로부터 도출될 수 있다).
      • ER 다이어그램에서 Derived Attribute는 점선 타원으로 표현된다.

  • 학생 Entity type은 다음과 같은 Attributes로 표현될 수 있다.

Mapping Cardinality Constraints

  • Entity가 Relationship 집합을 통해 연관될 수 있는 Entity의 수를 표현한다.
    • Binary Relationship 집합을 설명하는 데 가장 유용하다.
    • Binary Relationship 집합의 경우, 매핑 Cardinality는 다음 유형 중 하나여야 한다:
      • One to one
      • One to many
      • Many to one
      • Many to many

Mapping Cardinalities

  • 주의: A와 B의 일부 요소는 다른 집합의 어떤 요소에도 매핑되지 않을 수 있다.

  • 주의: A와 B의 일부 요소는 다른 집합의 어떤 요소에도 매핑되지 않을 수 있다.

Representing Cardinality Constraints in ER diagram

  • Cardinality 제약 조건은 Relationship 집합과 Entity 집합 사이에 방향성이 있는 선(→)을 그려 "one"을 나타내거나 방향성이 없는 선(—)을 그려 "many"를 나타내어 표현한다.
  • One-to-one Relationship between an instructor and a student:
    • 학생은 advisor Relationship을 통해 최대 한 명의 instructor와 연관된다.
    • 학생은 stud_dept를 통해 최대 한 개의 학과와 연관된다.

 

One-to-Many Relationship

  • One-to-many Relationship between an instructor and a student
    • Instructor는 advisor를 통해 여러 명의 학생(0명 포함)과 연관된다.
    • 학생은 advisor를 통해 최대 한 명의 instructor와 연관된다.

 

Many-to-One Relationship

  • Many-to-one Relationship between an instructor and a student
    • Instructor는 advisor를 통해 최대 한 명의 학생과 연관된다.
    • 학생은 advisor를 통해 여러 명의 instructor(0명 포함)와 연관된다.

Many-to-Many Relationship

  • Instructor는 advisor를 통해 여러 명의 학생(0명 포함)과 연관된다.
  • 학생은 advisor를 통해 여러 명의 instructor(0명 포함)와 연관된다.

Total and Partial Participation

  • Total participation (이중 선으로 표시됨) 
    • Entity 집합의 모든 Entity는 Relationship Sets의 적어도 하나의 Relationship에 참여한다.
    • advisor 관계에서 학생의 참여는 총체적이다.
      • 모든 학생은 연관된 instructor가 있어야 한다.
  • Partial participation
    • 일부 Entity는 Relationship Sets의 어떤 Relationship에도 참여하지 않을 수 있다.
      • 예: advisor 관계에서 instructor의 참여는 부분적이다.

Notation for Expressing More Complex Constraints

  • 선은 최소 및 최대 Cardinality를 가질 수 있으며, l..h 형식으로 표시되며, 여기서 l은 최소값, h는 최대값이다.
    • 최소값이 1이면 총 참여를 나타낸다.
    • 최대값이 1이면 Entity가 최대 하나의 Relationship에 참여함을 나타낸다.
    • 최대값이 *이면 제한이 없음을 나타낸다.

  • instructor는 0명 이상의 학생을 지도할 수 있다.
  • 학생은 1명의 advisor를 가져야 하며, 여러 advisor를 가질 수 없다.

Weak Entity Sets

  • Entity type은 Entity set의 각 Entity를 고유하게 식별하는 키 Attribute를 가져야 한다.
    • 그러나 key attribute를 정의할 수 없는 일부 Entity type이 존재한다 → 이러한 유형을 weak entity type이라고 한다.
    • 충분한 Attribute가 없어 Primary Key를 형성할 수 없는 Entity set을 weak entity sets라고 한다.
    • Primary Key를 가진 Entity set을 strong entity sets라고 한다.
  • Weak entity
    • Weak entities는 Primary Key가 없기 때문에 스스로 식별할 수 없으며, 다른 Entity(소유자 Entity로 알려진)에 의존한다.
      • Weak entities는 소유자 아이덴티티와의 식별 관계에서 총 참여 제약 조건(total participation constraint)을 가진다.
      • Weak entity type은 partial keys를 가진다.
        • Partial keys는 weak entities의 튜플을 구별하고 식별할 수 있는 Attribute 집합이다.
  • Weak entity는 Weak entity의 존재를 보장하기 위해 Strong entity에 의존한다.
    • E-R 다이어그램에서 Weak entity set은 이중 사각형으로 표시된다.
      • Weak entity set의 식별자를 점선으로 밑줄 친다.
      • Weak entity set을 식별하는 Strong entity set과 연결하는 Relationship set은 이중 다이아몬드로 표시된다.
      • Section의 Primary key는 (course_id, sec_id, semester, year)이다.

 

E-R Diagram for a University

 

Extended E-R Features

  • 데이터의 복잡성이 증가함에 따라 기존의 ER 모델을 데이터베이스 모델링에 사용하기가 점점 더 어려워졌다.
  • 따라서 기존 ER 모델에 일부 개선 또는 향상을 추가하여 더 복잡한 애플리케이션을 더 잘 처리할 수 있도록 했다.
  • Enhanced ER 모델의 일환으로, 다른 개선 사항들과 함께 기존 ER 모델에 새로운 개념이 추가되었다.
    • Specialization
    • Generalization
    • Aggregation

Extended E-R Features: Specialization

  • Specialization
    • 하나의 상위 Entity가 두 개의 하위 Entity로 나뉘는 상향식(top-down) 접근법이다.
    • Attribute inheritance(상속): lower-level의 Entity set은 연결된 higher-level의 Entity set의 모든 Attribute와 Relationship participation를 상속받는다.

Extended E-R Features: An Example of Specialization in ER diagram

  • ER 다이어그램에서 Specialization의 예:
    •  

 

Extended E-R Features: Generalization

  • Generalization
    • 동일한 기능을 공유하는 여러 Entity set을 higher-level의 Entity set으로 결합하는 하향식(bottom-up) 접근법이다.
    • Specialization과 Generalization은 서로 단순히 반전한 것이다.

 

Extended E-R Features: Aggregation

  • Aggregation
    • 여러 Entity 간의 Relationship이 단일 Entity로 처리되는 프로세스이다.
    • 예시:
      • Center와 Course 사이의 Relationship은 다른 Entity인 Visitor와 관계를 맺고 있는 Entity로 작동한다.
      • 현실 세계에서 Visitor 또는 Student가 Coaching Center를 방문하면, 단순히 Center나 Course만 묻지 않고 둘 다 묻는다.

  • Aggregation
    • 삼항 관계 proj_guide를 고려한다.
    • 프로젝트에 대한 가이드에 의해 학생의 평가를 기록하려고 한다고 가정

 

  • Aggregation
    • Relationship sets인 eval_for와 proj_guide는 중복 정보를 나타낸다.
      • 모든 eval_for Relationship은 proj_guide Relationship에 해당한다.
      • 그러나 일부 proj_guide Relationship은 eval_for Relationship과 일치하지 않을 수 있다.
        • 따라서 proj_guide Relationship을 삭제할 수 없다.
    • Aggregation을 통해 이 중복을 제거한다.
      • Relationship을 abstract Entity로 처리한다.
      • Relationship 간의 relationships를 허용한다.
      • Relationship의 Abstraction을 새로운 Entity로 만든다.

  • 특정 프로젝트에서 특정 instructor가 학생을 지도한다.
  •  학생, instructor, 프로젝트 조합에는 관련된 평가가 있을 수 있다.

E-R Design Decisions

  • 객체를 나타내기 위해 attribute나 entity set을 사용하는 것
  • strong entity set 또는 weak entity set을 사용하는 것
  • ternary relationship을 사용할지 binary relationship 쌍을 사용할지 결정하는 것
  • specialization/generalization을 사용하는 것
    • 이는 설계에서 modularity를 높이는 데 기여한다.
  • aggregation을 사용하는 것
    • 이는 aggregate entity set을 내부 구조의 세부 사항에 대한 고려 없이 단일 단위로 처리할 수 있다.

Summary of Symbols used in ER Notation

  • E: entity set
  • R: relationship set
  • 이중 사각형: weak entity set을 식별하는 relationship set
  • 이중 선: relationship에 대한 entity set의 전체 참여
  • 밑줄: primary key
  • 점선 밑줄: weak entity set의 구별 attribute

Unified Modeling Language (UML)

  • UML은 범용 모델링 언어이다.
    • UML의 주요 목표는 시스템이 설계된 방식을 시각화하는 표준 방법을 정의하는 것이다.
    • UML에는 전체 소프트웨어 시스템의 다양한 측면을 그래픽으로 모델링하기 위한 많은 구성 요소가 있다.
    • UML은 소프트웨어 엔지니어, 시스템 설계자에게 모델링, 설계 및 분석을 돕는다.
  • UML 클래스 다이어그램은 E-R 다이어그램에 해당하지만 몇 가지 차이점이 있다.

UML Diagrams

  • 클래스 다이어그램
  • 복합 구조 다이어그램
  • 객체 다이어그램
  • 구성 요소 다이어그램
  • 배포 다이어그램
  • 패키지 다이어그램
  • 기타

ER vs. UML Class Diagrams

  •  

'DataBase' 카테고리의 다른 글

[DataBase] 07. Data Storage Structure  (0) 2024.06.25
[DataBase] 06. Physical Storage System  (0) 2024.06.25
[DataBase] 04. Intermediate SQL  (0) 2024.06.15
[DataBase] 03. Introduction to SQL(2)  (0) 2024.06.15
[DataBase] 03. Introduction to SQL(1)  (0) 2024.06.15

+ Recent posts