기본 콘텐츠로 건너뛰기

라벨이 core인 게시물 표시

[ 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 로...

[ Solr ] 용어들 정리

Solr 를 사용하기 위해서는 몇 가지 용어들을 확인하고 이해해야 하기 때문에 간단하게 나름대로 정리하도록 한다. (현재 이해를 근거로 정리한 것이므로 향후 변경 또는 추가/삭제가 발생할 수 있다) 이 정리는 Solr Wiki의 Solr Teminology 를 기준으로 한 것이다. 발 번역을 한 것 + 무작정 이해한 것이 덧붙여져 엉뚱한 내용도 많이 포함되어 있을 수 있으므로 원문을 검토해서 이해해야 한다. ㅠㅠ SolrCloud SolrCloud 를 구성한다면 아래의 용어들에 혼동을 느끼기 쉽기 때문에 별도로 구분해서 정리해 놓는다. SolrCloud - Solr 에서 제공하는 분산 기능을 의미하고 고 가용성과 장애 복구 및 분산 인덱싱과 검색을 제공하는 아키텍처라고 이해하면 된다. Cluster - 클러스터는 Solr를 구성하는 모든 노드들의 집합을 의미한다. 클러스터는 하나의 Solr 인덱스를 서비스하기 위한 구성을 가진다. 즉, 단일 schema.xml 과 solrconfig.xml 을 공유한다. Node - 노드는 클러스터에 포함되는 각 논리적 서버(Solr 가 서비스되는 JVM 인스턴스 단위) 를 의미한다. 물리적인 서버에 하나의 노드가 존재할 수도 있고, 여러 개의 노드가 존재할 수도 있다. Partition - Solr 에서 관리하는 문서들을 특정한 단위 (일반적으로 Hash 기준으로 묶어서 처리) 로 분리한 하위 집합을 의미한다. 유사한 경우는 데이터베이스에서 하나의 대량 데이터를 가진 테이블을 여러 개의 세그먼트로 파티셔닝 하는 것과 같다. Collection - 컬랙션은 SolrCloud 클러스터에서 관리되는 논리적인 인덱스를 의미한다. 이 컬랙션은 하나 또는 그 이상의 Shard로 구성되고 설정 세트(Config Set) 와 연관되어 있다. 이 때 하나 이상의 Shard로 구성된 것을 분산 인덱스라고 한다. 보통은 이 컬랙션의 이름을 참조해서 분산 검색 에 필요한 각 Shard에 대한 관리용 파라미터로 사용...