본문 바로가기
Database/RDS

[DataBase] Intro

by junseokoo 2025. 4. 10.

DataBase는 왜 사용할까?

  • 데이터베이스가 존재하기 이전에는 파일 시스템을 이용해 데이터를 관리하였다. 데이터를 각각의 파일 단위로 저장하며 이러한 일들을 처리하기 위한 독립적인 애플리케이션과 상호 연동이 되어야한다. 이 때의 문제점은 데이터의 중복성,무결성이다.

DataBase의 특징

  • 독립성
    • 물리적
      • 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가해도 관련된 응용 프로그램을 수정할 필요가 없다.
    • 논리적
      • 데이터 베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다.
  • 무결성
    • 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유요성 검사를 통해 데이터의 무결성을 구현
  • 보안성
    • 인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정하여 모든 데이터에 보안을 구현할 수 있다.
  • 일관성
    • 연관된 정보를 논리적인 구조로 관리하여 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터늬 불일치성을 배제할 수 잇다. 또한 작업 중 일 부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다.
  • 중복 최소화
    • 데이터베이스는 데이터를 통합해서 관리하여 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결할 수 있다.

관계형 Database

  • 엑셀처럼 행과 열로 데이터를 저장할 수 있는 DB
  • table이라고 불리는 공간을 하나 생성을 해서 행과 열에 맞춰 데이터를 저장한다.
  • 데이터는 정해진 데이터 스키마에 따라 테이블에 저장한다.
  • 데이터는 관계를 통해 여러 테이블에 분산
  • 대표적으로 MySQL, OracleDB, PostgreSQL, MariaDB 등이 있다.
  • 특징
    • 거의 모든 곳에 사용할 수 있어 범용적
    • 구조화된 데이터를 저장하기 가장 좋다.
    • SQL이라는 언어를 이용해 데이터를 입출력한다.
    • 스키마를 미리 정의하기 때문에 관리하기 쉽다.
    • 구조화된 데이터 덕분에 원하는 데이터를 뽑기도 쉽다.
    • 트랜잭션, 롤백 이런 기능들을 이용해 데이터의 무결성을 보존하기 쉽기 때문에 금융,거래 서비스에 필수이다.

NoSQL 데이터베이스

  • SQL문 없이도 사용할 수 있는 DB
  • 테이블에 국한되지 않고 자유로운 형식으로 데이터를 쉽게 분산,저장할 수 있다.
  • JSON과 비슷한 형태.
  • 관계형 DB처럼 테이블에 나눠 담지않고, 관련 데이터를 동일한 컬렉션에 넣는다.
  • 조인할 필요 없이 이미 필요한 모든 것을 갖춘 문서 작성
  • 종류
    • key-value
      • Object,JSON 자료형 형식으로 데이터를 쉽게 저장,출력 가능
    • Document
      • 테이블 대신 Collection이라는 문서 기반으로 데이터를 분류하고 저장한다. 테이블 보다 훨씬 유연
    • Graph
      • 데이터를 노드의 형태로 저장하고 노드간의 흐름 또는 관계를 지정할 수 있다.
    • Wide-column
      • 한 행마다 각각 다른 수, 다른 종류의 열을 가질 수 있다. (스키마 자유로움)
  • 특징
    • Scaling이 쉽다.
      • 찰나의 순간 대량의 데이터를 저장하려면 관계형 데이터베이스는 확장이 너무 어렵다. 보통 scale up이라는 방법으로 서버의 성능을 키워야 한 다. 하지만 대부분의 NoSQL 데이터베이스는 scale out이라는 방법으로 데이터를 분산저장 하는걸 기본적으로 지원한다. 확장 걱정할거 없이 쉽게 데이터 입출력에만 신경쓸 수 있다. 그래서 대량의 데이터를 빠르게 입출력해야 한다면 NoSQL이 적절하다.
    • 다루기 쉽다.
      • SQL이라는 언어를 새로 배우지 않아도 데이터를 쉽게 입출력할 수 있다. 자바스크립트 object{} 자료형 다루듯이 데이터를 입출력할 수 있으 니 사용자에게 매우 편리하다. 그리고 서버에서 쓰던 프로그래밍 언어로 DB를 다룰 수 있다는 장점이 있다.
    • 대부분 스키마 정의 없이도 쉽게 쓸 수 있다.
      • 장점이자 단점일 수 있다. 그래서 MongoDB에선 스키마를 미리 정의하기 위한 Mongoose같은 라이브러리를 추가해서 사용한다.
    • NoSQL 데이터베이스는 기본적으로 SQL에서의 JOIN 연산을 적용하는게 기본적으로 어렵다.
      • 서버 단에서 JOIN 연산을 쉽게 처리해주는 라이브러리를 이용한다.

관계형 vs NoSQL

  • 관계형 데이터베이스
    • 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션일 경우 적합.
    • NoSQL에서는 여러 컬렌션을 모두 수정해야하기 떄문에 비효율 적이다.
  • NoSQL
    • 정확한 데이터 구조를 알 수 없거나 변경,확장될 수 있는 경우
    • 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
    • 데이터베이스를 수평으로 확장해야하는 경우 (막대한 양의 데이터를 다루는 경우)

 

'Database > RDS' 카테고리의 다른 글

[DataBase] Index  (0) 2025.04.10