기본 콘텐츠로 건너뛰기

라벨이 Distributed Search인 게시물 표시

[ Solr ] Collection 과 Core 간단 비교

Solr 를 사용하면서 항상 의미가 혼동되는 것 들이 존재하는데 그 중에서 Collection 과 Core 에 대해서 정리를 해 보도록 한다. (현재 이해한 것을 기준으로 정리한 것이라서 향후에 내용이 변경될 수 있다) Collection vs. Core 이 두 가지를 혼동되는 이유는 Solr 구성을 단일 노드로 할지 분산 노드로 할지에 따라서 구성이 다르고 그 구성에 따라서 의미가 달라지기 때문이다. 쉽게 생각해 보면 Collection 이라는 것은 물리적이 아닌 논리적인 인덱스 단위고, Core 는 물리적인 인덱스 단위라고 생각하면 된다. 이제 환경에 따라서 어떻게 다른 의미를 가지는지 정리해 보도록 하자. 분산 환경 분산 환경이라면 컬랙션을 운영하기 위한 클러스터를 구성하고 이 클러스터에 여러 개의 서버노드 (Solr 가 서비스 되는 ) Collection - 클러스터를 구성하고 있는 노드(물리적 및 논리적 서버들) 들에 걸쳐 분산되어 운영되는 논리적인 인덱스를 의미한다. Core - 분산 환경이 되면 컬랙션을 파티션으로 나누게 되며 각 파티션 별로 인덱스 데이터가 나뉘고 물리적으로 관리된다. 이 과정을 Sharding이라고 표현하는데 이렇게 분리된 파티션을 물리적으로 관리하고 서비스하는 단위가 Core 가 된다. 또한 Shard에 참여하는 Solr Instance 들이 여러 개일 경우는 복제본 (Replica)을 관리하는 단위도 Core 가 된다. 비 분산 환경 비 분산 환경이라는 것은 단독 서버로 Solr 가 운영되는 것을 기준으로 한다. 물론 하나의 서버에 여러 개의 노드 (여러 개의 Solr 구동 JVM 구성) 를 구성해서 분산 환경을 만들 수도 있지만 그 부분은 대상이 아니다. Collection - 여러 개의 컬랙션을 Solr Instance에 생성할 수 있고, 논리적인 인덱스와 물리적인 인덱스(Core) 가 1:1 로 매치 된다. Core - 물리적인 인덱스트를 서비스하는 단위로 컬랙션과 1:1 로