이 질문은 실험과 구현의 세부 사항을 파고 들기 전에 아키텍처를 선택하는 것에 관한 것입니다. Elasticsearch와 MongoDB의 확장 성 및 성능 측면에서 다소 구체적인 목적에 대한 적합성에 관한 것입니다.
가설 적으로 필드와 값이있는 데이터 개체를 저장하고 해당 개체의 본문을 쿼리 할 수 있습니다. 따라서 선택한 임시 필드에 따라 객체의 하위 집합을 필터링하는 것이 두 가지 모두에 적합한 것으로 추정됩니다.
내 응용 프로그램은 기준에 따라 객체 선택을 중심으로 진행됩니다. 하나 이상의 필드로 동시에 필터링하여 객체를 선택하고 다르게 말하면 쿼리 필터링 기준은 일반적으로 1 ~ 5 개의 필드로 구성되며 경우에 따라 더 많을 수 있습니다. 반면 필터로 선택된 필드는 훨씬 더 많은 필드의 하위 집합이됩니다. 20 개의 필드 이름이 존재하고 각 쿼리는 전체 20 개 필드 중 몇 개의 필드로 개체를 필터링하려고 시도합니다 (기존 필드 이름이 20 개보다 작거나 많을 수 있음). 모든 이산 쿼리에서 필터로 사용되는 필드). 필터링은 선택한 필드의 존재 여부뿐만 아니라 필드 값 (예 : 필드 A가있는 객체 필터링) 및 필드 B가 x와 y 사이에있을 수 있습니다.
내 응용 프로그램은 이러한 종류의 필터링을 지속적으로 수행하는 반면 어떤 필드가 필터링에 사용되는지는 거의 또는 거의 일정하지 않습니다. 탄력적 검색에서는 인덱스를 정의해야하지만 인덱스가없는 경우에도 속도는 MongoDB의 속도와 비슷합니다.
상점에 들어가는 데이터에 따라 그에 대한 특별한 세부 사항은 없습니다. 삽입 된 후에는 거의 변경되지 않습니다. 아마도 오래된 객체를 삭제해야 할 수도 있습니다. 두 데이터 저장소 지원이 내부적으로 또는 응용 프로그램에서 쿼리를 작성하여 항목 삭제를 만료한다고 가정하고 싶습니다. 덜 자주, 특정 쿼리에 맞는 객체도 삭제해야합니다.
어떻게 생각해? 그리고이 측면을 실험 했습니까?
이러한 종류의 작업을 위해 두 데이터 저장소 각각의 성능과 확장성에 관심이 있습니다. 이것은 일종의 아키텍처 설계 질문이며, 잘 설계되어야하는 매장 별 옵션 또는 쿼리 초석의 세부 사항은 완전히 고려 된 제안의 시연으로 환영받습니다.
감사!