2009-08-03 3 views
5

Rails 애플리케이션이 성숙 해짐에 따라 데이터웨어 하우스의 특성이 강하고 사실 테이블만으로는 모든 것을 명시 적으로 처리 할 수 ​​없다는 사실이 점점 분명 해지고 있습니다. 그 꼭대기에ActiveRecord를 사용하여 데이터웨어 하우스 스타일 테이블에 대화 하시겠습니까?

, 방금 장 2 (아름다운 API를 설계) 및 3 Ruby Best Practices의 (동적 툴킷 마스터) 참조하십시오.

  • 제품 (: 이제

    내가 가장 사실 검색 부분을 설계하는 방법을 알아 내려고 노력하고있어 ...

    나는 다음과 같은 치수 (응용 프로그램에서 기존 모델)을 말해봐 포함 기금)
  • 기금
  • 측정 (예를 들어 총 보유, 평균 보유, 평균 노출)

... 그리고 좋은 오래된 범용 사실 :

  • 사실 (날짜, 가치, 내 차원의 각각에 대한 외래 키 null 인 열 플러스)

나 '하는 일부 측면 조언을 구하는 데 감사드립니다.

  • 유연한 검색 인터페이스는 무엇이 될 수 있습니까?
  • 차원에 대해 NULL (즉, 전체 또는 상관 없음) 및 NOT NULL (특정 값) 값이 모두있는 경우 어떻게됩니까? 의사 값은 :all입니까? 또는 일부 국제 대회가 적용되어야합니까?
  • 치수 값의 하위 집합 만 선택하는 방법은 무엇입니까? 또는 하위 집합을 제외 하시겠습니까? : 만 제외 :?
  • 누구든지이 문제를 해결하기 위해 named_scope을 생성 한 경험이 있습니까? 관심있는 각 차원에 대해 체인을 연결할 수 있다는 분명한 매력이 있지만 7-8 차원에 도달하면 너무 복잡해 집니까?

는 (나는 acts_as_fact 플러그인 (적어도, RailsConf 2006에서 몇 가지 작은 소문이 있었다) 어떤 형태로 존재하는 것으로 알려져있다하지만 난 그게있을 수 있습니다 방법의 코드 또는 설명을 찾을 수 없다는 것을 알고 있어요 . 일)

버전 : 레일, 액티브 2.1.2, 오라클 강화 된 어댑터 1.2.0

편집 : 나는 ActiveWarehouse 쳐다 보면서 일부 예약이 있습니다 를 - 주요 지점은 11월 이후 커밋 없었습니다 -08이고, 1 월 9 일 이후로는 활동이 전혀 없습니다. - 2006 년 자습서 날짜가 오래된 것으로 인정되며 404 초는 나와 일치합니다. - ActiveRecord에서 벗어나고 싶어하는 것 같습니다. 많은 앱이 AR에 남아있을 것이므로 현재 AR 솔루션을 원한다고 생각합니다.

그래서 나는 그 하나를 알아 차릴 것이다. 고마워! 나는 차원 모두 NULL과 사실 (즉 모든, 또는 상관 없어) 및 NOT NULL (특정) 값이있는 경우

답변

0

우리는 다양한 복잡성의 보석이나 플러그인을 가지고 있습니다. 그 중 어느 것도 매우 적극적으로 개발 중이거나 레이더 아래에있는 것 같지 않습니다.

필자는 스타 스키마 스타일에서 사실 테이블 하나 또는 두 개를 구현하기 위해 데이터웨어 하우스를 구축하려하지 않습니다. 내가 요구 한 것은 그러한 테이블에 액세스하는 방법에 대한 아이디어였습니다.

차원의 집계가 해당 차원에 대한 외래 키에 NULL을 포함하는 여러 수준의 개념을 버리는쪽으로 기울어 져 있습니다. 쿼리에 포함 된 행 수가 줄어들지 만 혜택은 작고 무료는 아닙니다. 필자는 더 큰 팩트 테이블과 더 복잡한 코드를 사용하게됩니다.

검색 결과는 named_scopes (각 측정 기준에 대해 하나씩) 필터링으로 처리 될 수있는 것처럼 보입니다. 또는 적절하게 구성된 해시를 제공하는 맞춤 검색 기가 더 좋을 수도 있습니다.

내가 구축 한 때, 나는 다시 더 좋은 정보를 제공합니다

...

2

은 어떻게됩니까? 의사 값은 다음과 같습니다. 모두? 또는 일부 대회가 적용되어야합니까?

NULL은 연관성을 나타내지 않으므로 오해의 소지가 있습니다. -1 (값이 0보다 큰 정수 foreign_key 인 경우)과 같은 값을 사용합니다.

치수 값의 하위 집합 만 선택하는 방법은 무엇입니까? 또는 하위 집합을 제외 하시겠습니까?

with_scope() 

당신은 또한 찾기 기능이

def self.find(*args) 
    if anything 
     with_scope(a_scope) do 
     result = super *args 
     end 
    else 
     result = super *args 
    end 
    end 

    def self.a_scope 
    {:find => { :conditions => ["person_id = ?", me] , :readonly => true}} 
    end 

사람이 만드는 named_scopes 경험이 이 처리해야했다 덮어 쓸 수 있을까? 관심있는 각 치수에 1 개씩 체인 할 수있는 분명한 매력이 입니다 만, 7,8 개로하면 너무 껄끄 러운가요 치수는?

우리는 4 차원의 olap 데이터베이스를 가지고 있으며 멋지게 작동합니다. active_record에 대한 몇 가지 맞춤 메소드를 구현하면 앱을 재미있게 사용할 수 있다고 생각합니다. http://github.com/aeden/activewarehouse/tree/master

1

이 내가 사용하지 않은 어떤 다른,하지만 좋아 보인다 :

나는이 발견 SOLR에 대한

http://github.com/wvanbergen/active_olap/tree/master

http://techblog.floorplanner.com/2008/07/29/active-olap-released/


이를하는 내가 Google에서 찾았습니다.

내가 다른 것들 위에의 풀을 도착하기 전에3210

http://code.google.com/p/kettle-solr-plugin/

+0

오, 더 많은 링크. 내가 검색 용어를 생각하지 못했던 DW 내비게이션 (이전 DW 애플리케이션 = 1)을 보여줍니다. 감사! –

1

그래서 나는 그것이 얼마나 잘 작동 말할 수는 없지만, 체크 아웃 목록에 추가 뭔가, 얼마 전에 ActiveWarehouse을 사용으로 찾고 있었다. ETL 툴킷뿐만 아니라 사실, 치수 및 큐브에 대한 생성기가 있습니다.

관련 문제