2009-07-08 6 views
3

현재 SNOMED라는 의학 용어를 중심으로하는 프로젝트에서 작업 중입니다. snomed의 중심에는 길이가 350,000, 1.1mil, 1.3mil 인 세 개의 관계형 데이터 세트가 있습니다. 우리는 자동 완성/제안의 모양이나 형태를 원할 때 데이터 입력 부분에 대해이 데이터 집합을 신속하게 쿼리 할 수 ​​있기를 원합니다.큰 데이터 집합에 대한 빠른 조회 수행 : MySQL 메모리 (HEAP), Memcached 또는 다른 것

현재 개발 목적으로 MySQL MyISAM DB에 있지만 현재 메모리 옵션 중 일부를 가지고 게임을 시작하려고합니다. 현재 색인을 포함하여 30MB + 90MB + 70MB 크기입니다. MEMORY MySQL 엔진과 MemCached는 분명한 것들이었습니다. 그래서 제 질문은 이들 중 어느 것을 제안하겠습니까? 아니면 거기에 더 나은 것이 있습니까?

우리는 차이점이 있다면 주로 앱 수준에서 파이썬으로 작업하고 있습니다. 또한 곧 4GB DDR2로 이동할 수있는 소형 전용 서버 1 대를 가동 중입니다.

편집 : 추가 정보

우리는 빠른 제안 및 자동 완성 유지에 관심. 이러한 유형의 퀴어 (queires)에 적합 할만한 것이 바람직합니다. snomed의 각 용어는 일반적으로 몇 개의 동의어, 약어 및 선호되는 이름을 가지고 있습니다. 우리는이 데이터 집합을 무겁게 질의 할 것입니다 (인덱스를 포함하여 90MB 크기). 우리는 물건을 빠르게하고 관련성 높은 결과를 얻기 위해 거꾸로 된 색인을 만드는 것을 고려하고 있습니다. 용어의 상당 부분은 "Decidua basalis (몸체 구조)의 전체 코일 동맥"입니다. Lucene 또는 일부 다른 텍스트 검색이 적절할 수 있습니다.

+1

해결하려는 문제는 무엇입니까? 현재 디스크 기반 조회가 느려 집니까? MySQL을 사용하여 프로파일 링 할 수 있습니까? 자동 완료 비트를 빠르게 하시겠습니까? 그런 다음 Sphinx/Lucene과 같은 FTS 엔진이 필요할 수 있습니다. 특정 요구 사항에 따라 적절한 아키텍처가 변경 될 수 있습니다. –

+0

자세한 내용은 edit를 참조하십시오. 불행히도 Lucene 또는 유사한 제품에 대한 경험이별로 없습니다. 링크/문학에 감사드립니다. – nategood

답변

1

루씬으로이 작업을 수행하는 방법에 대한

를 참조하십시오. Lucene은 업계 표준 전체 텍스트 검색 라이브러리에 가장 근접합니다. 그것은 빠르며 양질의 결과를 제공합니다. 그러나 Lucene을 마스터하는 데는 시간이 필요합니다. 많은 하위 레벨 세부 사항을 처리해야합니다. 좀 더 쉬운 방법은 훨씬 쉽게 설정할 수있는 Lucene 하위 프로젝트 인 Solr을 사용하는 것일 수 있으며 JSON 출력을 제공 할 수 있습니다 (can be used for autocomplete).

토드가 말했듯이 스핑크스도 사용할 수 있습니다. 필자는 한번도 사용 해본 적이 없지만, MySQL과 고도로 통합 될 수 있다고 들었습니다. 스핑크스를 사용하여 자동 완성을 구현하는 방법을 찾지 못했습니다. 아마도 별도의 질문으로 게시해야합니다.

+1

자동 완성은 스핑크스에서 접두어와 중위 색인을 할 수 있음이 밝혀졌습니다. – nategood

2

전체 텍스트 검색을 원하는 것처럼 사용 사례가 있습니다. 나는 sphinx을 제안 할 것이다. 대용량 데이터 세트에서도 빠른 속도로 빠릅니다. 당신은 여분의 속도가 필요하면 memcached를 통합 할 수 있습니다.