2014-12-09 4 views
1

나는 네트워크 트래픽 트렌드를 (잘하면) 표시 할 Ruby on Rails를 배우는 방법으로 작은 응용 프로그램을 디자인하고 있습니다. 내가 기반으로하는 데이터가 매우 크기 때문에 (매일 100 억 개의 행), 우리는 시간별, 일별 및 월별로 데이터를 요약 한 세 개의 테이블을 가지고 있습니다. 적절한 접근 방식이 유사성에도 불구하고 각 유형의 데이터에 대해 3 가지 모델을 만드는 것이 궁금합니다. 그것은 결국 필자가 중복 코딩을 제거하기 위해 결국 리팩토링을해야한다는 것을 이해하면서 기울어 진 것으로 보인다. 제안 할 수있는 다른 접근법이 있다면 궁금한 점이 있습니까?비슷한 유형의 데이터를위한 여러 모델

답변

0

STI (단일 테이블 상속) 사용을 고려해 볼 수 있습니다. 자세한 내용은 How (and When) to Use Single Table Inheritance in Rails을 참조하십시오. 기사에서

:

동일한 기능 및 데이터 필드의 많은 부분을 공유하는 모델 클래스를 처리 할 때 STI는 고려되어야한다, 그러나 당신은 개발자는 확장하거나 각에 추가를 통해 더 세부적으로 제어 할 수 있습니다로 수업을 개별적으로합니다. 여러 테이블 (DRY가 아님)에 대해 코드를 반복하여 복제하거나 특유의 기능 또는 메소드를 추가하는 유연성을 배제하기보다는 STI를 사용하면 특수한 기능을 작성하면서 단일 테이블에서 데이터를 유지할 수 있습니다. 재미있는

+0

은 링크를 주셔서 감사합니다. STI 방법 개요에 따라 하나의 테이블에 모든 데이터를 수집하는 대안이 있다면 궁금합니다. 기본 데이터베이스가 마스터 DB에서 복제되므로 db 측에서 몇 가지 추가 작업이 발생할 수 있습니다. – Andrew

+0

@Andrew는 독립 모델이 아닌 STI에서 수행해야 할 추가 작업을 설명 할 수 있습니까? – rubish

+0

모델이 기반으로하는 테이블은 다른 마스터 데이터베이스에서 복제됩니다. STI를 사용하면 유형을 구별하기 위해 하나의 마스터 테이블에있는 모든 데이터를 TYPE 열로 통합하려고합니다. 데이터를 복제 한 다음 하나의 테이블로 통합해야합니다. – Andrew

관련 문제