2016-09-12 8 views
1

저는 Cassandra를 처음 접했을뿐입니다. Datastax 과정을 통해 배웠지 만 여기서는 버킷에 대한 정보를 찾지 못했습니다. 인터넷에서, 그리고 응용 프로그램에서 버킷을 사용하여 분할해야합니다. 내 데이터.Cassandra 버킷 분할 파티션 크기 조정

대책을 세울 수있는 도구가 있습니다. 매일 파티션 (파티션 키로 타임 스탬프)을 분할하면 파티션에 대해 100MB의 한계에 쉽게 도달 할 수 있으므로 약간 위험 할 수 있습니다. 각 측정 값은 ID로 식별 된 특정 객체와 관련됩니다. 그래서 양동이를 사용하고 싶지만 어떻게 해야할지 모르겠습니다. 나는 카산드라 3.7 여기

을 사용하고

내 표는 대략의 모양을하는 방법입니다

CREATE TABLE measures (
    instrument_id bigint, 
    day timestamp, 
    bucket int, 
    measure_timestamp timestamp, 
    measure_id uuid, 
    measure_info float, 
    object_id bigint, 
    PRIMARY KEY ((instrument_id, day, bucket), measure_timestamp, measure_id) 
); 

내가 파티션 키와 OBJECT_ID를 추가하는 생각했지만, 그때는 "흐름을 풀어 어떤 수단에 의해 만들어지는 "여러 가지 측정 방법"은 특정 시간이나 특정 시간에 도구로 만들어진 모든 측정을 보는 것입니다.

  • 그렇다면 특정 악기에 대한 하루의 모든 레코드를 요청할 때 많은 양동이가 있다면 어떻게해야합니까?
  • 파티션 제한을 400 000 행으로 만들려면 데이터를 삽입 할 때 버킷에 데이터를 삽입해야 할 때 어떻게 알 수 있습니까?
  • 거기에 버킷의 개수를 아는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

1

요구 사항에 초점을 맞추고 스키마 모델로 돌아 가야합니다. 귀하의 경우 하루에 몇 가지 조치를 취할 수 있습니까? 각각 하나 하나가 400k 측정치보다 적 으면 버킷을 사용하지 않고 이미 완료 한 것입니다. 계측기가 각각 최대 10M 측정을 수행 할 수 있다면 N = 10M/400k 버킷이 요구 사항을 충족시키는 데 충분해야합니다. N 버킷을 가정하면 특정 계측기에서 오는 모든 측정 값을 쿼리해야 할 때 쓰기 중에 측정 값을 계산할 수있는 경우가 아니면 N 개의 쿼리를 각 버킷에 하나씩 수행해야합니다. 그러면 버킷을 변경할 수 있습니다. 양동이가 가득 찼습니다. 내 말은, 첫 번째 400k 측정 값을 버킷 0에 쓰고 두 번째 400k 측정 값을 버킷 1에 쓰는 것입니다. 그런 다음 KB 버킷을 데이터를 삽입 한 횟수를 추적하고 N 대신 K 쿼리 만 수행해야합니다. 그렇게하면 불균형 버킷 (및 파티션)을 갖지만 가장 적은 수의 쿼리로 결과를 얻을 수 있습니다. 밸런스 버켓 방식을 선호하는 경우 균일하게 분산 된 임의 버켓 번호로 각 쓰기를 수행 할 수 있지만 특정 기기의 모든 데이터를 가져 오려면 N 개의 쿼리를 모두 수행해야합니다.

+0

답장을 보내 주셔서 감사합니다. 것은 악기가 얼마나 많은 측정을 할 수 있는지 모른다. 개체를 감지 할 때 개체 수가 제한되지 않습니다. 하지만 당신이 말하는대로 할 수 있습니다. :) 쓰여진 버킷의 수를 "계산"하는 '기본 제공'방법이 없으므로 어떻게 할 수 있습니까? 데이터를 삽입 할 때 어떻게 작동합니까? – Miwauke

+0

@Miwauke 악기의 속도 *를 모르십니까? 하나의 계측기가 초당 하나의 측정 값 * 처리량 *을 갖는다면, 어느 날 하루에 계측기 당 하루 최대 측정치는 ** M = 86400 **입니다. * 처리량 *이 1 초당 1 초 측정 인 경우 기기 당 하루 평균 측정치는 M = 86M **입니다. 정확한 숫자는 필요하지 않습니다. (야구계) 추측은 괜찮을 것입니다.** 당신은 ** 데이터를 작성하는 버킷을 결정합니다. 각 계기는 자체 측정 값을 계산해야하며 버킷 당 올바른 측정 계수 *를 사용하여 올바른 버킷에 적절하게 작성해야합니다. – xmas79

+0

아직 악기의 속도는 모르지만 조사 할 수는 있습니다. 답해 주셔서 감사합니다. 정확한 양동이에 글을 쓰려면 "모든 것"을 추적해야합니다. 이것이 제가 알고 싶었던 것입니다. 하나의 버킷에있는 항목 수를 계산하는 가장 좋은 방법은 무엇입니까? 어딘가에서 카운터 열을 사용해야합니까? – Miwauke