Cassandra의 컬럼 패밀리에 대한 실제 제한은 무엇입니까?


10

카산드라에서는 수천 개의 컬럼 패밀리를 갖는 것은 권장되지 않습니다 . 논쟁을 위해 2000을 가정 해 봅시다. 2,000 개가 넘는 유형의 데이터를 유지해야하는 경우 한 가지 방법은 여러 관련이없는 유형의 데이터를 각 열 제품군에 분할하는 것입니다.

예를 들어, 행 키가 고유 한 경우 단일 CF에 주문, 송장 및 고객이 포함될 수 있습니다 (예 : 오브젝트 유형이 접두어로 붙습니다. 즉 단일 CF의 키에 Order|1234및을 모두 포함 할 수 있음 Customer|1234). 두 번째 CF에는 Addresses, LineItems 및 OrderTypes가 포함될 수 있습니다. 이 접근 방식의 기본 가능성을 감안할 때 실제적인 한계는 무엇입니까? 예를 들어, 10,000 가지 유형의 객체를 모두 단일 CF에 넣는 데 어떤 문제가 있습니까? Cassandra wiki 에서 알 수 있는 한 CF 크기에는 제한이 없습니다.

답변:


6

나는 팬이 아닙니다. 열이 모두 정의 된 OrdersOrCustomers라는 관계형 테이블을 작성하는 것이 좋습니다. Cassandra의 스토리지 엔진 페널티는 후드 아래의 스파 스 셀 스토리지로 인해 약간 낮지 만 여전히 나쁜 습관입니다.

나중에 데이터를 매핑 / 축소하려고 할 때 물립니다. 각 작업은 모든 데이터를 스캔하고 실제로 관심있는 내용 (예 : 고객)과 일치하지 않는 행을 필터링해야합니다. 그리고 카산드라가 CF 당 추적하는 통계를 이해하는 행운을 빕니다. ( "이 CF는 주문 데이터로 인해 또는 응용 프로그램 세션과 결합 된 고객 세션으로 인해 내 응용 프로그램의 80 %의 소스를 읽습니까? 아니면 다른 5 가지 데이터 유형을 읽었습니까?")

수만 또는 수십만 개의 CF가 절대적으로 필요하다면? 그럼에도 불구하고 필자는 이런 데이터 모델을 절단하는 것보다 경기장 할당없이 Cassandra를 실행하려고합니다.


답변 주셔서 감사합니다, 조나단 마지막 문장을 이해하려면 투기장 할당을 읽어야합니다. 아레나 할당을 사용하는 구성 옵션입니까?
앤드류 스완

또는 오늘날 투기장 할당이 Cassandra로 구워 졌다면, 구성 가능한 기간 내에 액세스하지 않은 컬럼 계열의 투기장을 할당 해제하는 것이 얼마나 어려울까요? 이것에 대해 JIRA 티켓을 기록 할 가치가 있습니까?
앤드류 스완

1
Cassandra는 이미 메모리 압박을 완화하기 위해 플러싱에 대해 현명합니다. 문제는 모든 것이 활성화 된 최악의 시나리오에서 발생합니다.
jbellis

어떤 경우에 두 번째 링을 갖는 유일한 솔루션입니까?
앤드류 스완
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.