DB, Database
RDB
- Relation Database
- 테이블(표) 형태로 데이터를 저장한다.
- ACID Transaction 지원
- Atomic : 원자성, 모두 실행하거나 모두 실행되지 않는다.
- Consistency : 일관성, 트랜잭션을 기준으로 상태가 일정해야한다.
- Isolation : 독립성, 트랜잭션은 독립적으로 실행된다.
- Durabilitiy : 영속성, 트랜잭션 결과는 영구적으로 저장되어야한다.
- 데이터가 너무 많아지면 조회하는데 시간이 너무 많이 걸리게 된다.
- 금융이나 재고처럼 트랜잭션의 안정성이 매우 중요할 때 활용
- 종류 : MySQL, PostgreSQL, Oracle Database
Columnar Database
- 빅데이터 분석용
- 데이터를 열 단위로 저장하고 처리하는 데이터 베이스
- 쿼리를 통해 처리하는 속도가 빠르고, 하드디스크 스토리지에 데이터를 효과적으로 읽고 쓸 수 있다.
- 대량의 데이터를 분석이나 데이터 웨어하우스 작업, 머신러닝을 위해 데이터 셋을 읽고 쓸 때 유용.
- 데이터 수정에는 비효율적
- 대규모 로그나 분석 같은 통계성 작업을 빠르게 처리해야할 때 활용
- 종류 : Amazon Redshift, ClickHous
Document Datbase
- 문서 형태의 데이터베이스
- JSON과 같은 형태를 그대로 저장한다.
- 필드 하나하나도 조회할 수 있다.
- 정보가 다른 각각의 다양한 속성을 관리하는데 용이하다.
- 상품의 속성이 각기 다를 때 활용
- 종류 : MongoDB
Graph DataBase
- Node와 Edge의 개념으로 데이터 관계를 저장한다.
- 페이스북의 친구 추천 시스템이 대표적
- RDB의 조인과 비슷한 기능이지만 Graph Database가 훨씬 직관적임.
- 소셜 관계나 추천 시스템처럼 복잡한 관계에서 연결 고리를 찾아야할 때 사용
- 종류 :ArangoDB,Neo4j
Vector Database
- 다양한 형태의 데이터를 임베딩 형태의 숫자로 변환하여 저장하는 방법
- 넷플릭스의 경우 사용자 시청이력을 벡터 형태로 저장하여 개인 콘텐츠 추천 시스템에 사용.
- 벡터간의 거리를 계산하여 비슷한 데이터를 찾아서 추천하는 원리
- AI, ML에서는 비슷한 단어를 찾는데에도 사용
- LLM과 RAG 등에 사용
- AI나 ML 모델을 쓰고 있을 떄 사용
- 종류 : pinecone, milvus, weaviate
Key-Value Database
- Key-Value 형태로 데이터를 저장
- X의 경우 타임라인과 세션을 Redis를 활용하여 사용.
- 아마존은 쇼핑카트 정보를 DynamoDB에 저장하여 사용.
- 대규모의 트랜잭션에도 활용 가능
- 구조가 단순하여 캐싱이나 세션 관리에서 자주 사용.
- 세션이나 캐싱처럼 단순 조회가 중요할 때 활용
- 종류 : Memcached, Redis, etcd
Time-series Database
- 시계열(time-stamped) 데이터를 처리하기 위해 최적화된 데이터베이스
- 시간과 관련된 데이터들을 저장해서 활용하는데 사용하는 데이터베이스(..같음)
- 시간대별로 쌓이는 로그나 센서 데이터에 활용
참고