복붙노트

[MONGODB] elasticsearch v.s. MongoDB의 애플리케이션들을 필터링 [폐쇄]

MONGODB

elasticsearch v.s. MongoDB의 애플리케이션들을 필터링 [폐쇄]

이 질문은 이전 실험과 구현의 세부 사항으로 탐구에 건축 선택을 대한 것입니다. 그것은 elasticsearch의 v.s.의, 확장 성 및 성능 측면에서 적합성에 관하여 MongoDB를 다소 특정 목적을 위해.

및 필드의 값을 가지며, 물체의 몸체를 조회 할 수 가설 두 데이터 객체를 저장할. 그래서 아마도 임시 선택한 필드에 따라 객체의 하위 집합을 필터링, 모두를 위해 뭔가 적합합니다.

내 응용 프로그램 기준에 따라 오브젝트를 선택 주위를 회전한다. 그것은 하나의 필드 이상으로 동시에 필터링하여 객체를 선택할 것, 그 쿼리 필터링 기준은 일반적으로 많은 경우에 어쩌면, 1 개, 5 필드 사이 어디서나 포함하는 것, 다르게했습니다. 필터로서 선택 필드 반면 필드보다 많은 양의 서브 세트 일 것이다. 약 20 필드 이름이 존재하고, 각 쿼리는 그 전체 20 개 필드에서 몇 가지 필드를 기준으로 개체를 필터링하기위한 시도입니다 사진 (이 작거나 20 개 이상의 전체 필드 이름 일 수있다, 난 그냥의 비율을 보여주기 위해이 번호를 사용하는 기존의 모든 개별 쿼리 필터로 사용되는 필드 필드). 필터링은 선택된 필드의 존재에 의해뿐만 아니라, 예를 들어 필드 값으로 할 수있다 필드 A를 가진 객체 및 그들의 필드 B를 필터링하는 X 및 Y 사이에, 이들 필드는 C w와 동일하다.

필드가 어떤 순간에 필터링에 사용되는 측면에서 아무것도 또는 거의 일정이 없을 것입니다 반면에 내 응용 프로그램은 지속적으로 필터링 이런 종류의 일을하고있을 것입니다. 아마도 elasticsearch 인덱스에서 정의 될 필요가 있지만, 어쩌면 인덱스없이 속도가 MongoDB를의와 파에 있습니다.

데이터가 가게에 들어가기에 따라, 그것에 대해 특별한 사항이없는 .. 개체는 거의 삽입 된 후 변경되지 않을 것입니다. 아마도 오래된 객체는 내가 두 데이터 저장소는 내부적으로 또는 응용 프로그램 만든 쿼리로 물건을 삭제 만료 지원 가정하고 싶습니다, 삭제 될 필요가있다. (덜 자주, 특정 쿼리에 맞는 개체가 아니라 감소 될 필요가있을 것이다).

어떻게 생각해? 그리고,이 부분을 실험 있나요?

나는 작업의 종류, 두 개의 데이터 저장소의 각각의 성능 및 그것의 확장에 관심이 있어요. 이것은 건축 종로 질문의 종류, 그리고 완전히의 데모가 생각-OUT으로 제안이 아니라 아키텍처해야 상점 별 옵션이나 쿼리 초석의 세부 사항은 환영합니다.

감사!

해결법

  1. ==============================

    1.우선, 여기에 만드는 중요한 차이가있다 : MongoDB를이 범용 데이터베이스입니다, Elasticsearch는 Lucene을 바탕으로 분산 텍스트 검색 엔진입니다. 사람들은 범용 데이터베이스로 Elasticsearch를 사용하는 방법에 대해 이야기하지만, 그것의 원래 디자인 아니라는 것을 알고있다. 나는 범용되는 NoSQL 데이터베이스와 검색 엔진이 통합에 향하고 있다고 생각하지만 약자로, 두 사람은 두 개의 매우 다른 캠프에서 왔습니다.

    우선, 여기에 만드는 중요한 차이가있다 : MongoDB를이 범용 데이터베이스입니다, Elasticsearch는 Lucene을 바탕으로 분산 텍스트 검색 엔진입니다. 사람들은 범용 데이터베이스로 Elasticsearch를 사용하는 방법에 대해 이야기하지만, 그것의 원래 디자인 아니라는 것을 알고있다. 나는 범용되는 NoSQL 데이터베이스와 검색 엔진이 통합에 향하고 있다고 생각하지만 약자로, 두 사람은 두 개의 매우 다른 캠프에서 왔습니다.

    우리는 내 회사에서 MongoDB를하고 Elasticsearch 모두를 사용하고 있습니다. 우리는 MongoDB를 우리의 데이터를 저장하고 전용의 '전체 텍스트 검색 기능에 대한 Elasticsearch를 사용합니다. 우리는 우리가 탄성에 쿼리에 필요로하는 몽고의 데이터 필드의 하위 집합을 보낼 수 있습니다. 레코드 또는 레코드의 필드의 부분 집합이, 하루에 여러 번 업데이트 할 수 있으며,이 탄성에 그 기록의 재 인덱싱 호출 할 수 있다는 점에서 당신에서 우리의 유스 케이스 다릅니다은 우리의 몽고 데이터는 모든 시간을 변경합니다. 유일한 데이터 저장소는 우리가 선택 필드를 업데이트 할 수 없기 때문에, 우리에 대한 좋은 선택지가 아니므로 탄성하여 혼자 그 이유를 들어; 우리는 다시 인덱스의 '전체 문서가 필요합니다. 이이 루씬 탄성 뒤에, 기본 검색 엔진을 작동하는 방법입니다, 탄성 제한되지 않습니다. 귀하의 경우, 저장하면 기록이 변경되지 않습니다 사실은 그 선택을하는 데에서 당신을 저장합니다. 데이터 안전이 필요한 경우, 당신의 데이터 만 저장 메커니즘으로 Elasticsearch을 사용하는 방법에 대해 두 번 생각 것이라고 말했다 가졌어요. 그것은 어떤 점에서 거기 수 있지만 확실히 아직 거기에 내가 아니에요.

    속도의 측면에서뿐만 아니라 그것의 주문이 될 수있다 "필드는 어느 순간에 필터링에 사용되는 측면에서 거의 일정하게"가 어디에 귀하의 경우, 몽고의 쿼리 속도 파에 탄성 / 루씬입니다 크기 빠르고, 데이터 세트는 더 커지게 특히. 기본 쿼리 구현의 차이 거짓말 :

    옛 기록을 만료를 들어, 탄성이는 TTL 기능을 내장하고있다. 몽고는 버전 내가 생각하는 2.2로 발표했다.

    나는 그런 예상 데이터 크기, 거래, 정확성 또는 무엇 당신의 필터 모양을 같은 다른 요구 사항을 알 수 없기 때문에, 어떤 특정의 권고를하기 어렵다. 바라건대, 당신이 시작하는 데 여기에 충분하다.

  2. from https://stackoverflow.com/questions/12723239/elasticsearch-v-s-mongodb-for-filtering-application by cc-by-sa and MIT license