Database

본 글은 네이버 부스트캠프 과정을 위해 작성한 내용을 수정한 게시글입니다.


Data, Database, and DBMS

  • Data : 하나 이상의 연속된 기호의 집합
  • Database : 컴퓨터 시스템에 전기적으로 저장된 데이터의 집합
  • DBMS(Database Management System) : DB를 관리하는 소프트웨어

Data, Information, and Knowledge

Untitled

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

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, 모바일 앱 개발시 백엔드 서버 대체 용으로 사용 가능

검색엔진

  • 비교적 쉽게 사용할 수 있는 전문(full text) 검색엔진으로, 활용도가 높음

ETC

Hadoop Eco System

  • HBASE, Spark 등 다양한 응용에 널리 사용되고 있다.

Kafka

  • https://kafka.apache.org/
  • 높은 분산 처리 능력과 가용성 등으로 인기를 얻고 있는 이벤트 스트리밍 처리 플랫폼
  • 메시지 큐 등으로 많이 활용하고 있다.