개발/백앤드

# [백엔드] 데이터베이스 정리

ForrestPark 2025. 1. 3. 09:18

백엔드에 사용되는 데이터 베이스에 대해서 알아보자.


🤔 데이터베이스란?

데이터베이스는 검색과 축적이 쉽도록 정리된 데이터 모음 혹은 그것을 가능하게 하는 소프트웨어이다.

  • 메모리, 텍스트파일, 엑셀, 특정프로토콜을 통해 생성한 바이너리 파일 등의 데이터를 검색, 수정삭제, 읽기 요청이 동시 다발적 처리와 응답이 가능해야 함.
  • 데이터 저장 시 수많은 문제 가 생기는 상황에서도 데이터를 안전하게 CRUD 가능하도록 하는 소프트웨어.
  • Oracle, MySQL(무료), MariaDB, SQL Server, PostgreSQL, SQLite, MongoDB, Cassandra, DynamoDB, Neo4 j, CockroachDB, 알티베이스(국산), 큐브리드(국산), 티베로(국산)

💁‍♂️ 데이터베이스는 RDB와 NoSQL로 분류됩니다.

1) RDB(Relational Database) : 관계형 데이터 베이스.(row, column으로 이루어진 테이블 형태, primary key로 레코드 식별, 테이블 간 관계 생성)

  • ACID : (Atomicity-원자성, Consistency-일관성, Isolation-격리성, Durability-내구성)
    • 원자성 : 트랜젝션을 구성하는 명령이 하나의 묶음으로 처리되어 함께 성공, 실패됨을 보장하는 기법.
    • 일관성 : 트랜젝션에서 실행된 변경 사항이 데이터베이스의 무결성 조건을 만족시킴.
    • 격리성 : 두 개의 트랜젝션이 서로에게 영향을 미칠 수 없는 성질
    • 내구성 : 트랜젝션 성공 시 그 결과가 계속 유지되며 문제발생 시 이전의 상태로 되돌릴 수 있음.
  • SQL ( Structured Query Language): 데이터 탐색용 프로그램언어, ANSI 표준이 있음.
  • RDB는 CRUD 용이하나 성능 올리는 게 쉽지 않음. 머신성능 스케일업 또는 머신 분리하는 스케일 아웃 필요
  • 스케일 업은 비용이 들고 스케일아웃은 트랜젝션 사용 시 성능 저하 일으킴.

2) NoSQL(Not Only SQL) : 비관계형 + 분산데이터베이스를 가정한 키-벨류 형태 DB

  • 데이터 규모가 커지면 키 벨류캐시, 키밸류 스토어, 도큐먼트 스토어, 와이드 칼럼 스토어 사용.
  • 키밸류 캐시 :
    Memcached, Redis가 많이 사용됨
    클러스터를 쉽게 지원하여 분산환경에서 편하게 사용가능. 캐시는 서버 재시작 시 데이터 휘발.
    • Memecached: 키 밸류 형태의 데이터만 제공.(멀티 스레드)
    • Redis : 다양한 데이터 구조 지원, 싱글 스레드(오래 걸리는 작업 시 서버 정지)
  • 키 벨류 스토어
    다이나모디비, 카우치베이스(Courchbase)가 많이 사용됨, 데이터비휘발, 업데이트 자주 일어날 때 사용.
  • 도큐먼트 스토어
    몽고디비 많이 사용.
    • Json과 매우 비슷한 BSON 문서 모델 저장.
      JSON(JavaScript Object Notation): 데이터 저장 및 전송 시 사용하는 경량 데이터 표현 방식, JS 객체 형식 기반
    • 테이블 개념인 컬랙션이라는 개념. 검색 시 인덱스사용, ACID 트랜젝션 지원 등 RDB에서 사용했던 기능 사용 가능
  • 와이드 칼럼 스토어
    행과 열 테이블 사용, RDB와 차이점은 행마다 열의 이름과 타입이 다를 수 있다는 점.
    • 2차원 키 벨류 저장소로 사용가능.
    • 구글 Bigtable
    • 아파치 카산드라(단일장애점, single point of failure, SPOF) 이 없음. 확장성, 성능 뛰어남.

📌 참고 1. 도서, Node.js백엔드 개발자 되기