<궁금한 IT>- 03. 데이터베이스
●데이터베이스란?
- '연관'된 데이터의 '집합체'로 나름의 약속, 정의된 '구조'를 가지고
- 여러 명의 사용자나 응용프로그램과 '공유'되고
- '동시'에 접근이 가능해야 하고, 검색과 갱신이 쉽도록 통합되어 관리되어야 한다.
- 이를 위해, 대용량의 데이터를 다루어야 하는 기업에서는 DBMS라는 별도의 소프트웨어를 사용한다.
●DBMS(DataBase Management System): 데이터베이스를 관리하고 운영하는 소프트웨어 시스템
→ DBMS의 핵심 역할은 데이터를 일관성 있게 정확하고 정교하게 관리하는 것
→ 트랜잭션(transaction): 여러 개의 관련 수정 작업이 하나의 작업처럼 전부 덩어리로 처리되거나 아예 전부 처리가 안 되도록 All or Nothing으로 처리되게 하는 것 ex. 계좌이체: 하나의 계좌에서 인출과 다른 계좌로의 입금이 동시에 하나의 작업으로 이루어져야 함. 둘 중 하나라도 실패할 시 전체가 실패.
*오라클: 다중 버전 읽기 일관성 모델이라는 독특한 메커니즘을 사용한다. 트랜잭션이 시작된 이후 변경 반영된 데이터를 읽지 않는다는 원칙을 지키려면 변경 반영 전의 데이터를 정확히 찾을 수 있어야 하며, 다중 버전 읽기 일관성 모델은 이를 추적 및 관리하기 위한 정교한 메커니즘. 다중 버전 읽기 일관성 모델에서 관리하는 변경 내역 히스토리 데이터를 스냅숏 데이터라고 부른다.
데이터 '공유' ▶ 동시성 ▶ 일관성 제어 ▶ 데이터베이스의 핵심 기술
●관계형 DBMS: 데이터를 행과 열로 구성된 '테이블'에 관리하고 다루는 시스템. 여기서 말하는 '관계' 는 관련성이나 연결의 의미가 아니라, '테이블'을 의미하는 수학적 표현!
*비관계형 DBMS: 대표적인 것은 그래프 DBMS, 테이블 중심의 관계형과 달리 데이터를 무엇과 무엇의 관계 중심으로 표현
관계형 데이터베이스 → 중복을 최소화하면서 관련 정보만을 테이블이라는 단위로 응집하고 집약해서 관리
*연속적이지 않은 블록: 컴퓨터가 파일을 저장하고 갱신할 때 연속적이지 않은 블록 구조를 사용하는 이유는 연속적인 구조보다 파일 쓰기 작업에 효율적이기 때문. 디스크에 데이터를 쓰는 작업은 컴퓨터 시스템 내에서 가장 시간을 많이 소모하는 환경이라서 컴퓨터는 비연속적인 블록 쓰기를 통해 파일 저장 시 시간을 최소화하고 최적화.
*SQL: 관계형 데이터베이스에 데이터를 입력하거나 수정하는 등의 처리를 위해 데이터베이스의 관리자인 DBMS에 이를 요청하는 데 사용하는 커뮤니케이션 언어
*NoSQL: Not- Only SQL. 비관계형 데이터베이스. 그래프, 문서, 키-값 등