RDBMS
MySQL, PostgreSQL, Oracle, ...
특징
1. 데이터를 테이블 형태로 관리하고 데이터 간의 관계가 있음
2. 데이터의 일관성과 무결성을 보장하기 위해 ACID(원자성, 일관성, 고립성, 지속성)을 가지고 있음
MySQL vs PostgreSQL
1. 데이터 타입
PostgreSQL이 더 많은 데이터 타입을 지원함 ex) 배열(ARRAY), 네트워크 주소(INET, CIDR), JSON, XML 등
2. 데이터 처리
MySQL은 빠르고 간단한 설치와 설정이 가능하며, 대규모 트랜잭션 처리에 적합하다. 반면, PostgreSQL은 데이터 무결성을 중시하며, 대규모 데이터베이스 처리, 복잡한 쿼리 및 고급 기능이 필요한 경우 적합하다.
3. 인덱스
PostgreSQL : B-tree, Hash, GiST, SP-GiST, GIN, BRIN
MySQL : B-tree, Hash, R-tree, Inverted-Indexes
복잡한 쿼리 및 대규모 데이터베이스를 다룰 수 있는 기능이 풍부한 데이터베이스가 필요? -> PostgreSQL
설치와 관리가 비교적 쉽고, 빠르고, 안정적이며 사용이 간단한 데이터베이스 -> MySQL
NoSQL
, Redis,, Neo4j, Cassandra, HBase, Amazon DynamoDB, ...
특징
1. key-value, graph, column, document 다양한 형태로 데이터를 관리
2. 수평적 확장을 용이하게 하기 위해 분산 시스템 구조를 가지며 대규모 데이터 처리에 적합
3. ACID 지원 하지 않음(일부 NoSQL은 지원함), 일관성이나 무결성에 대한 보장이 상대적으로 약함
종류
1. key-value store
데이터를 key- value 쌍으로 관리
예시 : 캐시, 세션 저장소, 사용자 프로필 및 인증데이터 등 간단한 데이터에 대한 높은 읽기/쓰기 처리량이 필요한 경우 사용
- Redis, Amazon DynamoDB
2. graph store
데이터(Entity)가 저장되어 있는 Node와 데이터 개체 간의 관계를 나타내는 Edge로 구성된 그래프 형태로 데이터를 관리
RDB보다 복잡한 쿼리 작성(다량의 테이블 조인)에 유리함
ACID 지원
예시 : 소셜 네트워크, 추천 시스템, 트래픽 분석, 지리 공간 데이터, 생물학 및 네트워크 보안 분야에서 사용
- Neo4j
3. column store
데이터를 로우 대신 컬럼 기반으로 저장하므로 특정 컬럼에 대한 집계 작업이 빠름, 2차원 key-value 스토어 라고 불림
대규모 데이터 처리에 적합
예시 : 데이터 분석 및 데이터 웨어하우징(기업 내부의 다양한 소스에서 추출한 데이터를 한 곳에 집계하고 저장하여, 의사 결정 지원 시스템에서 활용할 수 있도록 하는 기술)
- Cassandra, HBase
4. document store
JSON 또는 BSON과 같은 문서 형식으로 데이터를 저장하며, 데이터 구조가 유연하므로 스키마 변경이 간단
예시 : 사용자 프로필, 제품 카탈로그, 블로그 게시물 등과 같은 복잡한 데이터 구조에 적합
- MongoDB, CouchDB
'CS > Database' 카테고리의 다른 글
(mac)H2database - 'Console 응용 프로그램이 예기치 않게 종료되었습니다' 에러 (1) | 2023.12.10 |
---|---|
(mac) mysql 도커 컨테이너 생성 + cli 접속 (0) | 2023.03.16 |