0

私はcassandraに見られる次のいくつかの値を持っています(実際、私は何が起こるかを見るために意図的にさまざまなものを入れています)。注:8バイトの値はすべてlongであり、他のいくつかは文字列でした。ソート順は、正のlongの場合、およびUTF8文字列の場合でも問題ないようです。ただし、ネガティブロングはリストの最後にあります!!!!

RowKey: 6d796f6e655f696e646578
=> (column=000000000000000a, value=, timestamp=1343228055671000)
=> (column=0000000000000014, value=, timestamp=1343228055671000)
=> (column=0000000000000028, value=, timestamp=1343228055671000)
=> (column=000000000000003c, value=, timestamp=1343228055671000)
=> (column=00000000000000c8, value=, timestamp=1343228055671000)
=> (column=0000000000000154, value=, timestamp=1343228055671000)
=> (column=00000000000001f4, value=, timestamp=1343228055671000)
=> (column=0000000000000226, value=, timestamp=1343228055671000)
=> (column=00000000000002bc, value=, timestamp=1343228055671000)
=> (column=000000746bb814ee, value=, timestamp=1343228055671000)
=> (column=30303030303030303030, value=, timestamp=1343228055671000)
=> (column=61, value=, timestamp=1343228055671000)
=> (column=617364667364, value=, timestamp=1343228055671000)
=> (column=6565656565, value=, timestamp=1343228055671000)
=> (column=657772776572657772657772, value=, timestamp=1343228055671000)
=> (column=fffffffffffffe0c, value=, timestamp=1343228055671000)
=> (column=ffffffffffffff38, value=, timestamp=1343228055671000)
=> (column=ffffffffffffffd8, value=, timestamp=1343228055671000)

ここで、cassandraにlong型を想定するように指示すると、同じ行がこのように表示され、一連の列が欠落します(cassandraが負の列を削除した理由は本当にわかりません????)...

RowKey: 6d796f6e655f696e646578
=> (column=10, value=, timestamp=1343228055671000)
=> (column=20, value=, timestamp=1343228055671000)
=> (column=40, value=, timestamp=1343228055671000)
=> (column=60, value=, timestamp=1343228055671000)
=> (column=200, value=, timestamp=1343228055671000)
=> (column=340, value=, timestamp=1343228055671000)
=> (column=500, value=, timestamp=1343228055671000)
=> (column=550, value=, timestamp=1343228055671000)
=> (column=700, value=, timestamp=1343228055671000)
=> (column=500023432430, value=, timestamp=1343228055671000)

2つの質問:

  1. なぜ負のロングが欠落しているのですか(私が見る他のすべてのロングは正しく翻訳されています)?

  2. 8バイトしかない場合は、2の補数を格納する必要があることを理解しています。そのため、並べ替え順序が「間違っている」ので、通常、-50〜+50の列スライスをどのように処理するのでしょうか。彼らは2つのスライスを行っていますか?1つは最初に、もう1つは最後にありますか?

ありがとう、ディーン

4

1 に答える 1

3

列の順序は、列ファミリーのコンパレーターに基づいています。cassandra-cli に特定のタイプを想定するように指示すると、列の表示方法のみが変更され、順序は変更されません。

コンパレーター = LongType で新しい列ファミリーを作成してみてください。これにより、期待する順序 (LONG_MIN..LONG_MAX) で列が並べ替えられます。

于 2012-07-25T15:54:09.053 に答える