2015-01-12 3 views
0

많은 양의 데이터 (예 : 400 열과 5.000.000 ~ 40.000.000 행)를 저장하는 테이블을 만들어야합니다. 1에서 위로 세는 카운터 "카운터"가 있습니다. 지금이게 내 기본 키입니다. 다른 변수는 int, float 및 varchar 유형 및 반복입니다.Cassandra 범위 쿼리 cql

데이터베이스 비교를 위해이 작업을 수행해야하므로이 특정 문제에서 더 잘할 수있는 다른 데이터베이스가있을 수 있지만 Cassandra를 사용해야합니다.

이 테이블에서 일부 범위 쿼리를 실행하고 싶습니다. 쿼리는 다음과 같아야합니다.

SELECT 카운터, val1, val2, val3 FROM 테이블 여기서 카운터> 1000 AND 카운터 < 5000;

도 있 다른 필터 파라미터 :

val54 ... AND = 'OK';

"카운터"가 PK이기 때문에 이것이 카산드라의 문제라고 생각합니다. 나는 토큰() 함수를 실행하려고 시도 할 것이지만 이것은 느릴 것이라고 생각한다.

지금 나는 카산드라의 데이터 모델링에 대해 배우고 있지만 카산드라의 경험을 가진 누군가가 테이블을 구성하고 쿼리를 가능하고 빠르게 만드는 방법과 같은 몇 가지 힌트를 얻었 으면 좋겠습니까? 아마도 내가 배워야 할 몇 가지 주제 또는 저를 도울 링크가있을 것입니다.

좋은 일이, 프리드리히

+0

근본적으로 원래 문제가 무엇인지를 밝히지 않고 관계형 데이터베이스를 사용하여 문제가 어떻게 해결되었는지를 설명하고 있습니다. 관계형 솔루션을 사용하여 분산 모델로 직접 이식하려고하면 제대로 작동하지 않습니다. 예를 들어 Cassandra에서는 일반적으로 증가하는 인덱스 대신 시계열을 사용하여 항목을 저장합니다. Cassandra는 파티션 내에서 범위 쿼리를 수행 할 수 있지만 실제 요구 사항이 무엇인지는 분명하지 않습니다. –

+0

답변 해 주셔서 감사합니다. 시계열을 사용하면 쿼리가 가능하거나 더 쉬울까요? 차이는 보이지 않지만 이것이 가능할 것입니다. – Friedrich

+0

하나의 파티션에 데이터를 넣고 쿼리를 수행 할 수 있습니까? 내 요구 사항은 다음과 같습니다. 카산드라와 MSSQL에서 데이터베이스를 만든 다음 카산드라에 문제가있는 경우에도 쿼리를 비교하고 싶습니다. 나는 당신의 대답을 듣고 싶습니다! – Friedrich

답변

1

이 카산드라에 대한 나쁜 유스 케이스 같은 소리 되세요.

먼저 범위 쿼리는 카산드라에서 권장하지 않습니다. 이는 범위를 클러스터의 모든 노드를 방문하지 않고 해결할 수 없기 때문입니다.

둘째, 카운터 유형 열을 다른 열 유형과 함께 사용할 수 없습니다. 주어진 테이블의 경우 카운터 열을 가질 수 있고 (또는 가질 수만 있습니다) 또는 모든 비 카운터 열을 가질 수 있습니다.

카산드라 데이터 모델링에 관한 한, 성공적인 데이터 모델을 만들려면 쿼리하려는 정확한 주변에 파티션을 만드십시오.

+0

난 그냥 카운터 값을 쿼리하면 괜찮을 것 같아요. 따라서 카운터 주위에 파티션을 만들면 쿼리가 가능합니까? 이 분할을 어떻게합니까? 계단을 말해 주거나 나에게 링크를 줄 수 있습니까? 나는 잘못된 단어를 사용했다고 생각합니다. 카운터 유형을 의미하는 것은 아니며, 그것은 데이터베이스의 정수 유형의 값 이름입니다. 나는 그 혼란스러운 이름을 바꿀 것이다. 도와 줘서 고마워! – Friedrich

관련 문제