DataMapper는 단순한 ORM을 넘어 다양한 데이터 소스에 연결할 수 있는 유연성을 제공합니다. 이는 관계형 데이터베이스(PostgreSQL, MySQL, SQLite)뿐만 아니라 Bigtable, App Engine, RDF, Sphinx와 같은 비관계형 데이터 스토어에도 적용됩니다. 데이터 마이닝의 기본 단계는 문제 정의, 데이터 수집, 쿼리, 조작 및 결론 도출로 구성되며, DataMapper는 이 모든 과정을 지원합니다.
Chrome 방문 기록 분석 사례
-
데이터 소스: Google Chrome의 방문 기록은 SQLite3 데이터베이스에 저장됩니다.
-
DataMapper 모델링:
URLs테이블의 스키마를 기반으로 DataMapper 모델을 정의합니다. 초기 모델은 URL, 제목, 방문 횟수, 마지막 방문 시간 등을 포함합니다. - 데이터 정제 및 커스텀 타입:
- URL 필드는 단순히 문자열로 저장되지만, DataMapper의
URI커스텀 타입을 활용하여URI객체로 자동 변환하여 호스트, 프로토콜, 경로 등 세부 요소에 쉽게 접근하고 조작할 수 있습니다. last_visit_time은 에포크 이후 마이크로초 단위의 큰 정수 형태로 저장됩니다. Chromium 소스 코드를 분석하여 이 값을 파악한 후, DataMapper의 커스텀 타입을 사용하여 RubyTime객체로 변환하여 시간 기반의 분석을 가능하게 합니다.
- URL 필드는 단순히 문자열로 저장되지만, DataMapper의
- 개인 행동 패턴 분석: 정제된 데이터를 바탕으로 시간대별 웹사이트 방문 히스토그램을 생성하여 개인의 브라우징 습관(예: 근무 시간,
rubydoc.info사용 패턴, 심야 활동)을 시각적으로 파악할 수 있습니다.
외부 데이터 스크래핑 및 통계 분석 사례
-
문제 정의: Ars Technica 포럼에서 제기된 ‘Edge 매거진이 PS3 게임에 대해 부정적인 편향을 가지고 있는가?’라는 가설을 검증합니다.
-
데이터 수집: Metascore는 API를 제공하지 않으므로, Ruby의 Nokogiri 라이브러리를 사용하여 HTML 스크래핑 방식으로 게임 리뷰 점수 데이터를 수집합니다.
-
데이터 모델링: 게임, 리뷰 매체, 리뷰 간의 관계를 DataMapper 모델로 정의합니다.
-
통계 분석: 수집된 데이터를 비교하기 위해 Student’s t-test를 구현합니다. 이 t-test 함수는 DataMapper 컬렉션의 특정 속성을 받아 일반화된 방식으로 어떤 두 데이터셋이 통계적으로 유의미한 차이가 있는지 분석할 수 있도록 설계되었습니다.
-
결론: 분석 결과, Edge 매거진은 PS3에 대한 부정적인 편향이 없었으며, 오히려 Metascore보다 높은 점수를 주는 경향이 있었습니다. 이는 데이터 기반 분석이 확인 편향(confirmation bias)을 극복하고 객관적인 결론을 도출하는 데 얼마나 중요한지를 보여줍니다.