본문 바로가기
Database/ETC

데이터베이스 / DBMS의 종류

by 컴돈AI 2024. 2. 27.

목차

    Key-value Database

    • 데이터 저장 방식
      • 데이터를 key-value 형태로 저장하는 데이터베이스
      • 너무 간단해서 실용성이 없습니다. (서브용 DB로 많이 사용)
    • DBMS 예시
      •  redis
        •  
        • 특수한 기능을 가진 key-value database (redis는 key-value database이지만 많이 사용됩니다.)
        • 데이터를 하드디스크에 저장하지 않고, 1차적으로 ram(메모리)에 저장합니다.
          • ram(메모리)이 하드디스크보다 훨씬 빠르기 때문
        • redis 활용 방식
          • main DB 하나를 두고, 거기서 자주 사용되는 데이터를 redis에 추가로 복사해 둡니다.
          • 자주 사용되는 데이터를 달라고 할 경우 메인 DB가 아닌, redis에서 꺼내서 보여줍니다.
            • 하드디스크가 아닌 ram(메모리)에서 꺼내오기 때문에 되게 빠른 서비스를 만들 수 있습니다.

    Relational Database(관계형 데이터베이스)

    • 데이터 저장 방식
      • table(표)을 하나 만들고 table(표) 위에다가 어떤 데이터를 저장할지 이름을 지정해 줍니다. 그 후 하나의 행마다 데이터를 보관할 수 있습니다.
        • 이러한 형식을 갖춘 엑셀도 관계형 데이터베이스라고 할 수 있습니다.
    • DBMS 예시
      • 대량의 데이터를 저장하려면 Oracle, MySQL, PostgreSQL 등 이런 DBMS를 사용하는 경우가 많습니다.
        • DBMS(Database Management System)
          • 데이터베이스 조작을 쉽게 도와주는 프로그램
          • 데이터입출력도 쉬워짐
          • DB 접속 계정 발급 가능
          • 백업도 쉬움
    • 특징
      • Relational Database(관계형 DB)에 데이터를 저장하고 싶다면 SQL(Structured Query Lnaguage)이라는 문법을 사용해야 합니다.
      • 정규화
        • 관계형 DB를 사용할 때는 정규화가 반드시 중요합니다.
        • 정규화를 간단하게 말하면 데이터가 중복된다고 하면은 여러 테이블로 분리시켜 주는 것입니다.
        • 정규화의 단점은 데이터 출력 문법이 길고 복잡해지게 됩니다.
      • ACID Transaction 기능
        • 돈거래 같은 중요한 기능을 구현하고 싶을 때 안전하게 구현할 수 있습니다.
        • 따라서 입출력 속도보다 데이터 정확도가 매우 중요하다 할 경우 일반적으로 관계형 DB를 사용하는 경우가 많습니다.

    Graph Database

    • 데이터 저장 방식
      • 노드를 만들고 노드 안에 데이터들을 저장합니다.
      • 노드끼리의 관계가 어떤 관계인지 기록해 둘 수 있습니다.
        • 관계가 중요할 때 사용합니다.
    • DBMS 예시
      • neo4j가 가장 유명
    • 특징
      • Graph Database에서 데이터를 입출력할 때는 Graph Query Language를 사용합니다.
      • 자료 간의 관계 방향 같은 걸 중점적으로 저장하고 싶을 때 사용하면 됩니다.
        • 비행기 노선, SNS 친구 관계, 추천 서비스 등..

    Document Database

    • 데이터 저장 방식
      • collection이라는 폴더 하나를 만들고 그 안에다가 document라고 부르는 하나의 파일들을 만들어서 데이터를 저장합니다. 파일 안에는 json 형태로 데이터를 저장할 수 있습니다.
      • 관계형 데이터베이스에 비해 자유로운 데이터베이스입니다.
    • DBMS 예시
    • 특징
      • 관계형 DB와 다르게 어떤 데이터를 저장할지 미리 정해 놓을 필요가 없습니다. (관계형 DB보다 훨씬 자유로움)
        • 기존에 없던 키값을 새롭게 추가시켜 넣어주어도 에러가 발생하지 않습니다. (아래 예시를 보면 연락처라는 새로운 키값을 추가시켜주더라도 에러가 발생하지 않습니다.)
      • 가장 큰 특징은 데이터의 중복 제거를 하지 않습니다. (즉, 정규화를 하지 않습니다.)
        • 따라서 데이터 입출력 문법들이 훨씬 간단한 편입니다.
      • 대부분 분산을 염두에 두고 만들어진 데이터베이스이기 때문에 데이터베이스를 분산시키는 것이 쉽습니다.
        • 단, 분산해 놓으면 DB 간에 정확도(일관성)가 떨어질 수 있습니다.

    Column-family Database

    • 데이터 저장 방식 
      • 관계형 DB같이 표 형식으로 데이터를 저장하고 싶은데 조금 유연하게 사용하고 싶다면 Column-family Database를 사용하면 됩니다.
      • 똑같이 table을 하나 만들고 row를 생성한 뒤에 거기에다가 자유롭게 컬럼을 만들어서 데이터를 기입하는 식으로 자료를 저장합니다.
    • DBMS 예시
    • 특징
      • Column-family Database에 데이터를 입출력하려면 SQL이 아니라 자기들이 만든 언어를 사용해야 합니다.
        • 카산드라의 경우 CQL(Cassandra Query Language) 사용
      • 정규화를 진행하지 않습니다. (중복 제거를 하지 않습니다.)
      • 복제, 분산 처리를 잘합니다. 따라서 많은 입출력을 감당해야 된다고 하면 Column-family Database를 사용하는 경우들이 있습니다.
        • 하지만 복제, 분산을 하게 되면 데이터 일관성이 부족해진다는 단점이 있습니다.
      • 데이터를 저장할 때 시간 기록을 쉽게 해주는 기능이 있어 시계열 데이터 저장하고 분석할 때 Column-family Database를 사용하는 경우가 있습니다.
          • (넷플릭스에서 시청기록 이걸로 분석)

    Search engine

    • 데이터 저장 방식
      • 검색용 인덱스를 보관하기 위한 데이터베이스(index 보관에 특화)
        • 인덱스란 데이터 검색을 빠르게 할 수 있게 도와주는 색인, 목차 같은 것입니다.
      • 평소에 사용하던 기존 DB에서 데이터를 뽑아서 여기에다 입력을 하면 인덱스를 생성한 뒤 보관해 줍니다. 그래서 이제 검색 요청이 들어오면 인덱스를 이용해 자료 검색을 도와줍니다.
      • 검색이 중요한 사이트를 만들 때 이것을 가져다가 사용하는 경우가 많습니다.
    • DBMS 예시

    정리

    • 일반적으로는 Relational Database(관계형 데이터베이스) / Document Database 중에 하나 골라서 사용합니다.
      • 정확도와 일관성이 중요하면 Relational Database가 일반적
      • 입출력이 매우 많으면 Document Database가 일반적

    출처

     

     

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

    csv 파일 DBeaver에 불러오기  (0) 2024.02.28
    DBeaver 설치  (0) 2024.02.27