Database
in Database
본 글은 네이버 부스트캠프 과정을 위해 작성한 내용을 수정한 게시글입니다.
Data, Database, and DBMS
- Data : 하나 이상의 연속된 기호의 집합
- Database : 컴퓨터 시스템에 전기적으로 저장된 데이터의 집합
- DBMS(Database Management System) : DB를 관리하는 소프트웨어
Data, Information, and Knowledge
RDBMS
- Relation Database Management System
- 관계형 모델을 기반으로 한 데이터베이스 관리 소프트웨어
- 관계형 모델 : E.F. Codd, “A Relational Model of Data for Large Shared Data Banks” 에 의해 제안됨
- 세계 최초의 RDBMS: IBM System R, Berkeley Postgres
SQL
- Structured Query Language
- 선언적 언어 cf. 절차적 언어
- RDBMS 제어에 사용되고 있다.
관계형 데이터베이스
- 오라클, MySQL, MS-SQL, PostgreSQL, …
- 트랜잭션 지원
- 백엔드 서버에서 영구적인 데이터를 보존하기 위해 가장 많이 사용되고 있다.
- https://db-engines.com/en/ranking
NOSQL
- Not Only SQL
- 관계형 데이터베이스가 아닌 다른 종류의 데이터베이스
- 그래프 디비, 도큐먼트 디비, KV Store
- MongoDB, Redis, DyanmoDB, neo4j, Casandra, HBASE, …
데이터베이스 관련 용어
CAP
- Consistency, Availability, Partition Tolerence
ACID
- Atomicity, Consistency, Isolation, Durability
확장성
- 수평 확장 VS 수직 확장
Graph DB
Neo4j
- https://neo4j.com/why-graph-databases/
- 복잡한 관계 처리 지원
- 친구 추천 알고리즘, SNS 등에 적합하다.
Document DB
MongoDB
- https://www.mongodb.com/
- Json (Bson) 기반의 Document DB
- 비교적 빠르고 사용이 간단함
- 다만, 조인에 부적합하다는 단점이 있음
- RDBMS처럼 사용할 경우 성능문제를 야기할 수 있으므로 주의가 필요함
Key-Value Store
Redis, Mem-cached
- 매우 빠름
- 단순 데이터 처리 및 캐싱, 분산 DB 등에 적합
Cloud DB
AWS DyanmoDB
- KV Store + Document Store
- 설치가 필요없음
- 고성능, 고가용성, 내구도
- 저렴하지 않은 비용
Google Firebase
- SPA, 모바일 앱 개발시 백엔드 서버 대체 용으로 사용 가능
검색엔진
Elastic Search
- 비교적 쉽게 사용할 수 있는 전문(full text) 검색엔진으로, 활용도가 높음
ETC
Hadoop Eco System
- HBASE, Spark 등 다양한 응용에 널리 사용되고 있다.
Kafka
- https://kafka.apache.org/
- 높은 분산 처리 능력과 가용성 등으로 인기를 얻고 있는 이벤트 스트리밍 처리 플랫폼
- 메시지 큐 등으로 많이 활용하고 있다.