2016-11-05 11 views
2

장래에 컬렉션의 크기가 커질 수있는 응용 프로그램을 테스트 중이며 경우에 따라 64k가 한계에 도달했습니다.올바른 카산드라 수집 한도는 무엇입니까?

이 질문은 공식 문서에 모순이있는 것처럼 수집 크기 제한에 관한 것입니다. this 문서 당으로

:

당신이 모음에 64 개 K 이상의 항목을 삽입하는 경우에만 64K 그들 의 데이터 손실의 결과로, 쿼리 할 수 ​​있습니다. 2B (2^31);

  • 컬렉션 (목록) : 수집 크기 당신이 바로 그 페이지의 CQL Limits link로 클릭하면

은 그러나 당신이 참조 값 크기 : 65535 (2^16-1) (Cassandra 2.1 이상, 기본 프로토콜 v3 사용)

  • 컬렉션 (세트) : 컬렉션 크기 : 2B (2^31); 값 크기 : 65535 (2^16-1) (Cassandra 2.1 이상, 기본 프로토콜 v3 사용)

  • 컬렉션 (지도) : 컬렉션 크기 : 2B (2^31); 키의 수 : 65535 (2^16-1); 값의 크기 : 65,535 (2^16-1) (산드 2.1 이상 사용 원시 프로토콜 V3)가 하나

  • 너무? 컬렉션 당 64k 항목, 컬렉션 당 20 억 항목? 또는 2 억이됩니다 쓰기 가능 64k 이상 읽을 수 없습니까?

    미리 감사드립니다.

    +0

    이 항목은 약간 주제를 벗어나지 만 컬렉션을 업데이트하려면 과도한 삭제 표시를 방지하기 위해 컬렉션을 구현하는 방법에주의해야합니다. 자세한 내용은 https://support.datastax.com/hc/en-us를 참조하십시오./articles/205368125 – markc

    +0

    관찰에 감사드립니다. @markc - 모든 설정/목록 /지도 관련 검색어에 대해서만 업데이트를 사용합니다. 그것은 더 자연스러운 것처럼 보입니다. –

    답변

    3

    어떤 cassandra 버전을 사용하고 있습니까?

    해당 문서는 2.0 및 2.1 용입니다. 이 경우 컬렉션에 넣을 수있는 요소 수에 제한이 있습니다. 64k입니다. 네이티브 프로토콜 v3을 사용하는 경우 각 요소의 크기는 2b가 될 수 있습니다. 이것을 확인하십시오 https://issues.apache.org/jira/browse/CASSANDRA-5428

    하지만 cassandra 2.2 이상을 사용하는 경우 컬렉션에 20 억 개의 항목을 삽입 할 수 있습니다. 여기 링크입니다. http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCollections.html

    () 그 컬렉션에 많은 항목을 삽입하면 안됩니다. 최대 요소 삽입 제한을 치기 전에 성능 문제를 해결할 수 있습니다.

    Collections cannot be "sliced"; Cassandra reads a collection in its entirety, impacting performance. Thus, collections should be much smaller than the maximum limits listed. The collection is not paged internally.

    당신이 그 경우 컬렉션에서 항목의 대부분을 가지고있는 경우

    더 이상 적절하지 않으며 (클러스터링 열) 특정 테이블을 사용해야합니다.

    이 정보가 도움이되기를 바랍니다.

    +0

    답변을 주셔서 감사합니다, 이것은 내가 추측 한 것입니다.하지만 확실히하고 싶었습니다. 필자가 제시 한 두 문서 링크는 Cassandra 3.1에 대한 것으로, 문서 갱신이 필요함을 의미합니다. –

    2

    cassandra 2.1을 사용하는 경우 cassandra 컬렉션에 64,000 개 이상의 itens을 추가 할 수 없습니다. 이 버전에서, cassandra는 요소를 색인하기 위해 16 비트를 사용합니다. 그렇지 않으면 단일 항목이 64k (크기) 또는 2B (프로토콜에 따라 다름)가 될 수 있습니다.

    +0

    Oi Gustavo. 보아 noite. 이거 확실하니? 카산드라 문서는 모호하거나 너무 명확하지 않은 것처럼 보입니다. 왜 그들은 더 높은 한계 (Cassandra 2.1 및 이후 버전, 원시 프로토콜 v3 사용)가있는 것으로 버전 번호에 주석을 달았습니까? 다시 한번 감사드립니다. –

    +1

    사실, 그것은 카산드라의 버전에 달려 있습니다. 이것은 @ root545와 마찬가지로 cassandra 2.1에 해당합니다. 나는 내 대답을 편집 할 것이다. –