최근 NoSQL에서 많이 사용하는 카산드라(Cassandra)의 데이터 모델과 칼럼 패밀리 등 개념에 대해서 정리해 보려고 한다. 카산드라 개요 카산드라는 구글 BigData의 컬럼 기반 모델과 아마존 Dynamo의 분산 모델을 기반으로 페이스북에서 만든 데이터베이스이다. JVM 기반으로 동작하며 분산 환경으로 고가용성과 확장성을 가지고 있다. 또한 칼럼 패밀리 기반으로 대용량 트랜잭션을 처리하는데도 용이하여 페이스북, 트위터 등 SNS에서 주로 사용한다. 카산드라 데이터 모델 카산드라는 Key-Value 형태의 NoSQL로서 칼럼 패밀리 형태의 데이터 모델을 활용한다. 참고로 카산드라와 함께 많이 사용하는 몽고디비는 도큐먼트 데이터 모델을 사용하고 있다. 칼럼 패밀리 (Column Family) 칼럼 ..
카프카(Kafka)는 대용량 실시간 처리를 위해 사용하는 메시징 시스템으로 Pub-Sub 구조로 되어 있다. LinkedIn, Twitter, Netflix, Tumblr, Foursquare 등 대용량을 다루는 업체들이 주로 카프카를 사용하고 있다. 물론 카프라 단독으로 실시간 처리를 구성하지 않고, 스톰(Storm) / 하둡(Hadoop) / HBase 등과 연동해서 활용하는 것이다. 아직까지 국내에서 카프카를 실제 서비스에 많이 활용하고 있지는 않고 오히려 레디스(Redis)와 같은 메모리(In-Memory) 기반의 메시지 큐나 멤캐쉬(memcached)를 더 많이 사용하는 것 같다. 하지만 전세계 40여개가 넘는 대용량을 다루는 업체들이 어떻게 카프카(Kafka)를 사용하고 있는지 한번 정리해 보..
린 캔버스에 대해서 다룬 비즈니스 모델을 위한 Nine Block에 대해 설명한 적이 있습니다. 또한 에릭 리스의 린 스타트업을 읽어보면, 지속가능한 비즈니스를 위해 만들기-측정-학습의 중요성을 이야기 하고 있죠. 결국 애자일 방법론처럼 빠른 개발을 하고, 고객의 피드백을 받아서 현재 사업 계획을 유지할지 다른 방향으로 전환할지를 끊임없이 고민해야 하는데요. 이럴때 기존 수십여장의 사업계획서는 한눈에 파악하기도 어렵고, 한번 수정하는데에도 많은 시간이 소요된다는 문제가 있습니다. 그래서 린 캔버스를 다시 살펴봤습니다. 애시모리아는 린 캔버스를 작성하는데 20분 이상을 걸리지 않아야 한다고 이야기 하고 있습니다. 사업계획서 역시 빠르게 만들고, 주변 사람들 그리고 고객들을 통해서 계속 검증하고 수정해 나가..
우분투에 R을 설치하기 위해 간단하게 apt-get을 사용하면 됩니다. $ sudo apt-get update $ sudo apt-get install r-base $ R 쉘에서 R을 입력하면 R 콘솔이 나타나게 됩니다. 기본적으로 R은 수많은 패키지를 사용할 수 있다는 장점이 있습니다. R 콘솔에서 다음과 같은 명령어로 필요한 패키지를 추가로 설치할 수 있습니다. > install.pakages("RMySQL") 그런데 패키지에 따라서 다음과 같은 오류 메시지가 나올 수 있는데요. Warning in install.packages : package ‘gplots’ is not available (for R version 2.14.1) 이때는 R 콘솔에서 쉘로 나가서 apt-get으로 찾아서 설치하면 됩..
두 변수 간의 통계적인 관계 측정 방식으로 사용하는 상관관계 측정으로 피어슨 상관계수, 스피어만 상관계수 등이 있다고 합니다. 피어슨 상관계수는 두 변수 X와 Y가 함께 변하는지와 따로 변하는지의 비율로 계산하는 것으로 가장 많이 사용된다고 합니다. X와 Y가 완전히 동일하면 +1, 완전히 다르면 0, 반대방향으로 동일하면 -1 값을 가진다고 하네요. 스피어만 상관계수는 자료의 값 대신 순위(랭킹)을 기준으로 상관관계를 계산하는 방식이라고 합니다. 이 값은 -1과 1 사이의 값을 가지는데, 두 변수의 순위가 완전히 일치하면 +1, 완전히 반대면 -1이 된다고 합니다. 스피어만 상관계수와 같이 순위를 기준으로 값을 측정하는 캔달의 타우도 있다고 하네요. 이번에 살펴볼 R 예제는 기온과 기압과 같은 시계열 ..
현재 빅데이터 관련 기술로 Hadoop이 주로 활용되고 있습니다. 그러나 최근 실시간 처리에 대한 요구가 늘어나면서 점차 In-Memory 기술에 대한 관심도 증가하고 있습니다. 과거 실시간 처리를 위한 OLTP로서 데이터베이스를 주로 사용했지만, 빅데이터 환경에서는 빠르게 생성되는 데이터 스트림을 처리하기 위해서 새로운 접근법이 필요한 것이죠. 빅데이터 분석 기술에 대한 정리 에서도 Hadoop이외의 다른 기술들을 살펴보면서, 구글에서는 Dremel을 통해 짧은 시간내에 수많은 데이터를 처리하기도 한다고 이야기했었습니다. 처리하는 영역은 조금씩 다르지만 실시간이라는 이슈를 위해 주로 사용되는 기술들에 대해서 정리해 보도록 하겠습니다. Redis Redis는 "Remote dictionary System..
다음과 같은 날씨가 있다고 가정해봅시다. 비가 조금이라도 온 날을 1로 보구요.. 맑은 날을 0이라고 해보죠.. 그리고 나서 일정 기간의 데이터를 보고 앞으로 비가 올지 안올지를 예측해 보는 겁니다. 먼저 위의 날씨를 R의 벡터로 표시하면 다음과 같이 할 수 있을 것입니다. 앞으로의 날씨를 예측하는 부분의 알고리즘은 여기에서는 쉽게 다수결로 한다고 생각해 보겠습니다. k라는 수를 정하고, k값이 3이면 이전 3일 데이터를 가지고 1과 0중 더 많이 나온 것을 보고, 그날의 날씨를 예측해 보는 것이죠. 위 예에서는 1일에서 3일까지의 (0, 1, 1) 세개를 보고 1이 많으므로, 4일째도 1이 나온다고 예측한다는 것이죠. (즉, 비가 온다는 것입니다.) 한번 더 생각해볼까요? k값이 5이고, 위 그림의 9..
R을 어떻게 하면 쉽게 이해할 수 있을까? 생각해봤습니다. 모든 프로그래밍 언어가 마찬가지겠지만 실제 적용하는 사례로 보는 것이 가장 좋은 방법이 아닐까 합니다. 그래서 지금부터 R에 대해서 "빅데이터 분석 도구 R 프로그래밍(노만 매트로프 지음)"의 예제로 정리해 보려고 합니다. 첫번째는 매우 쉬운 예제이기는 하지만 기본적인 R을 이해하는데 도움이 될 것 같아서 진행해 봅니다. 0과 1로만 이루어진 벡터가 있을 때, 1이 연속으로 나오는 부분을 찾는 함수입니다. 즉, (1,0,0,1,1,1,0,1,1)과 같은 벡터가 있을 때, 1이 연속으로 세번 나오는 곳을 찾으면 4가 되겠죠.. 중요한 부분이 R에서의 벡터는 1부터 시작한다는 점입니다. C/C++에 익숙했던 분들은 0부터 시작한다고 생각할 수도 있지..
지금까지 살펴본 확률분포는 모두 평균이나 분산과 같은 매개변수들을 기반으로 확률분포를 정하게 됩니다. 예를 들어, 정규분포(Normal Distribution)에서는 평균과 분산을 알고서 확률분포를 구하게 되죠.. 그런데 만약 평균과 분산과 같은 매개변수를 모를 경우, 확률 분포를 어떻게 알 수 있을까요? 특히 정규분포와 달리 여러개의 봉으로 이루어진 데이터라면, 기존의 방식으로 확률 분포를 알수는 없을 겁니다. 이렇게 매개변수가 없을 때, 확률 분포를 구하는 방법을 Nonparamtric Method라고 합니다. (보통 비모수적 방법이라고 이야기 하는 것 같습니다.) Nonparametric Method는 보통 Histogram, Kernel Density, Nearest Neighbour 세가지가 있..
R을 활용하기 위한 데이터 구조를 정리해 보도록 하겠습니다. 일반적인 프로그래밍 언어와 달리 R에서는 벡터가 중요한 역할을 합니다. 실제로 R에서는 다음과 같은 숫자나 문자열 모두 벡터로 저장됩니다. 그래서 R에서는 스칼라 혹은 단일한 수치 값은 존재하지 않습니다. 단일 숫자처럼 보이지만 실제로는 한 개의 원소를 갖는 벡터로 이해하면 됩니다. 행렬 수학에서는 행과 열로 이루어진 행렬을 많이 사용합니다. R에서도 행렬을 데이터 구조로 취급할 수 있는데요.. 행의 개수와 열의 개수를 속성으로 가지고 있는 벡터라고 생각하면 됩니다. 행렬을 만들기 위해서는 rbind()와 cbind()의 두 가지 함수를 제공합니다. 이름에 나타난 것처럼 열(row) 기준인지 행(column) 기준인지를 나타냅니다. 다음 예를 ..