[DB] RDB vs. NoSQL

yeajinlee·2022년 7월 19일
0
post-thumbnail

🖇️ RDB

  • 정의된 관계로 데이터를 저장하고 구성하는 데이터베이스 유형
  • 테이블로 이루어져 있으며, 테이블은 키와 값을 가짐
  • 열(column): 필드, 속성
  • 행(row): 튜플, 레코드(각 속성에 대한 값)

SQL

  • Structured Query Language
  • 관계형 데이터베이스에 접근하는 데 사용되는 기본 인터페이스

데이터의 무결성

  • 기본 키, 외래 키, Not Null, Unique 등의 제약조건으로 데이터의 전체적인 완전성, 정확성 및 일관성이 보장된다

트랜잭션

  • 하나의 논리적 기능을 수행하기 위한 일련의 작업 단위 (그 단위를 실행시키는 하나 이상의 SQL문)

ACID 속성

  • 트랜잭션을 정의하는 네 가지 중요한 속성
  1. 원자성(Atomicity): 트랜잭션이 모두 성공적으로 실행되거나 / 트랜잭션의 일부가 실행에 실패했을 때 전체 트랜잭션이 무효화되어야 한다
  2. 일관성(Consistency): 데이터 무결성을 위해 데이터베이스에 작성된 데이터가 모든 정의된 규칙 및 제한 사항(제약조건, 캐스케이드, 트리거 등)을 준수해야 한다
  3. 고립성(Isolation): 트랜잭션이 커밋될 때까지 효과가 보이지 않도록 한다
  4. 내구성(Durabiltiy): 트랜잭션이 성공적으로 완료된 상태에서 데이터베이스에 대한 변경 사항이 영구적이어야 한다

📋 NoSQL

  • 비관계형 데이터베이스
  • non SQL or not only SQL
  • 표 형식이 아니며, 관계형 데이터베이스와 다른 방식으로 데이터 저장
  • 엄청난 양의 비정형 데이터를 저장할 수 있고, 유연한 스키마를 제공
  • 대량의 데이터와 높은 사용자 부하에도 손쉽게 확장 가능

유형

Document Database

  • JSON, BSON, XML 같은 문서에 데이터 저장
  • 필드와 값의 쌍으로 표현
  • 대량의 데이터를 수용하도록 수평 스케일아웃 가능
  • MongoDB

Key-Value Database

  • 각 항목에 키와 값이 포함되어 있음
  • 대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없을 때 적합 ex) 사용자 선호도 저장, 캐싱
  • Redis, DynanoDB

Wide-Column Databse

  • 테이블, 행, 동적 열에 데이터 저장
  • 각 행이 동일한 열을 가질 필요가 없다 → 관계형보다 뛰어난 유연성 제공
  • 대량의 데이터 저장에 적합 ex) 사물인터넷 데이터, 사용자 프로필 데이터
  • Cassandra, HBase

Graph Database

  • 노드와 엣지로 데이터 저장
  • 노드: 일반적으로 사람, 장소 및 사물에 대한 정보
  • 엣지: 노드 간의 관계에 대한 정보
  • Neo4j, JanusGraph

❓ 사실 진짜 궁금했던 것은

❓ RDB 배울때는 디비에서 많은 데이터를 가져오고 가공해서 보여주는 것보다 필요한만큼만 가져오는게 좋다고 배웠다. 어딘가에서 select * 절대 하지말라는 글도 봤었다. 그런데 nosql을 배우면서는 디비에서 많이 가져오고 가공해서 보여주는게 더 좋다는 말을 들었다. 둘의 특징이 달라서 데이터를 가져오고 보여주는 방법에 차이가 생기는걸까?
❓ 이전에 프로젝트를 할 때도 리액트단에서 액시오스 남발했다가 서버 올렸을때 엄청 버벅였었는데 관련이 있는걸까?

// 작성 중



참고

profile
백엔드 개발자 지망생

0개의 댓글