caffeine-library / system-design-interview

🌱 가상 면접 사례로 배우는 대규모 시스템 설계 기초를 읽는 스터디
4 stars 0 forks source link

[additional] long tail과 random access #39

Closed ngwoon closed 2 years ago

ngwoon commented 2 years ago

연관 챕터

37

조사 내용

관계형 데이터베이스는 데이터 가운데 롱 테일 (long tail) 에 해당하는 부분을 잘 처리하지 못하는 경향이 있다. 인덱스가 커지면 데이터에 대한 무작위적 접근 (random access) 을 처리하는 비용이 늘어난다. (책 209pg 中)

파레토 법칙

이탈리아 인구의 20%가 이탈리아 전체 부의 80%를 가지고 있다. - 빌프레도 파레토 -

경제학자 빌프레도 파레토에 의해 처음 언급된 80대 20법칙.

20%의 원인이 전체 결과의 80%를 만들어낸다는 뜻이다.

이 법칙은 다양한 분야에서 적용된다.

https://img.cidermics.com/uploads/EC1395_02.jpg

역 파레토 법칙 (Long Tail 법칙)

파레토 법칙은 “머리” 에서 낸 수익으로 “꼬리” 의 손실을 메꾸는 산업 모델로 많이 쓰였다.

하지만 산업이 발전하고 IT 시대가 도래함에 따라, 이를 뒤집는 비즈니스 모델이 등장했다. 이것이 바로 Long Tail 법칙이다.

Long Tail 법칙은 아마존 사에서 처음 실현되었다고 한다. 아마존의 온라인 도서 수익 구조를 살펴보니, 인기 상위 20%의 도서들보다 그 외 80%의 비인기 도서에서 발생하는 수익이 무시하지 못할 비율이라는 데이터가 산출되었다.

관계형 데이터베이스는 데이터 가운데 롱 테일 (long tail) 에 해당하는 부분을 잘 처리하지 못하는 경향이 있다. = RDB에 저장되어있는 데이터들 중, 상대적으로 덜 접근되는 80%의 데이터들을 잘 처리하지 못하는 경향이 있다.

랜덤 액세스

랜덤 액세스란?

출처 : https://blackhairdeveloper.tistory.com/3

관계형 데이터베이스에서 인덱스 관리를 위해 종종 B+Tree를 사용한다.

위 그림과 같이 leaf node에 rowid라는 값이 저장되어 있는데, rowid는 레코드의 주소값이다.

인덱스 스캔을 통해 찾고자 하는 레코드의 주소값을 알아낸 뒤, 이 주소값을 통해 디스크에서 데이터를 찾는 과정을 랜덤 액세스라고 한다.

왜 “랜덤” 액세스일까? 랜덤 액세스의 특징은 주소값을 알고 있다면, 해당 주소값으로 바로 이동하여 하나의 블럭을 읽고, 그 블럭 내에서 데이터를 찾아 작업을 수행한다는 점이다. 우리가 흔히 알고 있는 RAM이 Random Access Memory의 준말이다. 랜덤 액세스의 반대 개념으로, 논리적 혹은 물리적으로 연속적인 여러 개의 블럭을 한번에 읽어 처리하는 시퀀셜 액세스 (Sequential Access) 가 있다.

관계형 데이터베이스에서 데이터를 찾을 때, 항상 Block 단위로 찾게 된다. (2KB, 4KB, 8KB .. 등)

이말인즉슨, 찾고자하는 하나의 데이터는 Block 크기보다 작지만, 그 데이터 하나를 찾기 위해서 결국 Block을 읽는 I/O 작업이 수행된다는 뜻이다.

따라서 찾아야하는 레코드의 수가 많으면 많아질수록, 읽어야 하는 Block의 수도 많아지고, 읽은 뒤 사용하지 않고 버려지는 데이터의 크기도 급격히 증가한다.

결론

관계형 데이터베이스는 데이터를 레코드 단위로 처리하는데, 이 하나의 레코드를 읽기 위해 Block 단위로 데이터를 읽어들어야 하고, Block 내의 나머지 데이터는 버려진다.

이러한 맥락에서 관계형 데이터베이스가 long tail 데이터를 잘 처리하지 못하는 경향이 있다는 문장을 쓴 것이라 추측된다.

참고

https://blackhairdeveloper.tistory.com/3

http://www.gurubee.net/lecture/2230

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=capemay&logNo=220221154613

@caffeine-library/readers-system-design-interview