카산드라 문서는
다음과 같은 상황에서는 색인을 사용하지 마십시오.
- 카디널리티가 높은 열에서는 소수의 결과에 대해 많은 양의 레코드를 쿼리하기 때문입니다. 아래의 카디널리티 열 인덱스 사용 문제를 참조하십시오.
계속됩니다
많은 고유 값을 갖는 높은 카디널리티 열에 인덱스를 만들면 필드 간 쿼리시 결과를 거의 찾지 못합니다. 10 억 곡의 표에서 아티스트 대신 작가 별 노래 (일반적으로 각 노래마다 고유 한 값)를 찾는 것이 매우 비효율적 일 수 있습니다. Cassandra 내장 색인을 사용하는 대신 테이블을 색인 형식으로 수동으로 유지 보수하는 것이 더 효율적일 것입니다. 고유 한 데이터를 포함하는 열의 경우 인덱스 된 열이있는 테이블에 대한 쿼리 볼륨이 보통이고로드가 일정하지 않은 한 편의상 인덱스를 사용하는 것이 성능 측면에서 좋습니다.
그러나 실제로 질문에 대답하지 마십시오. 왜 비효율적입니까? "테이블을 인덱스 형식으로 수동으로 유지 관리하는"의미가 무엇인지 모르겠습니다. 그러나 "... 쿼리 볼륨이 중간 정도 인 한 편의상 인덱스를 사용하는 것은 때때로 성능 측면에서 우수합니다."
언제 어디서나 PK를 사용하도록 지시하려고합니까? 비효율이란 무엇입니까? 인덱스에 도달하는 쿼리는 클러스터의 모든 ¹ 노드를 쿼리해야하며 각 노드는 로컬 인덱스에서 조회를 수행하고 결과는 집계됩니다. 로트의 가장 느린 노드를 기다려야하므로 네트워크 대기 시간을 지불하는 것을 제외하고는 반드시 비싸지 않습니다 (각 인덱스 조회가 상당히 저렴해야 함). 여기에 빠진 것이 있습니까?
그러나 드물지만 거의 고유하지 않은 속성으로 찾아보아야 할 bajillion 항목이있는 컬렉션이있는 경우… 이것이 적절한 용도입니까?
¹ 모두? 복제가 3의 복제 팩터에 대해 클러스터의 1/3에 도달 할 수 있음을 의미하는 경우 IDK?