대규모 데이터로의 쿼리

데이터가 많으면 쿼리를 처리하는데 시간이 걸린다. -> 직감으로는 알겠으나 왜 그런지를 이해해두는 것이 중요

 

많은 시행착오를 통해 대규모 데이터를 다루는 감각이 필요하다.

대규모 데이터 처리의 어려운 점

메모리 내에서 계산할 수 없다 -> 메모리보다 처리속도가 느린 디스크에 있는 데이터를 검색

디스크는 느리므로 I/O 에 시간이 걸린다.

* 메모리는 디스크보다 10만~ 100만배 이상 빠르다.

 

디스크는 왜 늦을까?

물리적인 동작을 수반  - 원반의 회전, 헤드의 이동

물리적인 구조에 따른 탐색속도 저하  - 원하는 위치에 있는 데이터를 찾기 위해 회전 필요

메모리보다 많이 늦은 전송속도(버스의 속도차)

  • 탐색속도에 영향을 주는 요인
    • 헤드의 이동과 원반의 회전이 필요
    • 디스크에 배치되었는 데이터들의 위치 ( 뿔뿔이 흩어져 있으면 찾기위해 많은 회전과 이동이 필요)

메모리 - 1회 탐색시 마이크로초, 물리적인 동작 필요없음

 

▶▶ 메모리와 디스크 속도차를 생각하고 애플리케이션을 만드는 것이 중요

 

규모조정의 요소

메모리와 디스크의 속도차와 같은 사항들이 시스템 전체의 확장성 전략에 어떤 영향을 주는가를 알아보는 장

 

스케일업 과 스케일아웃

  • 스케일 업 : 고가의 빠른 하드웨어를 사서 구매하여 성능을 향상시키는 방식
  • 스케일 아웃 : 일반적인 하드웨어를 나열하여 성능을 향상시키는 방식
    • 주로사용하는 방식
    • 이유
      • 저렴하다
      • 웹 서비스에 적합한 구조다
      • 시스템 구성에 유연하다.

CPU 부하와 I/O 부하

  • CPU 부하 : 스케일 아웃을 이용하여 부하 완화 가능
    • AP 서버, 웹 이 해당
    • 같은 구성의 서버를 늘리고 로드밸랜서를 이용하여 분산
  • I/O 부하 : 확장을 하여 분산으로 완화하기 어렵다
    • DB 가 해당
    • 스케일 아웃을 하면 어떻게 데이터를 동기화하고 안정성을 유지할 것인지 고민이 필요

대규모 데이터를 다루기위한 기초지식

프로그램을 작성할 때의 요령

1. 어떻게 하면 메모리에서 처리를 마칠 수 있을까?를 고민

- 디스크 seek 횟수 최소화

- 국소성을 활용한 분산 실형

 

2. 데이터량 증가에 강한 알고리즘 사용

- 이분 검색

-

3. 데이터 압축혹은 검색기술과 같은 테크닉을 활용

 

대규모 데이터를 다루기 전 3 대 전제 지식

1. OS 캐시

2. 분산을 고려한 RDBMS 운용

3. 알고리즘과 데이터 구조

 

+ Recent posts