“빅데이터는 모델을 만드는 대신 패턴을 찾아 그걸 사용할 뿐이다. 그런데 거기에 어떤 데이터에 대한 이해가 있는가”라는 질문을 던지는 경우를 본다. 이런 질문에는 일리가 있다. 결국은 세상에 대한 이해를 높이는 것이 목적이니까. 하지만 그 말속에 숨은 “패턴찾기”가 쉽다는 것처럼 이야기하는 뉘앙스에는 반대한다. 과연 패턴 세기가 만만한 일일까.
연속된 단어 3개(trigram)의 출현 빈도를 세는 경우를 생각해보자. 예를들어 “나는 오늘 학교에 갑니다”라는 문장이 있을 때 trigram 을 찾으면 “나는 오늘 학교에”, “오늘 학교에 갑니다”가 된다. 우리의 목표는 수없이 많은 문장들에서 단어 3개씩 묶은 trigram들을 모두 찾고 이들의 발생 빈도를 세는 것이다. trigram의 발생 빈도가 아주 클 수 있으므로 uint64(8바이트)를 사용해 갯수를 표현하자. 단어의 수는 10만개로 가정한다. 그러면 필요한 공간이 얼마일까? 무식하게 만들면 무려 7,275테라바이트의 공간이 필요하다. (=100000^3*8/1024/1024/1024/1024)
이런 정도의 크기는 세기 어렵다. 명확한 목적이 있다면야 머신과 디스크를 말그대로 쏟아붇겠지만, 그냥 내가 뭔가 생각나기에 해보자.. 라는 상태에서는 더욱 어렵다. 더구나 이것은 단지 trigram의 발생빈도만 센것이다. ‘패턴’이란걸 찾기위한 ‘단순한’ 분석은 아직 시작도 안했다.
데이터의 크기가 커지면 골치아파진다. 단순한 알고리즘에 빅데이터를 사용하는 것이 복잡한 알고리즘에 작은 데이터를 쓰는 것보다 낫다고 한다. 하지만 단순해 보이는 알고리즘도 처리해야할 데이터가 커지면 생각지 못했던 문제가 생긴다. 더구나 이를 풀기위한 해결방법은 세상에 아직 잘 정리되어 있지 않은 경우도 많다.