기록하는 습관

DB 리서치 (S3, Mongo, Mysql - InnoDB, MyISAM, heap) 본문

개발/Research

DB 리서치 (S3, Mongo, Mysql - InnoDB, MyISAM, heap)

로그뉴 2022. 7. 12. 15:44

S3


##1. S3 특징

  • Simple Storage Service의 약자로 파일 서버의 역할을 하는 서비스
  • S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다.
  • 웹하드 서비스와 비슷하지만, 별도의 클라이언트 설치나 ActiveX를 통하지 않고 HTTP 프로토콜로 파일 업로드/다운로드 처리
  • 최소 1바이트에서 최대 5TB의 데이터를 저장하고 서비스 할 수 있으며, 저장할 수 있는 파일의 수가 제한이 없다.
  • 파일에 인증을 붙여서 무단으로 엑세스 하지 못하도록 할 수 있다.
  • 데이터를 여러 시설에서 중복으로 저장해 데이터의 손실이 발생할 경우 자동으로 복원한다.

##2. datacenter에서 사용한 이유

  • 큰 용량, 제한 없는 파일 개수, 성능 고려를 했을 때 데이터를 쉽게 업로드 / 다운로드 할 수 있는 파일서버이기 때문.

 

##3. S3 기능

  • 쿼리 지원
    • S3 Select는 쿼리 성능을 최대 400% 높이고 쿼리 비용을 80%까지 절감할 수 있는 S3 기능.
    • 최대 5테라바이트까지 허용하는 전체 객체 대신 (단순 SQL 표현식을 사용하여) 객체 데이터의 하위 집합을 검색하는 방식으로 작동
  • 데이터 처리
    • AWS DataSync는 수백 TB 용량과 수백만 개의 파일을 오픈 소스 도구보다 최대 10배 빠른 속도로 Amazon S3로 효율적으로 간단히 전송할 수 있게 해줌.
  • 참고: https://aws.amazon.com/ko/s3/features/

 

MongoDB


##1. 특징

  • 다양한 데이터 타입 핸들링 가능하고 데이터 구조가 유연함
  • 정확한 데이터 구조를 알 수 없거나 변경 / 확장 될 수 있는 경우
  • 읽기(read)처리를 자주하지만, 데이터를 자주 변경(update)하지 않는 경우에 사용하면 좋음.
    • 한번의 변경으로 수십 개의 문서를 업데이트 할 필요가 없는 경우
  • 데이터베이스를 수평으로 확장해야 하는 경우 사용하면 좋음
    • 막대한 양의 데이터를 다뤄야 하는 경우

 

Mysql


##1. InnoDB

  • 특징
    • 테이블과 인덱스를 테이블 스페이스에 저장하고 테이블 스페이스는 몇 개의 서버 파일 / 디스크 파티션으로 구성.
    • row level locking 지원
  • 장점
    • 트랜잭션 처리, 대용량 데이터를 처리할 때 효율적.

 

##2. MyISAM

  • 특징 
    • 트랜잭션을 지원하지 않음.
    • Read에 최적화 되어 있음
    • 테이블과 인덱스를 각각 분리된 파일로 관리함.
  • 장점
    • 항상 테이블에 row count를 가지고 있어, select count(*) 명령시 빠르고, select 명령에도 빠름
    • full-text index를 지원하기 때문에 Read Only 기능이 많은 서비스일수록 MyISAM이 효율적
  • 단점
    • row level locking 지원 하지 않음 → select/insert/update/delete 명령시 해당 테이블 전체에 locking이 걸림.
    • row 수가 많으면 crud 속도는 엄청 느려짐.

 

##3. heap(Memory)

  • 특징
    • 트랜잭션을 지원하지 않음.
    • table-level locking 지원
  • 장점
    • 데이터나 인덱스를 메모리에 저장하기 때문에 쿼리가 disk IO를 기다릴 필요가 없어 속도가 빠름.
  • 단점
    • 서버가 다운되거나 재시작 되면 테이블 전체가 날아감. 
      • 테이블 데이터는 날아가도, 구조는 그대로 있기 때문에 서버 재가동 후 S3에서 데이터 재적재 필요.
  • 사용 예시
    • 조회용 / 매핑용 테이블
    • 주기적으로 집계되는 데이터의 결과 캐시용
    • 데이터 분석 시 중간 결과 저장용

 

참고

'개발 > Research' 카테고리의 다른 글

Spark, Hadoop  (0) 2022.07.12
offset, cursor 기반 pagination  (0) 2022.07.12
lock 오픈소스 (ShedLock, dLock)  (0) 2022.07.12
AWS lambda (s3)  (0) 2022.07.12
Redis, Redisson, Jedis  (0) 2022.07.12
Comments