CS
DB구조와 유형
index.ys
2023. 7. 2. 20:24
데이터베이스
- 데이터들의 집함, 대규모 저장소
- 여러사용자들에 의해 동시에 사용됨 ( 동시성 제어 )
- 중복을 최소회 하면서 통합됨
- 프로그램과 데이터간의 독립성이 제공 => 메모리가 아닌 보조기억장치에 저장됨
- 쿼리를 사용하여 필요한 데이터만 조회가능
- 체계적으로 구성된 도서관
- 원자성 일관성 무결성 안전성 보장
ACID
- 원자성 ( Atomicity ) : 원자성은 트랜잭션이 전체적으로 원자적인 작업 단위로 동작한다는 것을 보장합니다. 즉, 트랜잭션은 모든 연산이 성공적으로 수행되거나 전혀 수행되지 않는 것을 의미합니다. 트랜잭션 내의 연산 중 하나라도 실패하면, 트랜잭션은 롤백되어 이전 상태로 복원됩니다.
- 일관성 ( Consistency) : 일관성은 트랜잭션이 데이터베이스의 일관된 상태를 유지해야 함을 의미합니다. 트랜잭션 전후에 데이터베이스의 무결성 규칙을 만족하도록 보장되어야 합니다. 즉, 트랜잭션 수행 전후에 데이터베이스가 일관된 상태를 유지해야 합니다.
- 고립성 ( Isolation ) : 고립성은 동시에 실행되는 여러 트랜잭션들이 서로에게 영향을 미치지 않고 독립적으로 실행되어야 함을 의미합니다. 하나의 트랜잭션이 다른 트랜잭션의 연산 결과를 볼 수 없고, 서로 간섭하지 않도록 보장해야 합니다. 이를 통해 데이터의 일관성과 정확성을 유지할 수 있습니다.
- 지속성 ( Durability ) : 지속성은 트랜잭션이 성공적으로 완료되면 그 결과가 영구적으로 저장되어야 함을 의미합니다. 즉, 데이터베이스 시스템의 장애나 시스템 재부팅과 같은 예기치 않은 상황이 발생해도 트랜잭션의 결과는 유지되어야 합니다. 이를 위해 트랜잭션의 변경 사항은 로그 또는 디스크에 안전하게 저장되어야 합니다.
무결성
- 개체 무결성 : 프라이머리 키의중복, 데이터의중복을 방지하고, 데이터의 신뢰성을 유지할 수 있습니다.
- 참조 무결성 : 데이터베이스에서 정의된 관계를 준수하여 데이터의 일관성을 유지합니다.
- 도메인 무결성 : 도메인 무결성은 데이터의 유효성을 보장합니다. 예를 들어, 나이 열에 숫자 값이 저장되어야 하고, 이메일 열에는 유효한 이메일 주소가 저장되어야 합니다.
안전성
- DBMS의 내구성과 장애복구 기능을 의미함
- DB장애등에 의해 다운타임이 발생해도 데이터의 안전한 보호와 복구가 가능해야함
- 트랜잭션 내구성 : 트랜잭션이 성공적으로 완료된 후에도 트랜잭션의 결과가 영구적으로 저장되는 것을 의미합니다. 데이터베이스 시스템은 트랜잭션의 변경 사항을 안전하게 디스크에 기록하여 장애 발생 시에도 데이터의 지속성을 보장해야 합니다.
- 장애 복구 : 시스템 충돌, 전원 손실 또는 디스크 장애 등의 상황에서도 데이터베이스 시스템은 로그 파일 등의 백업 메커니즘을 활용하여 데이터의 일관성과 무결성을 복구
*snapshot : DB에 상태를 로그파일로 저장하여 손실된 데이터 복구시 사용
데이터베이스 시스템
- 스키마 : 전체적인 데이터베이스 구조, 데이터베이스의 상태 정의
- 데이터 베이스 상태 : 특정 시점의 데이터 베이스의 상태, 시간에 따라 변화, CRUD가 일어날때 마다 상태가 변함
DBMS ( Data Base Manage System)
- 응용프로그램이 데이터를 조작할 수 있는 시스템 ex) MySQL, Postgre SQL, MongDB , Maria DB
- SQL을 사용하여 여러 DBMS 조작 가능
- 중복성 데이터 불일치 개선
- 표준화
- 개발유지 비용감소
- 보안 향상
- 무결성 향상
하드웨어
- 데이터베이스는 보조기억 장치에 저장됨
- 계산이나 조합, 비교연산등 수행 => cpu사용
- DBMS도 프로그램으로써 메모리에 적재되어 실행됨
DBMS 요구사항
- 데이터 독립성
- 효율적인 데이터 접근
- 데이터에 대한 동시접근
- 백업과 회복
- 중복제거, 일관성유지
- 데이터 무결성 (데이터 중복을 방지하고 일관성 유지)
- 데이터 보완
- 복구보장
- 쉬운 쿼리
- 구축비용이 비쌈
- 공유와 동시접근
파일시스템 ( Fs: File System)
- DBMS생성 이전에 데이터를 관리하던 시스템 => 파일 시스템
- 파일을 보관하고 정리하는 큰 창고
- 폴더 ,파일로 구성
- 데이터 불일치 발생 가능
- 동시성 제어 x
- 손실된 데이터 복구 x
- 유지보수 비용이 큼
DBMS언어
데이터 정의어 ( DDL : Data Definition Language)
- 데이터 정의어를 사용하여 DB스키마 정의
- ex) CREATE TABLE , ALTER TABLE, DROP TABLE
데이터 조작어 ( DML : Data Manipulation Language)
- 데이터베이스 내의 데이터를 조작하는 명령어
- SUM , COUNT ,AVG 같은 내장함수 보유
- ex) SELECT, DELETE , UPDATE, INSERT
데이터 제어어 ( DCL : Data Control Language)
- 데이터 제어어를 사용하여 데이터베이스 트랜잭션을 명시하고 권한을 부여하거나 취소
데이터베이스 유형
SQL
- 모든 데이터를 논리적으로 구성
- 개념이 단순한 데이터 모델
- 쿼리를 이용해 데이터 접근 제공
- 집합위주 처리
도메인
- 한 속성에 나타날수 있는 값들의 집함 ex) float, char(10) ,varchar(255), INTEGER
- 프로그래밍 언어의 데이터 타입과 유사함
NoSQL (Not Only SQL)
- SQL뿐만 아니라 여러 장점을 가지고 있다는 소리
- 관계형 DB보다 융통성 있고 확장성 있는 데이터 모델
- 데이터 저장 , 검색에 특화됨
- Mongo DB, Redis
- key-value 형식 지원 Redis
- PK, FK ,JOIN 등 관계 정의 X
종류
- 문서형 데이터베이스
- key-value 타입
- Wide-Column Store 데이터베이스
- 그래프 데이터베이스
장단점
- 대용량데이터 처리에 효율적
- 읽기작업보다 쓰기작업이 빠름 RDB보다 R/W작업의 성능이 빠름
- 모델링이 유연함
- 뛰어난 확장성 -> 검색에 유리
- 복잡한 데이터 구조 표현가능
- 데이터 파싱 필요 -> 큰 크기의 document처리시 성능저하
SQL vs NoSQL
SQL 사용하는 경우
- ACID성질을 준수해야 하는 경우 -> 결제시스템
- 데이터처리시 예외상황을 줄이고 데이터베이스의 무결성 보장
- 소프트웨어가 일관된 데이터를 사용하는 경우
NoSQL 사용하는 경우
- 데이터구조가 없는 대용량 데이터를 저장하는 경우
- 클라우트 컴퓨팅 및 저장공간을 활용하는 경우
- 클라우드 기반 -> 저렴한 비용
- 많은 양의 데이터를 처리하는 경우
- 데이터 구조를 자주 업데이트 하는경우
- 스키마를 미리 준비할 필요 x => 빠른 개발에 유리
- 다운타임 없이 데이터구조를 자주 업데이트 해야하는 경우 => 스키마 수정 필요 x