2011-07-28 3 views
1

나는 레일스에 비교적 익숙하지 않다.레일 - 큰 대 분산 테이블

나는 Devise를 통해 사용자 모델을 보유하고 있습니다. 별도의 프로필 모델에서 사용자에게 필요한 모든 추가 필드가있는 것이 더 효율적인지 궁금합니다.

새 모델을 만들고 해당 모델에 has_one 연관을 사용하는 것과 유사한 상황이 나타납니다. 그러나 User 모델 내의 사용자에 속한 모든 특성을 가진다면 청소기처럼 보일 수도 있습니다. 그런 상황에 어떻게 대처합니까? 애플리케이션 성능에 어떤 영향을 미칩니 까?

성능면에서 특히 has_one 관계를 생성 할 때의 장점과 단점에 대해 자세히 설명해 줄 수 있습니까?

답변

0

나는 또한뿐만 아니라 레일에 비교적 새로운 오전, 그러나 이것은

레일에 협회의 장점은 내 생각은 매우 명백하다 ... 내 걸릴 것입니다. 이 특별한 경우에 나는 어느 쪽이라도가는 것이 좋다라고 생각한다. 여기에서 고려해야 할 몇 가지가 있습니다 ...

당신이 has_one 관계를 사용하는 경우, 당신이 프로필을 참조 할 때이 비슷한으로 끝날 것이라는 점을 기억해야한다 : 충분히

user = User.first 

puts user.profile.first_name 
puts user.profile.age 

간단한, user.first_name과 같은 것을 원하면 해당 메소드를 프로파일 모델에 위임해야합니다. 이것은 모두 선호하는 문제입니다.

+1

ActiveRecord는 관련 데이터를 필요로하지 않고 캐싱하지 않는 한 연관성을 끌어 내지 못하는 것에 대해 상대적으로 지능적입니다. 그것에 대해 생각해 볼 수있는 또 다른 방법은 사용자 테이블에 모든 추가 데이터가있는 경우 누군가가 시스템에 로그인하려고 시도 할 때마다 데이터에 액세스하고 쿼리하는 것입니다. 내 경험에 의하면, 사용자 테이블에있는 모든 것들이 연관성보다 훨씬 더 많이 귀하의 앱을 습격하게 만듭니다. 또한 모든 데이터를 참조하면 메모리가 2 배인 75,000 개 개체와 메모리가 1/2 인 개체가 15 만 개가됩니다. – rmw