0

libQtCassandraを書きましたが、現在のバージョンはスーパーカラムをサポートしていません。そのサポートを追加しない理由の 1 つは、配列演算子 ([]) を使用してデータにアクセスして書き込む方法をユーザーに提供するためにライブラリで使用されるスキームを壊すことです。

慣れていない場合は、ライブラリを使用して「コンテキスト」(Cassandra クラスターへの接続) を作成し、そのコンテキストから次のように記述できます。

// 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"];

とても簡単です。ただし、スーパー列を導入すると、スーパー列があるかどうかに応じて、もう 1 つの配列アクセスが追加されます。あなたならどうしますか?

関数を使用してスーパー カラムにアクセスしますか?

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;

これは実装が簡単ですが、最終的なコードを見ると見栄えがよくありません。

このような問題へのより stl またはブーストのようなアプローチは何でしょうか?

4

1 に答える 1

2

スーパーカラムのサポートを導入しても、非推奨の機能の使用が促進され続けるだけのようです。複合材料などの代替手段を使用することは、人々をスーパーコラムに向かわせる問題を解決するためのより良いアプローチです。その努力が実際に間違った方向への動きではないかどうかはわかりません。それまでの間、C++ アプリからスーパーカラムにアクセスする必要がある場合は、Thrift を使用してアクセスできます。

したがって、私の提案は、libQtCassandra に複合サポートを追加する方法について議論することです。現時点では存在しないようです。このようにして、正しい構造に簡単にアクセスできるようにすることで、ユーザーがより賢明なデータ モデルを選択できるようにします。

于 2012-08-23T14:52:35.390 に答える