데이터베이스
- 체계화된 데이터의 모임.
- 효율적인 데이터 저장/검색/수정/삭제 등을 지원하며 동시에 여러 사용자가 접근할 수 있음.
데이터베이스 시스템
- DB를 관리/조작하는 데 사용되는 소프트웨어.
- 데이터의 구조화/저장/검색/수정/삭제 등을 효율적으로 수행할 수 있도록 지원함.
주요 구성 요소
- 데이터베이스 관리 시스템(DBMS)
- DB를 관리하는 소프트웨어.
- 데이터의 구조, 구성, 접근 권한, 무결성 등을 관리.
- DB에 대한 작업을 수행할 수 있는 인터페이스 제공.
- 예) Oracle, MySQL, PostgreSQL
- 데이터베이스
- 체계화된 데이터의 집합.
DBMS에 의해 관리/조작됨.
- 테이블(==릴레이션), 레코드(==튜플,로우), 필드(속성,컬럼) 등의 구조로 구성됨.
- 데이터의 지속성 및 일관성 보장, 동시 접근 보장
- 데이터 모델
- 데이터의 구조와 관계의 표현방법 정의.
- 개념적인 데이터 구조를 추상화하여 표현함.
- 주요 데이터 모델: 관계형 데이터 모델, 객체지향 데이터 모델, 계층형 데이터 모델, 네트워크 데이터 모델.
DBMS 언어 3종류
- 데이터 정의어 (Data Definition Language)
- 데이터베이스 스키마 정의
- 데이터 구조 생성(create table)/수정(alter table)/삭제(drop table), 특정 애트리뷰트 위에 인덱스 정의 (create index)
- 데이터 조작어 (Data Manipulation Language)
- 데이터 조회/변경/삽입/삭제
- select, update, insert, delete
- 데이터 제어어 (Data Control Language)
데이터베이스 유형
관계형 데이터베이스
- 데이터를 테이블 형태로 구성.
- 테이블 간의 관계를 설정하여 데이터 저장/관리/조회.
특징
- 테이블
- 데이터가 저장되는 곳.
- 행(레코드)과 열(필드)로 구성.
- 관계
- 테이블 간의 관계 설정. 데이터의 무결성/일관성 유지 가능.
- One-to-One, One-to-Many, Many-to-Many.
- 기본 키
- 외래 키
- 다른 테이블과의 관계를 나타내는 필드.
- 다른 테이블의 기본 키와 매칭되어 데이터 무결성과 관계를 유지하는 데 사용됨.
NoSQL 데이터베이스
Not Only SQL.
- 대량의 분산 데이터 처리
- 확장성, 성능, 유연성
특징
- 비구조적 모델
- 테이블 x / 스키마 x. but 다양한 데이터 모델을 사용하여 데이터 저장. (예: key-value, graph db, document db 등)
- 수평적 확장성
- 대규모 데이터 처리에 용이
- 데이터베이스 클러스터를 구성하고 데이터를 분산하여 처리함으로써 처리량을 증가시킬 수 있음.
- 유연한 스키마
- 데이터를 저장할 때 사전에 스키마 정의 필요 x
- 필요에 따라 동적으로 데이터 구조 변경 가능
- 빠른 읽기/쓰기
- 분산 아키텍처, 메모리 기반 데이터 저장 등의 기술 덕분에 성능 개선
주요 유형
- Key-value store: 데이터가 키-값 쌍으로 저장됨.
- 컬럼 패밀리: 테이블과 유사한 구조. 각 컬럼은 행 단위로 저장됨.
- 문서 데이터베이스: JSON, XML 등의 문서 형태의 데이터 저장.
- 그래프 데이터베이스: 노드와 엣지로 구성된 그래프 형태의 데이터 저장. 관계 쿼리 효율적.
RD vs. NoSQL?
RD
장점
- 데이터의 일관성 보장 / ACID 트랜잭션을 지원하여 데이터의안정성 유지 가능
- 데이터 간의 관계의 명확한 정의/관리 가능 / 복잡한 쿼리 수행 가능
- 정형화된 데이터에 적합 / 정교한 데이터 구조 다루는데 유용
단점
- 수직적 확장에 제약 -> 대규모 데이터 처리의 한계
- 번거로운 스키마 변경 -> 유연성 부족
- 대량의 데이터 / 유연한 데이터 모델 필요한 경우 -> 성능 저하
NoSQL
장점
- 수평적 확장 용이 -> 대규모 데이터 처리에 적합.
- 유연한 스키마 -> 동적 데이터 구조에 대응 용이.
- 빠른 읽기/쓰기 -> 효과적인 분산 데이터 처리.
- 다양한 데이터 모델 제공 -> 다양한 유형의 데이터 처리.
단점
- 데이터 일관성이 상대적으로 낮음 -> 일관성보다는 가용성과 성능에 초점 (BASE 원칙)
- 데이터 간의 관계 명시 x -> 복잡한 쿼리 작업 어려움
- NoSQL DB 간의 표준화된 쿼리 언어 x -> 벤더마다 쿼리 언어 다름