2011-11-12 2 views
0

DB를 구성하는 방법에 대한 질문이 있습니다. 나는 reddit'esque 투표 시스템을 가지고있다. 항목은 표를 얻을 수 있습니다. 그러나 각 항목은 주제에 속하며 각 주제는 범주에 속합니다. 항목 만 투표 할 수있는 반면 주제 및 범주 내에서 투표 수에 액세스 할 수 있기를 바랍니다. 이 작업을 수행하는 방법에 대한 제안 사항은 무엇입니까?분류 된 투표 데이터베이스를 구성하는 방법은 무엇입니까?

  1. 투표를 드-정상화하고 항목 테이블의 속성, 주제 테이블 및 범주 표 안에 투표를 저장 :

    나는이 일의 4 개 가지 방법을 참조하십시오. 그러면 투표/다운볼트가 발생할 때마다 모두 3을 업데이트해야합니다.
  2. 별도의 '투표'모델을 만듭니다. 투표는 항목, 주제 항목 및 카테고리에 속합니다. 그런 다음 아무 것도 액세스 할 필요가 없을 때마다 체인을 통해 투표 수를 쿼리 할 수 ​​있습니다.
  3. 그냥 항목과 票가 있습니다. 항목에는 범주 및 주제 속성이 있습니다. 그런 다음 주제 내의 항목을 쿼리하고 그 항목에 대한 투표를 계산합니다.
  4. NoSQL db 시스템 사용법을 배우십시오.

추가 정보 : 저는 레일즈를 사용하고 있으며, 현재로서는 단지 MySQL을 알고 있습니다. 나는 몽고와 같은 것을 배워야 할 때인가? 이 작업은 Hadoop으로 수행 할 수 있습니까? MySQL에서이 작업을 수행 할 수 있습니까? 감사!

+0

질문에 대한 답변을 얻는 데 필요한 도구가 부족하지만 데이터베이스 관점에서 옵션 2가 유일한 해결책입니다. 이 유형의 것은 RDBMS가 구축 된 것입니다. –

답변

1

별도의 '투표'모델을 만듭니다. 투표는 항목에 속하며, 항목은 주제에 속하고 주제는 카테고리에 속합니다. 그런 다음 아무 것도 액세스 할 필요가 없을 때마다 체인을 통해 투표 번호를 쿼리 할 수 ​​있습니다.

당신이 말하는 것에 대해 가장 유연한 방법입니다.

NoSQL db 시스템 사용법을 배우십시오.

현재 프로젝트가 아닙니다.

나는 Mongo와 같은 것을 배워야 할 때인가?

번호

이 단지 정말 Hadoop을 달성 할 수 있습니까?

아니요. 모든 SQL 데이터베이스에서이 작업을 수행 할 수 있습니다. SQL 데이터베이스가 계획하고있는 것을 관리 할 수 ​​있는지 여부는 다른 질문입니다. 플랫폼에 따라 다르게 스케일됩니다.

이것을 MySQL에서 수행 할 수 있습니까?

예, 쉽게.

1

난 당신이 옵션 2. 당신은 아마 각 항목에 한 표에 사용자를 제한 할 것이기 때문에, 어쨌든 투표 모델을 만들 필요가

을 위해 가지고한다고 생각합니다.

나중에에 성능 문제가있는 경우 항목, 항목 또는 카테고리에 항상 투표 수를 캐시 할 수 있습니다.

해당 번호를 업데이트하는 방법은 신중하게 고려해야합니다. 위의 모든 숫자를 자동으로 업데이트하는 표결로 인해 너무 많은 쓰기 작업이 발생할 수 있습니다. 또 다른 방법은 통계 저장 프로 시저를 주기적으로 실행하는 것입니다.

어쨌든, 실제 점은 - 입니다. 문제가 있다고 알 때까지는 최적화하지 마십시오..

관련 문제