2012-01-11 4 views
1

Solr/Lucene의 역 색인 및 질의는 RDBMS 기능의 하위 집합, 즉 필터링, 정렬, 그룹 비, 페이징을 지원합니다. 트랜잭션과 조인을 지원하지 않기 때문에 이러한 의미에서 nosql 데이터베이스와 매우 가깝습니다.Solr/Lucene을 지속 기술로 사용

Hibernate-Search과 같은 프레임 워크를 사용하면 전체 텍스트 검색을 지원하면서 복잡한 개체도 인덱스에 매핑하고 기본 CRUD 작업을 수행 할 수 있습니다.

고려 사항 :

1) 나의 과거의 경험에서 처리량 쓰기, 루씬 지수의 쓰기 처리량은 RDBMS보다 훨씬 낮은

2 루씬 지수) 쿼리 속도 쿼리 속도를 비교해야한다, 만약 역 색인으로 인해 더 빠르지 않습니다.

3) 확장 성 replication 또는 Solr-cloud을 사용하여 해결할 수 있습니다.

4) 대용량 데이터 세트를 처리 할 수있는 능력 성능 문제없이 단일 JVM에서 15M + 문서와 함께 lucene 색인을 사용했습니다.

배경 : 나는 현재 SOLR와 MongoDB를 사용하고 그것을 충분히 잘 작동하고

. 그러나, 내가 그것을 싶습니다뿐 "간단한"아니다 인해 :

  1. 유지 몽고와 동기화 SOLR 지수 (하지 간단한 작업)
  2. 변환 < 자바 객체 사이 -> 몽고 < -> solr (SpringData과 SolrJ는 도움이되지만 여전히 좋지는 않습니다.) 하나는 내가 지금까지 수행 한 소규모 테스트에서

을 할 것입니다 경우

  • 왜이 "지속성"기술을 사용하여, 나는대로 SOLR/루씬을 사용하여에서 저를 방지 할 수있는 기술 도로 블록을 발견하지 않았습니다 고집. 그러나, 나는 또한 더 많은 정보없이 그러한 과감한 리팩토링을하기를 원하지 않는다. NoSQl과 Solr를 함께 가져 오는 시도가있는 Solandra과 같은 프로젝트도 알고 있지만 충분히 성숙하지는 않습니다.

    질문 전체 텍스트 검색은 주요 (하지만 유일한) 요구 사항이며,이 (RDBMS)를 기존의 이동-과 현대 (NoSQL에) 데이터 저장소에 다음 가능하다 응용 프로그램과

    그래서?

    위대한 참조 덕분에

    Atlassian (Jira) - Lucene Generic Data Indexing

  • +2

    , 그들은 "가되는 NoSQL 데이터 저장소로 변신"로 SOLR을 설명합니다. 따라서 적절한 조건에서 SOLR을 Cassandra 또는 MongoDB를 사용하는 것처럼 지속성 계층으로 사용할 수 있습니다. SOLR 포럼을 검색하면 프로덕션 환경에서이 작업을 수행하는 회사의 예가 있습니다. – nickdos

    +0

    고마워, 나는 실제로 몽고 밥을 지금까지 끈기로 사용하고있다. 한 가지 문제 그 말로는 움직이는 물체의 수를 줄일 수있는 가능성에 관심이 있습니다. – ltfishie

    +0

    @nickdos :이 토론 중 일부를 가르쳐 주시겠습니까? 감사! – ltfishie

    답변

    2

    나는 그들이 설명 골드 피처에서 일부 프리젠 테이션을보고 기억 생각 그 락스 사용하고 단지 루씬 요즘, 그들이 떨어졌다 (그것이 무엇이든) 이전 DB 및 사용 스토리지로 Lucene 너무. 그들은 행복했다.

    누군가가 멋지다고 확인하면 확인할 수 있습니다.

    편집 :

    http://blogs.atlassian.com/rebelutionary/downloads/tssjs2007-lucene-generic-data-indexing.pdf

    당신은 최신 SOLR 3.5 발표에 ... 또한, 실제 문제가 무엇인지 명확히 할 수 있습니다
    +0

    고마워,이 뜻이야? http://blogs.atlassian.com/rebelutionary/downloads/tssjs2007-lucene-generic-data-indexing.pdf. 나는 지금 그것이 무엇을 말해야 하는지를보기 위해 갈 것이다. – ltfishie

    +0

    정말 고마워요! 이 프리젠 테이션은 많은 우려를 없애고 실현 가능성을 입증합니다. – ltfishie

    +0

    예, 그게 전부입니다. 반갑습니다. – Persimmonium

    2

    루씬을 raticulin합니다 - 전체 텍스트 검색/정보 검색 라이브러리. Solr - Lucene 위에 구축 된 엔터프라이즈 검색 서버.

    지속성 대신 Lucene/Solr을 사용해서는 안되며 RDBMS를 대체 ​​할 수도없고 RDBMS와 비교하는 것도 좋은 방법이 아닙니다. 사과 & 오렌지를 비교합니다. 당신이 RDBMS와 비교하는 루씬의

    1. 지금까지 인덱스 처리 속도는 검색 스키마 구성에 따라 루씬 처리량에 영향을 미치는 여러 가지 요인이있을 수 있습니다, 직접적으로 비교하는 것은 옳지 않다 & 도움이되지 않습니다.

    2. 는 루씬은 분명히

    3. 당신이 구성, HW 등의 요인에 따라 달라집니다 얻을 정보 검색, 쿼리 속도에 대한 잘 알려진 & 최선의 데이터 구조 중 하나를 .. 가지고, 그 길을 가야하는 것입니다. 하나의 JVM에

    4. 취급 15M + 큰이지만,이 문서의 크기를 이해하지 않고 멀리 가지 않습니다, 기능 세트는

    지금 문제가있는 경우 CPU 코어 등 ..., JVM 메모리 사용 RDBMS가 진정한 확장 성 병목 현상이라면 Solist/Lucene을 통합하여 전체 텍스트 검색 기능을 제공 할 수있는 지속성 요구 사항을 기반으로 NoSQL 데이터 스토어를 사용할 수 있습니다. NoSQL이 급속도로 진화하고 있으므로 NoSQL과 Solr/Lucene를 통합하는 데 상당히 안정적인 어댑터를 찾을 수 없을 수도 있습니다.

    편집 :

    지금 문제가 업데이트되어,이 이미 잘이 질문에 NoSQL (MongoDB) vs Lucene (or Solr) as your database에서 논의된다. Lucene/Solr은 움직이는 부분이 너무 많아서 응용 프로그램에 따라 MongoDB를 대체 할 수 있습니다. 그러나 NoSQL Data Store는 완전히 분산되도록 설계되어야합니다. Solr은 Distributed Computing을 염두에두고 설계된 것이 아니기 때문에 스케일링으로 인해 기능이 제한되거나 손실되지는 않을 것이므로 수평 확장이 이루어질 때 Distributed Search limitations 제한 사항이 있습니다. . SolrCloud도 그 해답이 될 수 있습니다 ..

    +1

    답변 해 주셔서 감사합니다. 현재, 전체 텍스트 검색을 처리하는 Solr과 함께 지속성을 위해 Mongodb을 사용하여 정확히하고 있습니다. 그러나 Solr/Lucene의 성능과 성능을 검토 한 결과 움직일 수있는 부분을 줄이기 위해 가능한지 알아보기에 관심이 있습니다. 귀하의 포인트 1. 및 4. 전 Lucext의 성능을 mysql과 동일한 하드웨어에서 비교하고 있습니다. 전체 스키마 검색을 지원하는 간단한 스키마와 기본 분석기가 있습니다. – ltfishie

    +1

    명확하게하기 위해 질문을 업데이트했습니다. 나는 DB 솔루션을 다른 것으로 대체하려고하지 않고 Solr/Lucene만으로 충분하다면 방정식에서 제거하고 싶습니다. – ltfishie

    +0

    수정 및 링크 해 주셔서 감사합니다. – ltfishie