hailey-it
hailey-IT
hailey-it
전체 방문자
오늘
어제
  • 전체보기 (29)
    • MSA (4)
    • Redis (2)
    • CS (4)
      • Nerwork (3)
      • Security (1)
    • JPA (1)
    • 대규모 스트림처리 (3)
    • Git (2)
    • Mac M1 (9)
      • Mac (4)
      • App (4)
    • Programming (4)
      • Android (2)
      • IntelliJ (1)
      • React (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hailey-it

hailey-IT

대규모 시스템 - 데이터베이스 최적화
대규모 스트림처리

대규모 시스템 - 데이터베이스 최적화

2024. 8. 22. 10:00

 

데이터베이스 사용 최적화

- 데이터베이스 인덱싱

: 데이터베이스 인덱싱은 조회 성능을 크게 향상할 수 있는 방법

 

인덱스를 사용하면 데이터베이스는 데이터를 빠르게 검색할 수 있음

 

올바르게 설계된 인덱스는 읽기 성능을 적화 하고 쿼리 응답시간을 줄임

 

인덱스가 너무 많으면 쓰기 성능이 저하됨

 

- 데이터베이스 샤딩

: 데이터베이스 샤딩은 데이터베이스를 여러 샤드로 분할하여

각각의 샤드가 독립적으로 쿼리를 처리하도록 하는 방법

 

이를 통해 단일 데이터베이스에 대한 부하를 분산시킬 수 있으며,

읽기 요청에 대한 응답 속도를 향상 시킬 수 있음

 

ex) 사용자 데이터를 여러 샤드에 분산 저장하여 읽기 성능 최적화

 

- 읽기전용 데이터베이스

: 데이터를 주기적으로 동기화하여 최신 상태를 유지하면서 요청을 처리

 

이 방법은 주 데이터베이스에 대한 읽기 부하를 줄이고 성능을 최적화할 수 있음

 

- 쿼리 최적화

: SQL쿼리를 효율적으로 작성하여 데이터베이스의 읽기 성능을 향상시키는 방법

 

ex) 불필요한 조인 줄이기, 필요한 컬럼만 석택하여 적절한 조건을 사용

쿼리 실행 계획을 분석하여 병목 지점을 찾아내고, 최적화할 수 있음

 

쓰기 요청 최적화

- 비동기 처리

: DB에 직접 접근하지 않고 빠르게 응답을 반환할 수 있음

 

ex) 메시지를 바로 DB에 쓰지 않고, 큐에 넣어 나중에 처리

 

높은 트래픽을 처리할 때 유용

 

사용자는 요청을 보낸 후 즉시 응답을 받기 때문에 사용자 경험이 향상됨

 

비동기 처리 시 데이터 소실이나 오류를 방지하기 위해

큐에 데이터를 넣을 때 적절한 검증을 수행하고,

큐에 쌓인 데이터를 지속적으로 모니터링하여 

실패한 요청을 재시도 할 수 있는 메커니즘을 마련해야 함

 

데이터의 순서를 보장하고, 중복 처리를 방지하기 위한 

고유 식별자(ID)를 사용해야 함

 

- 배치 처리

: 실시간으로 처리할 필요가 없는 쓰기 요청은 배치 처리를 통해

한꺼번에 처리할 수 있음

 

ex) 일정 시간마다 큐에 쌓인 메시지를 DB에 씀

 

ex) 매일 자정에 하루동안 수집된 로그 데이터를 한 번에 DB에 저장

 

이를 통해 실시간 처리의 부담을 줄이고, 

시스템 자원을 효율적으로 사용할 수 있음

 

배치 처리 시에도 데이터 소실을 방지하기 위해

배치 작업 중 오류가 발생한 경우 이를 기록하고,

재시도할 수 있는 메커니즘을 마련해야 함

 

배치 작업의 상태를 모니터링하고, 배치 작업이 완료되었는지

확인하는 프로세스를 마련해야 함

 

- 분산 DB

: 단일 DB로 모든 쓰기 요청을 처리하기 어렵다면,

분산 DB를 사용하여 부하를 분산시킬 수 있음

 

ex) 여러 개의 DB 인스턴스를 사용하여 각 인스턴스가 

특정 사용자 그룹의 데이터를 처리하도록 할 수 있음

 

분산 DB는 데이터를 여러 개의 노드에 분산 저장하여

고가용성과 확장성을 제공

 

샤딩(Sharding) 기법을 통해 데이터베이스를 수평으로 분할하여

각 샤드가 독립적으로 쓰기 작업을 처리하도록 할 수 있음

이를 통해 단일 노드의 부하를 줄이고,

시스템의 전체 성능을 향상할 수 있음

 

 

저작자표시 (새창열림)

'대규모 스트림처리' 카테고리의 다른 글

대규모 시스템 - 데이터 일관성 유지  (0) 2024.08.23
대규모 시스템 - TPS(Transaction Per Second)  (0) 2024.08.16
    '대규모 스트림처리' 카테고리의 다른 글
    • 대규모 시스템 - 데이터 일관성 유지
    • 대규모 시스템 - TPS(Transaction Per Second)
    hailey-it
    hailey-it

    티스토리툴바