libQtCassandra을 썼고 현재 버전은 수퍼 컬럼을 지원하지 않습니다. 이러한 지원을 추가하지 않은 한 가지 이유는 배열 연산자 ([])를 사용하여 데이터에 액세스하고 데이터를 쓰는 방법을 사용자에게 제공하기 위해 라이브러리에서 사용하는 체계를 깨뜨린 것이 었습니다. 당신이 익숙하지 않은 경우libQtCassandra 라이브러리의 수퍼 컬럼을 어떻게 지원합니까?
, 라이브러리하자 당신은 "문맥"(A 카산드라 클러스터에 연결)를 만들고 그 상황에서 당신은 다음과 같이 쓸 수 있습니다 : 그래서
// set value 123 in "column name" of "row key" of "column family":
context["column family"]["row key"]["column name"] = 123;
// retrieve that value:
int value = context["column family"]["row key"]["column name"];
을 ... 아주 간단합니다. 그러나 수퍼 컬럼을 도입 할 경우 수퍼 컬럼이 있는지 여부에 따라 하나 이상의 배열 액세스를 추가합니다. 너는 무엇을 할 것이냐?
함수를 사용하여 수퍼 컬럼에 액세스 하시겠습니까?
context["column family"]["row key"].sc("super column")["column name"] = 123;
다른 매개 변수처럼 수퍼 컬럼을 원활하게 작동 시키시겠습니까?
context["column family"]["row key"]["super column"]["column name"] = 123;
물론 시스템 (열 패밀리)은 무엇이 무엇인지 압니다. 따라서 어느 방법으로도 구현하기 쉽습니다. 수퍼 컬럼의 배열 구문을 지원하기 위해서는 라이브러리가 상당히 복잡해졌습니다.
행을 지정할 때 사용할 수있는 개체를 추가하는 것이 다른 아이디어였습니다. 하지만 오히려 추한 외모 :
이context["column family"][sc("row key", "super column")]["column name"] = 123;
이 구현하는 것이 더 쉽습니다하지만 최종 코드를 볼 때 너무 좋아 보이지 않습니다.
이러한 문제에 대한 접근 방식은 무엇입니까?
아아 ... 나는 슈퍼 칼럼이 카산드라에서 일종의 해킹 인 것을 알고 있었지만, 나는 그들이 더 이상 사용되지 않을 것이라는 것을 알지 못했다. 마지막으로 내가 읽은 것은 반대였습니다. 더 나은 구현을 위해 (모든 데이터를 열에 저장하고 셀 데이터로드를 수동으로 처리하는 대신 개별적으로 올바르게 처리 할 것입니다. 개체). 어쨌든 ... 나는 대신 복합 열 기능을 살펴보고 수퍼 컬럼 만 남겨 둘 것입니다. 이미 사용 중지 된 경우에는 그럴 가치가 없습니다. –