개발일기장

Chapter 05. 대규모 데이터 처리 실전 (강의14 ~ 15) 본문

책 정리/대규모 서비스를 지탱하는 기술

Chapter 05. 대규모 데이터 처리 실전 (강의14 ~ 15)

게슬 2021. 8. 3. 11:37
728x90

강의14. 용도특화형 인덱싱

인덱스와 시스템 구성 RDBMS의 한계

전문 검색이나 유사문서계열 탐색, 데이터 마이닝의 경우에는 RDBMS로는 한계가 있다. 배치처리를 통해 RDBMS에서 데이터를 추출해서 별도의 인덱스 서버와 같은 것을 만들고, 여기서 Remote Procedure Call(API로 불리는 것) 등으로 액세스하는 방법을 사용한다.

AP서버에서 직접 관리하지 않는 이유는 커다란 검색 인덱스를 여러 프로세스에서 같이 사용하도록 구성하는 거는 비효율적이기 때문이다.(AP서버는 여러 개 있고 각각의 서버마다 검색 인덱스를 가지고 있을 필요가 없잖아.) 그래서 검색 인덱스를 위한 서버가 있으면 좋다.

용도특화형 인덱싱 튜닝한 데이터 구조 사용하기

RDBMS는 범용적인 용도로 만들어져 있다. 따라서 특정한 목적만으로 사용할 수 있도록 튜닝한 데이터 구조를 사용하면 압도적으로 빠르다. 이것이 용도특화형 인덱싱이다. 검색에서 역 인덱스가 그 전형적인 예. 자연언어처리를 미리 한 다음 인덱스를 만들어 두면 RDBMS로 데이터를 전부 순회하지 않아도 순식간에 검색이 가능해진다.

키워드 처리 예시

하테나에서는 20만 이상의 키워드 중에 무엇을 포함하는지를 찾아야할 때 일일이 DB를 탐색하지 않는다. 배치처리로 20만 건의 키워드를 미리 추출해두고, Trie 기반의 정규표현을 사용해서 Common Prefix Search를 수행한다.CPS를 할 때에는 다양한 알고리즘/데이터 구조가 있는데 DB에서 사전에 추출해서 자료구조를 만들어 두고 매칭하는 것이 키워드 링크의 방법이다.

전문검색 예시

전문 검색을 할 때에는 1. 대량의 데이터에서 검색하고자 한다. 2. 빠르게 검색하고자 한다. .3 특정단어와 같은 문서를 상위로 -> 특정단어에 해당하는 문장을 상위로 가져오는 것이 가장 어려운데 이를 위해서 스코어링처리를 수행한다. 이것도 RDBMS에서는 무리이므로 검색 인덱스를 직접 만들면, 즉 전문 검색엔진을 직접 구현하면 알고리즘을 자유롭게 선택할 수 있다.

강의15. 이론과 실전 양쪽과의 싸움

요구되는 기술적 요건 규명하기

웹 애플리케이션 세계는 이론과 실전 양쪽에서 공격해야 한다는 특성이 존재한다. ‘RDBMS에서 JOIN을 사용하지 않는 것과 같은 실전적인 방법과, 역 인덱스 스코어를 구하는 등의 고전적인 이론은 교과서에 적혀 있다. 그리고 많은 문제들은 비교적 교과서에 실려 있는 고전적인 이론으로 풀리곤 한다.

결국, 알고리즘/데이터 구조로 무언가를 실행할 때 해당 알고리즘의 데이터 구조를 사용해서 어떤 게 가능한지를 어느정도 기억하고 있지 않으면 필요할 때 딱 떠오르지 않는다. 덧붙여서 이론적으로 배울 뿐만 아니라 응용을 위한 이치를 어느 정도 익혀 두는 것도 중요하다.

 

2~ 5장 정리

1. 기가바이트 단위의 데이터 처리

2. 메모리가 중요하다. (OS 캐싱을 위해서)

3. 분산할 것을 전제로 운용, 설계를 하자 (DBmaster-slave구조, ‘구조, 국소성의 활용)

4. 적절한 알고리즘과 데이터 구조를 확실히 선택해야 한다고 하는 기본적인 내용이 중요하다.

728x90
Comments