'BigTable'에 해당하는 글 1건

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
BigTable의 등장 배경에는 여러 가지 의미가 있을 것이라 생각됩니다. 저는 그 중에서도 BigTable이 기존 RDBMS를 대체할 수 있느냐에 대한 관점을 가지고 둘을 비교해보고자 합니다. 이렇게 비교해보는 것은 얼마전에 발표된 Google App Engine이 데이터 저장을 위한 용도로 BigTable을 사용하고 있기 때문에 재미있을 것이라 생각됩니다.

RDBMS와 비교되는 BigTable의 특징은 아래와 같이 크게 두 가지 정도로 정리해볼 수 있을 것 같습니다.

첫번째는 기존 RDBMS와 같이 2차원이 아닌 3차원의 공간을 제공한다는 점입니다.

기존 RDBMS가
row * col
와 같은 2차원의 공간을 제공했다면,

BigTable은
row * col * timestamp
와 같이 3차원의 공간을 제공합니다. 구글 BigTable 문서에는 웹 크롤러 예제가 나오는데 시시각각 변할 수 있는 페이지의 HTML을 위와 같은 timestamp축에 저장하는 재밌는 예를 보여줍니다. 이렇게 데이터를 수집한다면 검색엔진에서 해당 사이트의 변화 이력을 볼 수도 있고, 사이트가 아예 동작하지 않을 때도 지금 구글이 제공하는 것처럼 저장된 페이지를 보여줄 수 있겠죠. 이러한 특징은 아무것도 아닌 것으로 보일지도 모르겠지만 응용하는 범위에 따라 강력한 기능이 될 수 있으리라 보여집니다.

두번째는 확장성이 뛰어나다는 점입니다. 기존 유명 RDBMS 솔루션은 용량면에서도 성능면에서도 확장이 쉽지 않았습니다. 예를 들어 DB에 병목이 발생할 때 대응책은 쿼리 튜닝, 데이터베이스 분리 혹은 복제 정도였지요. 이것은 기존 유명 RDBMS 솔루션이 한대의 장비와 그 장비에 있는 메모리라는 울타리 안에서 설계 되었기 때문에 가지는 한계라고 보여집니다.
반면에 BigTable은 GFS에 기반하고 있습니다. 이로 인해 GFS가 가지는 장점인 확장성을 그대로 상속 받을 수 있습니다. 만약 용량이 부족하면 장비를 하나 더 추가하면 됩니다. 마스터 서버가 감당할 수 있는만큼 확장이 가능한 것이죠. 성능면에서는 배치 작업과 같이 Map&Reduce를 이용할 수 있는 작업에 대해서는 장비를 넣는만큼 이점을 볼 수 있을 것이라 생각됩니다.

그렇다면 실시간 트랜잭션은 어떨까요? 아무래도 제가 웹 개발자이다보니 웹 서비스의 가장 중요한 요구사항이라 할 수 있는 실시간 트랜잭션에서의 응답속도에 있어 BigTable이 과연 얼마나 활약 할 수 있을까에 대해서 관심이 큽니다. BigTable의 구조 자체는 훌륭해 보입니다. 게다가 구글 BigTable문서에서 얘기하는 걸로 보아선 성능 향상을 위한 많은 고민과 고려가 있었던 것 같습니다. 하지만 그럼에도 실시간 트랜잭션에서 기존 RDBMS와 비교하여 생각해보면 별로 긍정적인 기대가 생기지는 않습니다. 왜냐하면 분산 컴퓨팅 환경이 자체적으로 가지는 복잡성으로 인해 하나의 데이터를 읽어오기 위해 거쳐야 하는 단계가 구조적으로 그리고 물리적으로 많기 때문입니다. 예를 들어 예전 RDBMS의 경우에는 사용자가 요구하는 데이터를 검색하기 위해 내부에 인덱스를 이용했습니다. 물론 이것은 단지 로컬에서 일어나는 일이였습니다. 그런데 BigTable은 이렇듯 데이터를 찾는데 필요한 작업에 네트웍 통신이 필요할 수 있습니다. 이러한 점은 실시간 트랜잭션에 있어선 취약점이라 생각됩니다.

결론적으로 BigTable은 몇몇 부분에는 RDBMS와 확연히 구분되는 장점이 있긴 하지만 현재로썬 RDBMS를 완전히 대체할 수는 없다고 생각합니다. 다만 데이터마이닝이나, 행렬 연산과 같이 기존 RDBMS에서 어려움이 있었던 복잡한 연산들에 대해서는 충분히 강점을 발휘할 수 있다고 생각합니다.
또한 현재는 취약해보이는 실시간 트랜잭션에 대해서도 계속적으로 발전해 나가고 데이터 모델이나 개발자들의 사고가 BigTable에 맞춰서 최적화 되어 간다면 이후에는 RDBMS를 대체할 수도 있지 않을까 생각됩니다.

추신. 아래 첨부 문서는 제가 사내 스터디에 발표를 하기 위해 BigTable에 대한 구글의 문서를 읽으며 만든 요약 형식의 문서입니다. 별로 내용은 없기 때문에 관심이 있으신 분은 아래 링크 되어 있는 구글의 문서를 보시길 추천드리고요, 간단히 살펴보시기 위한 목적이라면 제가 만든 문서를 보셔도 괜찮을 것 같습니다.

구글 BigTable 공개 눈문 : http://labs.google.com/papers/bigtable.html



WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,