Гектор: как запросить части составного типа - PullRequest
2 голосов
/ 08 ноября 2011

У меня есть данные, хранящиеся с использованием CompositeType, которые выглядят следующим образом:

RowKey: 101390
=> (column=1320987600000:P:350.0:symbol, value=AAPL/F6LbE.O, timestamp=1320771711561000)
=> (column=1320987600000:P:355.0:symbol, value=AAPL/F6LfE.O, timestamp=1320771711569000)
=> (column=1320987600000:P:360.0:symbol, value=AAPL/F6LjE.O, timestamp=1320771711576000)
=> (column=1320987600000:P:365.0:symbol, value=AAPL/F6LnE.O, timestamp=1320771711586000)
=> (column=1320987600000:P:370.0:symbol, value=AAPL/F6LrE.O, timestamp=1320771711592000)
=> (column=1320987600000:P:460.0:symbol, value=AAPL/F6LzF.O, timestamp=1320771711607000)
=> (column=1320987600000:C:350.0:symbol, value=AAPL/FuLbE.O, timestamp=1320771712117000)
=> (column=1320987600000:C:355.0:symbol, value=AAPL/FuLfE.O, timestamp=1320771712120000)
=> (column=1320987600000:C:360.0:symbol, value=AAPL/FuLjE.O, timestamp=1320771712123000)
=> (column=1320987600000:C:365.0:symbol, value=AAPL/FuLnE.O, timestamp=1320771712128000)

Композит состоит из четырех частей: [отметка времени: тип: цена: имя-атрибута]

Можно ли запросить 1, 2 или все компоненты, используя SliceQuery?

  • Например, я хочу запросить из отметки времени T1 -> T2 (это прекрасно работает)
  • Также нужно сказать отметку времени T1 -> T2 и Type = "C" и только "C"
  • Метка времени T1 -> T2, Тип = "C" И цена = "365.0"

Можно ли запросить части композита таким способом? В моем тестировании до сих пор я не смог, и кажется, что составной объект сравнивается так, как будто это только длинный байтовый массив - вместо отдельных компонентов.

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

От ML ответ: Вот пример такого, который наполовину запущен. Там должно хватит здесь, в комментариях, чтобы вы начали: https://github.com/zznate/cassandra-tutorial/blob/master/src/main/java/com/datastax/tutorial/StaticCompositeIndex.java

Дайте мне знать, если это поможет.

0 голосов
/ 22 ноября 2011

Да, вы можете искать части композита.Если вы используете Cassandra 0.8.1 и выше, вам нужно указать компаратор как «CompositeType» в вашей схеме.Вот полное руководство по программированию диапазона запросов с использованием CompositeType: http://randomizedsort.blogspot.com/2011/11/cassandra-range-query-using.html

...