데이터베이스 종류

Minji Lee·2023년 2월 14일
0

1. Key-Value 데이터베이스

: 데이터를 key-value형식으로 저장

  • 서브용 DB로 많이 사용됨
  • redis: 특수한 기능을 가진 key-value데이터베이스
    - 데이터를 하드디스크가 아닌 ram에 저장(ram이 하드디스크보다 빠름)
    - 메인DB를 하나 두고, 자주 필요한 데이터를 redis에 추가로 복사해둠
    - 해당 데이터가 필요하면 메인 DB가 아닌, redis에서 가져와서 씀
    - 데이터 캐싱용, pub/sub(채팅), 영상 스트리밍, 로그인 기록 저장 등에 사용

2. Relational 데이터베이스

: 테이블위에 column을 지정하여 하나의 행마다 데이터 지정

  • 대량의 데이터 저장
  • ex) oracle, mySQL, PostgreSQL, SQLite, SQL Server, MariaDB, Google Could Spanner 등
  • 데이터베이스 점유율이 높음
  • SQL구문 사용
  • 관계형 DB는 중복 싫어해서 데이터가 중복이 될때, 데이터를 정규화해서 저장함(중복되는것은 테이블을 따로 뺌 → 데이터 출력문법이 복잡해지는 단점 존재)
  • 트랜잭션 기능 존재(돈 거래같은 기능구현에 사용)
  • 입출력 속도보다 데이터 정확도가 중요한 경우 사용
  • 관계를 중점으로 다루기에 어려운 점 많음
  • 일반적으로 많이 쓰임

3. Graph 데이터베이스

  • 데이터들의 관계를 DB에 저장하고 싶은 경우 사용
  • ex) neo4j, *sparsity, orientDB, ArangoDB 등
  • neo4j
    - 데이터가 노드로 존재
    - 노드끼리 어떤 관계, 방향인지 표시할 수 있음
    - Graph Query Language 사용
    - ex) 비행기 노선, SNS 친구 관계, 코로나 전염맵, 추천 서비스 등에 사용

4. Document 데이터베이스

  • 관계형 데이터베이스보다 조금 더 자유로움
  • Document 데이터베이스도 관계형데이터베이스만큼 많이 쓰임
  • ex) mongoDB, CouchDB, Cloud Firestore
  • collection 같은 폴더안에 document 파일들을 넣음
  • document파일안에는 JSON형태로 데이터를 저장
  • 관계형데이터베이스와 다르게 어떤 데이터를 저장할지 미리 정의안해도됨
  • 갑자기 구조가 바뀌어도 신경 안씀
  • 데이터의 중복제거를 하지 않음 → 정규화없이 사용
  • 대부분 데이터베이스 분산처리를 잘해줌 → SNS, 실시간 채팅, 게시판 등에 사용
  • 분산처리 단점: 일관성이 떨어지고, 정확성이 떨어짐

5. Column-family

  • 유연하면서, 표 형식으로 표현하고 싶은 경우 사용
  • ex) cassandra, Hbase, Google Cloud Bigtable 등
  • 테이블 만들고, row들을 만들고 그 안에 colum을 만듦
  • 행마다 컬럼이 달라도 상관 없음
  • SQL문법이 아닌, CQL문법 사용하여 작성
  • 정규화 안함(중복제거 안함)
  • 데이터 입출력이 쉬움
  • 복제, 분산을 잘함(데이터 일관성 부족)
  • 많은 입출력 감당해야하는 경우 사용
  • 데이터 시간 기록같은 경우 사용

6. Search engine

  • ex) elastic, Amazon CloudSearch, Google Cloud Search 등
  • index보관용으로 사용함
    - 데이터 검색을 빠르게 도와줌(색인, 목차)
    - 기존 DB에서 데이터를 뽑아서 입력을 하면 인덱스를 생성하고 보관해주는 역할을 함
    - 실시간 검색어, 추천 검색어, 검색어 오타교정 등 부가적인 서비스 만들 수 있음
    - 검색이 중요한 서비스인 경우 사용

❗️ NoSQL 종류
  • key-value DB
  • Doument DB
  • Graph DB

[참고 영상]
https://www.youtube.com/watch?v=ZVuHZ2Fjkl4&list=WL&index=3

0개의 댓글