2010-12-04 4 views
2

내 네트워크에있는 모든 사용자의 관계 목록이 포함 된 단일 friendRelations 테이블을 유지하는 대신 네트워크의 각 사용자에 대해 개별 프로필 테이블을 만드는 것이 좋습니다 people & 사용자가 따르기로 선택한 그룹. 이렇게하면 조사가 더 빠를 것입니다 ... 어떤 제안이라도 대단히 감사하겠습니다 ... !!소셜 네트워크의 친구 관계

+4

실제로는 끔찍한 생각입니다. 필요한 경우 적절한 색인 및 캐싱을 제공하면 성능 문제를 해결할 수 있습니다. –

+0

모든 페이지에서 한 명의 사용자가 사용하는 노트북을 사용해보십시오. 페이지에서 각 줄을 채우는 것보다 페이지를 넘기는 데 시간이 오래 걸립니다. 세르게이 여러 테이블이 옳은 것은 끔찍한 생각입니다. –

+0

내 지식을 업데이트 해 주셔서 고맙습니다. –

답변

5

데이터베이스는 일반적으로 색인 생성에 매우 적합하므로 (색인을 생성하는 데 적합한 열을 제공한다고 가정) 특정 사용자에 대한 검색은 어떤 경우에도 빠르다는 것을 기억하십시오. bazillion 테이블을 생성하는 것이 전반적으로 느려질 수 있습니다.

+0

나는이 네트워크가 (나는 백만 (s) ..라고 말할 것이다) 큰 사용자 기반을 가질 것으로 기대하고 있으며 단일 사용자가 평균을 가지고 있다고 가정합니다. 50 명의 친구, 테이블의 크기가 50 수백만 행을 초과 할 수 있습니다. 사용자의 친구 목록을 계산하기 위해 5 천만 행, inorder가있는 단일 '친구'테이블보다 더 나은 해결책이 필요하다고 생각하지 마십시오. NoSQL 솔루션을 추천 하시겠습니까? 아니면 MySQL이이 문제 및 후속 문제 (예 : 뉴스 피드 생성을위한 게시물을 계산할 '게시물'테이블)와 같은 후속 문제를 처리 할 수 ​​있습니까? 답장을 보내 주셔서 감사합니다. –

+1

가장 좋은 방법은 먼저 성능 테스트를하는 것입니다. 당신의 데이터베이스가 그 크기의 테이블로 만족스러운 성능을 가지면 당신은 끝난다. 그렇지 않은 경우 다른 데이터베이스를 사용해보십시오. 일부는 큰 테이블을 사용하는 다른 데이터베이스보다 성능이 좋습니다. 색인 생성에주의하십시오. 색인은 핵심 항목입니다 (말장난을 핑계로 함). 다른 데이터베이스가 여전히 작동하지 않으면 다른 옵션을 살펴보십시오. –

+0

정말 고마워요! –

-2

정보 검색을위한 데이터베이스 쿼리에 성능 문제가있는 경우 매우 빠른 Vertica 데이터베이스를 사용하는 것이 좋습니다.

0

이것은 아마도 존재하지 않는 문제를 제거하기위한 과감한 설계 결정처럼 보입니다. 데이터베이스가 어떻게 구성되고 액세스되는지에 대해 거의 알지 못하면 이것이 잘못된 결정인지 (아마도) 또는 비즈니스 요구 사항이 고유하고 이것이 해결책인지 (가능성은 없음) 말하기가 불가능합니다. 내 권장 사항은 필요한 정규화 수준을 결정하는 것이며, 아직 존재하지 않는 성능 문제는 제거하지 않는 것입니다.

Should I normalize my DB or not?

+0

감사합니다. 입력에 대한 Geo가 너무 많습니다. –

+0

감사합니다. 나는이 네트워크가 (나는 백만 (s) ..라고 말할 것이다) 큰 사용자 기반을 가질 것으로 기대하고 있으며 단일 사용자가 평균을 가지고 있다고 가정합니다. 50 명의 친구, 테이블의 크기가 50 수백만 행을 초과 할 수 있습니다 ... 너는 생각하지 않는다. 사용자의 친구 목록을 계산하기 위해 5 천만 행, inorder의 단일 '친구'테이블보다 더 나은 해결책이 필요하다. NoSQL 솔루션을 추천 하시겠습니까? 아니면 MySQL이이 문제 및 후속 문제 (예 : 뉴스 피드 생성을위한 게시물을 계산할 '게시물'테이블)와 같은 후속 문제를 처리 할 수 ​​있습니까? 답장을 보내 주셔서 감사합니다. –

관련 문제