2010-03-30 3 views
2

수백 개의 필드 (이름, 성별, 선호하는 애완 동물 등)가있는 수백만 개의 사용자 프로필이 있다고 가정합니다.고성능 쿼리 - 제안하십시오 제발

프로필을 검색하고 싶습니다. x와 y 사이에 나이가

Ex.:All 프로파일 데이터베이스와

당신이 선택할 것 ..., 나비를 좋아하는 초콜릿을 싫어한다?

Facebook과 같은 부하가 있다고 가정합니다. 속도는 필수입니다. 오픈 소스가 선호됩니다.

나는 카산드라, HBase를, 몽고, MySQL의에 대해 많이 읽었습니다 ... 그냥

+3

) 같은 ... 당신이 생각하는 모두가 열이 인덱싱이다,하지 어떤 다른 열이 그래서

...와 함께 색인, 페이스 북 ... 그것은 친구를 갈 길이 방법 다른 행과 공유되는 수백 개의 필드는 일부 정상화의 이점을 누릴 수 있음을 의미합니다. –

답변

1

그것의 모든 효과적인 인덱스를 사용하는 방법에 대한 ..... 결정할 수 없습니다. 특별한 쿼리가있는 경우 해당 쿼리의 인덱스를 만듭니다.

Ex. 색인 만들기 age_lovebutterflies_hateschoclate

페이스 북과 같이 트래픽이 많은 사이트를 사용하는 경우 SQL 최적화보다 더 많은 능력이 필요합니다. 예 : memcaching, vespa 또는 lucene/solr과 같은 검색 엔진을 클러스터로 구현했습니다. 로드 밸런서, 64GB 램, RAID 디스크 및 다른 많은 서버 기술을 포함한 여러 서버 ...

mysql, postgresql, sqlite 및 oracle과 같은 데이터베이스의 문제점은 정적 검색에 대해서는 인덱스가 괜찮지 만 유연하지 않습니다. 예 : 색인되지 않은 열에 대한 검색을 결합하려면 색인이 사용되지 않습니다. 전의. 성별 또는 다른 위치와 같은 추가 매개 변수를 포함하는 경우 더 많은 색인을 생성해야합니다 ... lucene/solr 및 실제 검색 엔진은 이러한 방식으로 훨씬 효과적입니다.