Skip to main content

Relational Databases

데이터베이스

RDB

데이터 저장 (Storage)

  • SQL을 사용하여 데이터를 테이블에 저장

스키마 (Schema)

  • 고정된 형식의 스키마 데이터 속성별로 열(column)에 대한 정보를 미리 정해두어야 함
  • 스키마를 수정하려면 데이터베이스 전체를 수정하거나 down-time이 필요

쿼리 (Querying)

  • 테이블의 형식, 테이블 간의 관계에 맞춰서 SQL과 같이 구조화된 쿼리 언어로 요청

확장성 (Scalability)

  • 수직적 확장
  • 높은 메모리, CPU 사용
  • 상대적 고비용
  • 여러 서버에 걸쳐서 구성하기 복잡함

사용 분야

  • ACID 성질을 준수해야 하는 경우 (e.g. 전자상거래 등 금융서비스)
  • 사용되는 데이터가 구조적이고 일관적인 경우

NoSQL

데이터 저장 (Storage)

  • Key-value, document, wide-column, graph 등의 방식으로 저장

스키마 (Schema)

  • 동적으로 스키마의 형태를 관리 행을 추가할 때 새로운 열을 추가할 수 있고 개별 속성에 대해서 모든 열에 대한 데이터를 반드시 입력할 필요가 없음

쿼리 (Querying)

  • 데이터 그룹 자체를 조회
  • 구조화되지 않은 쿼리 언어로도 요청 가능

확장성 (Scalability)

  • 수평적 확장
  • 클라우드 서비스, 범용 하드웨어 사용
  • 상대적 저비용
  • 여러 서버에 걸쳐서 구성이 가능

사용 분야

  • 구조가 거의 또는 전혀 없는 대용량 데이터를 저장하는 경우
  • 클라우드 컴퓨팅, 스토리지를 활용하는 경우
  • 데이터 구조를 자주 업데이트하는 경우

SQL

SQL syntax

분류

ACID

데이터베이스 내에서 트랜잭션(transaction)의 안전성을 보장하기 위해 필요한 성질들

  • Atomicity
  • Consistency
  • Isolation
  • Durability

Further Reading

데이터베이스 정규화 (Database normalization)

  • Data redundancy를 줄이고 data integrity를 강화시키도록 데이터베이스를 설계
  • 데이터를 변경시키는 경우 발생할 수 있는 anomaly를 방지

MySQL

MySQL on Mac

# 설치
brew install mysql

# 서비스 시작
brew services start mysql

# 접속 (로컬)
mysql -u root

References

MySQL documentation