[MONGODB] 데이터베이스로 루씬 (또는 SOLR) 대되는 NoSQL (MongoDB를)
MONGODB데이터베이스로 루씬 (또는 SOLR) 대되는 NoSQL (MongoDB를)
NoSQL의 운동은 문서 기반 데이터베이스를 기반으로 성장, 요즘 MongoDB를 살펴 보았다. 나는 루씬은 (SOLR의 사용자) 않는 것처럼, "문서"같은 항목을 처리하는 방법과 눈에 띄는 유사성을 발견했습니다.
그래서, 질문 : 왜 당신은 당신의 "데이터베이스"로 루씬 (또는 SOLR) 이상되는 NoSQL (MongoDB를, 카산드라, CouchDB를, 등)를 사용할까요?
내가 (그리고 나는 확실히 다른 사람이 오전) 답변에서 찾고 무엇 그들 중 일부 심층적 인 비교입니다. 그들이 다른 목적을 봉사 할 때의이, 모두 함께 관계형 데이터베이스 논의를 건너 보자.
루씬은 강력한 검색 및 무게 시스템과 같은 몇 가지 심각한 장점을 제공합니다. SOLR의 측면을 언급합니다 (SOLR는 곧 루씬에 야호를 통합하고 있습니다!). 당신은 저장 ID에 루씬 문서를 사용하고, 단지 MongoDB를 같이 같은 문서에 액세스 할 수 있습니다. SOLR로 믹스, 당신은 지금 WebService를 기반 부하 분산 솔루션을 얻을.
당신은 유사한 데이터를 저장하고 MongoDB의 확장 성 이야기 같은 속도 또는 memcached와 같은 아웃 - 오브 - 시저 캐시 프로 바이더의 비교에 던질 수 있습니다.
MongoDB를 주변의 제한에 memcached를 사용하여 생각 나게하지만 마이크로 소프트의 속도를 사용하고 MongoDB를 (내가 생각하는)을 더 그룹화 및 목록 수집 능력을 가지고 있습니다. 빨리 또는 확장 메모리에 데이터를 캐싱보다 더 가져올 수 없습니다. 심지어 루씬은 메모리 업체가 있습니다.
MongoDB를 (및 기타) 등 자신의 API의 사용의 용이성 등의 장점을 가지고 않습니다. 새로운 문서까지, ID를 생성하고 저장합니다. 끝난. 니스와 쉬운.
해결법
-
==============================
1.이것은, 내가 꽤 동안 숙고 무언가 좋은 질문입니다. 나는 나의 교훈을 요약한다 :
이것은, 내가 꽤 동안 숙고 무언가 좋은 질문입니다. 나는 나의 교훈을 요약한다 :
요약 : 검색 요구 사항이없는 경우, 몽고 간단한 및 강력한 접근 방식을 제공합니다. 검색이 제공하는 열쇠입니다 그러나, 당신은 하나 개의 기술 (SOLR / 루씬)을 고수하고 그것의 지옥을 최적화 떨어져 가능성이 더 나은 - 적은 움직이는 부품.
내 2 센트, 도움이되기를 바랍니다.
-
==============================
2.당신은 부분적으로 SOLR에서 문서를 업데이트 할 수 없습니다. 당신은 문서를 업데이트하기 위해 모든 필드를 다시 게시해야합니다.
당신은 부분적으로 SOLR에서 문서를 업데이트 할 수 없습니다. 당신은 문서를 업데이트하기 위해 모든 필드를 다시 게시해야합니다.
그리고 성능이 중요하다. 커밋하지 않으면, 성능 겪고있다을 할 때마다 커밋 경우, SOLR에 변경 사항이 적용되지 않습니다.
SOLR에는 트랜잭션이 없습니다.
SOLR는 이러한 단점이 있기 때문에, 약간의 시간이 NoSQL에 더 나은 선택입니다.
-
==============================
3.우리는 함께 MongoDB를하고 SOLR를 사용하고 그들은 잘 수행합니다. 나는 우리가 함께이 기술을 사용하는 방법을 설명 어디 당신은 여기 내 블로그 게시물을 찾을 수 있습니다. 여기에 발췌 :
우리는 함께 MongoDB를하고 SOLR를 사용하고 그들은 잘 수행합니다. 나는 우리가 함께이 기술을 사용하는 방법을 설명 어디 당신은 여기 내 블로그 게시물을 찾을 수 있습니다. 여기에 발췌 :
-
==============================
4.또한 어떤 사람들은 모든 인덱스가 SOLR에 저장 될 필요도 oplog 작업을 모니터링하고 SOLR에 관련 업데이트를 계단식으로 몽고에 SOLR / 루씬을 통합한다는 점에 유의하시기 바랍니다.
또한 어떤 사람들은 모든 인덱스가 SOLR에 저장 될 필요도 oplog 작업을 모니터링하고 SOLR에 관련 업데이트를 계단식으로 몽고에 SOLR / 루씬을 통합한다는 점에 유의하시기 바랍니다.
이 하이브리드 접근 방식을 정말 같은 전체 텍스트 검색 같은 기능을 가진 두 세계의 최고를 가질 수 있습니다 빠른 또한 쓰기 속도를 타오르는 한 할 수있는 신뢰할 수있는 데이터 저장소로 읽습니다.
이 설정에 대한 기술적 인 약간의 그러나 SOLR에 통합 할 수 있습니다 oplog 소매업 많이 있습니다. 이 문서에서 한 rangespan를 확인해보세요.
http://denormalised.com/home/mongodb-pub-sub-using-the-replication-oplog.html
-
==============================
5.모두 내 경험에서, 몽고은 간단, 솔직 사용에 좋은 곳입니다. 우리가 고통을 한 주 몽고의 단점은 예상치 못한 쿼리의 성능 저하입니다 (모든 가능한 필터 / 정렬 조합 몽고의 인덱스를 만들 수 없습니다, 당신이 간단 할 수 없습니다).
모두 내 경험에서, 몽고은 간단, 솔직 사용에 좋은 곳입니다. 우리가 고통을 한 주 몽고의 단점은 예상치 못한 쿼리의 성능 저하입니다 (모든 가능한 필터 / 정렬 조합 몽고의 인덱스를 만들 수 없습니다, 당신이 간단 할 수 없습니다).
그리고 여기 루씬 / SOLR 특히 FilterQuery 캐싱, 큰 시간을 우선하는 경우, 성능이 우수하다.
-
==============================
6.아무도 다른 사람을 언급하지 않기 때문에, 내가 SOLR 스키마를 적용하는 반면 MongoDB를이 스키마 작다는 것을 추가 할 수 있습니다. 문서의 필드가 변경 될 수 있습니다 경우에 따라서, 그 SOLR을 통해 MongoDB를 선택하는 이유 중 하나입니다.
아무도 다른 사람을 언급하지 않기 때문에, 내가 SOLR 스키마를 적용하는 반면 MongoDB를이 스키마 작다는 것을 추가 할 수 있습니다. 문서의 필드가 변경 될 수 있습니다 경우에 따라서, 그 SOLR을 통해 MongoDB를 선택하는 이유 중 하나입니다.
-
==============================
7.@ 마우 - 페르가 SOLR 4 언급 -는 점에서 관심이있는 사람들을 위해, LucidWorks "는 NoSQL에 검색 서버"로 SOLR 4를 설명하고하는 것은 http://www.lucidworks.com/webinar-solr-4-the-nosql에서 비디오있다 그들은되는 NoSQL (틱)에 세부 사항으로 이동 - 검색 - 서버 / 있습니다. 합니다 (-ish는 스키마가 실제로 동적 스키마되는 자신의 버전입니다.)
@ 마우 - 페르가 SOLR 4 언급 -는 점에서 관심이있는 사람들을 위해, LucidWorks "는 NoSQL에 검색 서버"로 SOLR 4를 설명하고하는 것은 http://www.lucidworks.com/webinar-solr-4-the-nosql에서 비디오있다 그들은되는 NoSQL (틱)에 세부 사항으로 이동 - 검색 - 서버 / 있습니다. 합니다 (-ish는 스키마가 실제로 동적 스키마되는 자신의 버전입니다.)
-
==============================
8.그냥 키 - 값 형식을 사용하여 데이터를 저장하려면 그 역 색인이 너무 많은 디스크 공간을 낭비하기 때문에, Lucene을하지 않는 것이 좋습니다. 그리고 데이터가 디스크에 저장하여, 그 성능은 때문에 레디 스 RAM에 데이터를 저장 레디 스만큼 느린되는 NoSQL 데이터베이스보다. 루씬의 가장 장점은 퍼지 쿼리가 지원 될 수 있도록이 쿼리의 대부분을 지원합니다.
그냥 키 - 값 형식을 사용하여 데이터를 저장하려면 그 역 색인이 너무 많은 디스크 공간을 낭비하기 때문에, Lucene을하지 않는 것이 좋습니다. 그리고 데이터가 디스크에 저장하여, 그 성능은 때문에 레디 스 RAM에 데이터를 저장 레디 스만큼 느린되는 NoSQL 데이터베이스보다. 루씬의 가장 장점은 퍼지 쿼리가 지원 될 수 있도록이 쿼리의 대부분을 지원합니다.
-
==============================
9.몽고의 연산 로그 꼬리처럼 타사 솔루션은 매력적이다. 어떤 생각이나 질문은 개발 / 아키텍처 관점을 가정하고 솔루션을 긴밀하게 통합 할 수 있는지에 대해 남아있다. 나는 (다소 투기 및 설명의 대상이 아니라 최대 개발 노력으로 현재까지) 몇 가지 이유에 대해이 기능을 긴밀하게 통합 된 솔루션을 볼 것으로 예상하지 않는다 :
몽고의 연산 로그 꼬리처럼 타사 솔루션은 매력적이다. 어떤 생각이나 질문은 개발 / 아키텍처 관점을 가정하고 솔루션을 긴밀하게 통합 할 수 있는지에 대해 남아있다. 나는 (다소 투기 및 설명의 대상이 아니라 최대 개발 노력으로 현재까지) 몇 가지 이유에 대해이 기능을 긴밀하게 통합 된 솔루션을 볼 것으로 예상하지 않는다 :
-
==============================
10.MongoDB를 아틀라스 곧 루씬 기반의 검색 엔진을해야합니다. 큰 발표는 이번 주 MongoDB를 월드 2019 컨퍼런스에서 이루어졌다. 이것은 높은 수익 MongoDB를 아틀라스 제품의 더 사용을 장려하는 좋은 방법입니다.
MongoDB를 아틀라스 곧 루씬 기반의 검색 엔진을해야합니다. 큰 발표는 이번 주 MongoDB를 월드 2019 컨퍼런스에서 이루어졌다. 이것은 높은 수익 MongoDB를 아틀라스 제품의 더 사용을 장려하는 좋은 방법입니다.
나는 그것이 MongoDB의 엔터프라이즈 버전 4.2로 롤백 그러나 그들의 온 프렘 제품 라인에 데려의 아무 소식이 없었다 것보고 기대했다.
여기에 더 많은 정보 : https://www.mongodb.com/atlas/full-text-search
from https://stackoverflow.com/questions/3215029/nosql-mongodb-vs-lucene-or-solr-as-your-database by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어디 CAP 정리에 서 MongoDB를합니까? (0) | 2019.12.08 |
---|---|
[MONGODB] MongoDB를 데이터베이스에서 삭제 모든 (0) | 2019.12.08 |
[MONGODB] MGO - 쿼리 성능이 느린 지속적으로 보인다 (500-650ms) (0) | 2019.12.08 |
[MONGODB] 옵션 검색 쿼리 매개 변수를 몽구스? (0) | 2019.12.08 |
[MONGODB] 어떻게되는 NoSQL 데이터베이스 (MongoDB의)에서 외래 키를 집행? (0) | 2019.12.08 |