오케, 어쩌면 내가 여기있는 바보 같은 것을 시도하고 있으며 오류는 이미 나에게 힌트를 주었다. 그러나 C *에서 사용자 정의 유형을 가질 수 있습니까?그 자체를 포함하는 사용자 정의 형식
이렇게 결과가됩니다.
CREATE TYPE udt (
id uuid,
child frozen <udt>,
childeren list <frozen <udt>>
);
InvalidRequest: code=2200 [Invalid query] message="Unknown type space.udt"
유형을 선언해야한다고 생각합니다. 내부에서 사용하기 전에. 그래서 자연스럽게 나는 이와 같은 것을 시도 할 것입니다.
CREATE TYPE udt (
id uuid
);
ALTER TYPE udt ADD child frozen <udt>;
--ALTER TYPE udt ADD children list <frozen <udt>>;
InvalidRequest: code=2200 [Invalid query] message="Cannot add new field child of type space.udt to type space.udt as this would create a circular reference"
이 오류 메시지는 내가이 문제가 이해 관계형 데이터베이스에서이 게시물 Cassandra 2.1: Recursion by nesting UDT's
후보고로 인해 CASSANDRA-10339을 도입하지만, 왜 안 C *이이 문제를 처리 할 수 있습니다. 데이터는 어쨌든 참조되지 않으므로 C * 자체에서 "순환 참조"가 발생합니다. 그러나 왜 여기에 문제가 있습니까? 데이터가 어떻게 구성되어야 하는지를 설명합니다. 나에게 그것은 객체 구조가 그 자체 내에서 반복되는 json 객체와 같을 것이다.
누군가 나에게이 질문을하는 경우 "왜 이걸 원 하겠니?"라고 대답 할 것입니다.
그래서 실제 사례는 일종의 의사 결정 트리입니다. 그래서 나는 사용자 정의 타입이 question
인 테이블 questionaire
을 가지고있었습니다. 이 질문은 다음 질문에 대한 질문입니다. 유형이 question
인 예와 종류가없는 두 가지 속성이 될 수 있습니다. 이것은 내가하려고하는 것을 명확하게 해명합니다.
체인 문제가 이론적으로 무한한 것으로 보이는 경우 이러한 종류의 저장소는 매우 비효율적 일 수 있습니다. 게다가, 두 가지 질문은 적어도 이론적으로는 다음 질문으로 이어질 수 있습니다. 이 경우에는 json 문자열에 중복을 저장하는 것도 비효율적입니다. – adutra
나는이 aproach가 하나의 json 내에 중복 된 데이터를 저장해야한다고 동의하지 않는다. ID를 다른 질문에 대한 참조로 저장하면 충분합니다. 따라서이 표현에서 무한한 일련의 질문들도 가능합니다. –
이것은 내가 생각해 낸 대안 중 하나였습니다. 그러나 질문은 왜 C *에서 가능하지 않은지에 관한 것입니다. 그래도 나는 udt 또는 json에서 데이터가 무한 할 수 있다는 것을 알지 못합니다. 나는 그것이 유한 한 것이 아니라 어떤 경우에도 무한 데이터를 저장/처리 할 수 없다는 것을 이해합니다. – pjanssen