2013-07-22 3 views
2

Google은 필터링 된 검색을 많이하는 1M 행의 광고 데이터베이스를 보유하고 있습니다. 우리는 아무런 키워드 검색도하지 않으며, 가격, 객실 수, 위치 등을 기준으로 행을 필터링합니다.MySQL 검색 및 검색 도구 (CloudSearch, Sphinx, Solr ..) 비 문자 검색의 경우

Google은 키워드 검색을 수행하지 않으므로, 우리가 어쨌든 검색 서버를 사용해야하는지 의문을 제기합니까?

의견이 있으십니까?

+0

아마도 '검색 서버'가 가치있는 투자일지도 모르는 이유에 대해 자세히 설명하는 것이 도움이 될 것입니다. – barryhunter

+0

db 서버에 대한 검색이 많이있을 것이므로 db에서 io를 질식시키지 않아야합니다. – hakin

+0

그래서 실제로 '요구 사항'은 일부 요청을 '오프로드'하는 것입니다. 슬레이브 데이터베이스 서버를 설정하면된다. – barryhunter

답변

1

대부분의 검색 서버는 데이터베이스보다 더 빠르게 대량의 데이터를 검색하고 필터링합니다. 따라서 더 나은 성능이 필요한 경우 검색 서버를 사용하십시오.

고려해야 할 또 다른 사항은 개발 비용입니다. 모든 검색 서버는 검색 서버를 구성하고 시스템과 통합하려는 노력이 필요합니다.

저는 스핑크스에 경험이 있으며 나는 그것을 좋아합니다. 이제 실시간 인덱스를 ORM과 통합하여 데이터베이스 필터링을 피하려고합니다. 스핑크스는 데이터를 검색하고 필터링하고, 발견 된 ID를 반환하며, InnoDB는 ID로 데이터를 선택합니다 (MySQL과 특히 InnoDB 테이블은 정말 빠릅니다).

"DB 성능만으로도 충분합니까?" 결정을 내린다.

2

MySQL의 전체 텍스트 검색이 극히 열악하고 몇 가지 이유 때문에 기능이 제한되어 있기 때문에 일반적인 MySQL 관련 질문입니다. 귀하가 언급 한 다른 검색 기술 중 일부는 검색 기능, 기능 및 속도면에서 크게 향상 될 것입니다. 단점은 별도의 시스템을 유지하고 인덱스를 동기화 상태로 유지해야하므로 고통/고가/오류가 발생하기 쉽습니다.

실제로 이것은 PostgreSQL이 광범위하게 구성 가능하고 매우 빠르게 검색 기능에 내장되어 있기 때문에 실제로 빛을 발합니다. 인덱스를 최신 상태로 유지하는 것은 간단한 데이터베이스 트리거를 사용하여 수행 할 수 있습니다.

검색이 시스템의 중요한 부분이고 검색하는 모든 것이 데이터베이스에 있으면 PG 로의 이동이 전용 검색 엔진을 배우거나 유지하는 것보다 훨씬 더 중요 할 수 있습니다.