ここで愚かなことをしようとしているかもしれません。エラーが出たら、私にはすでにヒントが与えられています。しかし、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"
このエラーメッセージは、この記事の後、私はこれが問題であるが、なぜC *これを処理することはできません理解して、リレーショナルデータベースでCassandra 2.1: Recursion by nesting UDT's
を報告されたため、CASSANDRA-10339に導入されます。とにかくデータが参照されていないので、C *自体の中で "循環参照"が起こっていると思います。しかし、なぜそれが問題なのですか?データの構造を記述するだけです。私にとっては、オブジェクト構造がそれ自身の中で繰り返されるjsonオブジェクトのようになります。
誰かが私にこの質問をしたら、私はおそらく「なぜあなたはこれを望んでいますか?」と答えるでしょう。
実際の例は、一種の決定木です。だから私はquestion
のユーザー定義型のテーブルquestionaire
を持っています。この質問には、次に質問する質問があります。これは、タイプがquestion
のyesとno種類の質問の場合、2つの属性になります。これは私がしようとしていることをうまく明確にします。
連鎖質問の数が理論的に無限であると思われる場合、この種のストレージは非常に非効率的である可能性があります。また、2つの質問は、少なくとも理論的には、次の同じ質問につながる可能性があります。この場合、json文字列に重複を格納することも非効率的です。 – adutra
私は、このaproachは、1つのjson内に重複したデータを格納する必要があると考えています。他の質問への参照としてIDを格納するだけで十分です。したがって、無限の一連の質問もこの表現で可能です。 –
これは私が思いついた選択肢の1つでした。しかし、なぜそれがC *では不可能なのかという疑問があります。それでも、私はudtやjsonの方が、データが無限になる可能性があるとは思わない。私はそれが有限ではないことを理解していますが、無限のデータを格納/ハンドリングすることはできません。 – pjanssen