Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Cassandra. CQL. Феерия багов? / 2 сообщений из 2, страница 1 из 1
30.08.2012, 12:44:59
    #37936951
Кореец
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cassandra. CQL. Феерия багов?
Добрый день, товарищи.

Cassandra 1.1.4
Как оказалось вставить то в нее быстро, а вот вынуть...ну не то чтобы тяжело, просто найти то, что вставил, потом невозможно.

Я просто покажу вызовы CQL. Очень похоже на SQL.
Ппц начинается внезапно при попытке запросить по диапазону ключей.

в скрипте есть комменты.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
cqlsh:log> create table test (id bigint primary key, num bigint, str varchar);
cqlsh:log> create index testIDX on test(num);
cqlsh:log> insert into test(id,num,str) values(1,1,'ivan');
cqlsh:log> insert into test(id,num,str) values(1,1,'ivan');
cqlsh:log> insert into test(id,num,str) values(2,2,'ivan2');
cqlsh:log> insert into test(id,num,str) values(3,3,'ivan3');
cqlsh:log> insert into test(id,num,str) values(4,3,'ivan32');
cqlsh:log> insert into test(id,num,str) values(11,3,'ivan321');
cqlsh:log> insert into test(id,num,str) values(113,3,'ivan322');

cqlsh:log> select * from test; -- OK
 id  | num | str
-----+-----+---------
   1 |   1 |    ivan
   2 |   2 |   ivan2
   3 |   3 |   ivan3
   4 |   3 |  ivan32
 113 |   3 | ivan322
  11 |   3 | ivan321


cqlsh:log> select * from test where id>=1 and id<=2; -- OK
 id | num | str
----+-----+-------
  1 |   1 |  ivan
  2 |   2 | ivan2
  
cqlsh:log> select * from test where id>3;
 id  | num | str
-----+-----+---------
   4 |   3 |  ivan32
 113 |   3 | ivan322
  11 |   3 | ivan321

cqlsh:log> select * from test where id<3;
Bad Request: Key range clauses must include a start key (i.e. KEY > term) -- ?? ну ладно. дадим тебе точку старта

cqlsh:log> select * from test where id<3 and id>=1; -- ОК
 id | num | str
----+-----+-------
  1 |   1 |  ivan
  2 |   2 | ivan2

cqlsh:log> select * from test where id<3 and id>1; -- ОК
 id | num | str
----+-----+-------
  2 |   2 | ivan2

cqlsh:log> select * from test where id<100 and id>1; -- !WTF
 id | num | str
----+-----+-------
  2 |   2 | ivan2  

cqlsh:log> select * from test where id>=1 and id<=10; --- !WTF
 id | num | str
----+-----+------
  1 |   1 | ivan

cqlsh:log> select * from test where id>1 and id<=10; --- !WTF
cqlsh:log> select * from test where id>1 and id<10; --- !WTF
cqlsh:log> select * from test where id>=1 and id<10; --- !WTF
 id | num | str
----+-----+------
  1 |   1 | ivan

cqlsh:log> select * from test;
 id  | num | str
-----+-----+---------
   1 |   1 |    ivan
   2 |   2 |   ivan2
   3 |   3 |   ivan3
   4 |   3 |  ivan32
 113 |   3 | ivan322
  11 |   3 | ivan321


cqlsh:log> select * from test where id >1;
 id  | num | str
-----+-----+---------
   2 |   2 |   ivan2
   3 |   3 |   ivan3
   4 |   3 |  ivan32
 113 |   3 | ivan322
  11 |   3 | ivan321

cqlsh:log> select * from test where id >2;
 id  | num | str
-----+-----+---------
   3 |   3 |   ivan3
   4 |   3 |  ivan32
 113 |   3 | ivan322
  11 |   3 | ivan321

cqlsh:log> select * from test where id >3;
 id  | num | str
-----+-----+---------
   4 |   3 |  ivan32
 113 |   3 | ivan322
  11 |   3 | ivan321

cqlsh:log> select * from test where id>4;
 id  | num | str
-----+-----+---------
 113 |   3 | ivan322
  11 |   3 | ivan321

cqlsh:log> select * from test where id>100; -- !WTF
 id  | num | str
-----+-----+---------
   3 |   3 |   ivan3
   4 |   3 |  ivan32
 113 |   3 | ivan322
  11 |   3 | ivan321

cqlsh:log> select * from test where id>111;
 id | num | str
----+-----+---------
 11 |   3 | ivan321

cqlsh:log> select * from test where id>11;
cqlsh:log> select * from test where id>11;
cqlsh:log> select * from test where id>111;
 id | num | str
----+-----+---------
 11 |   3 | ivan321

cqlsh:log> select * from test where id>=111;
 id | num | str
----+-----+---------
 11 |   3 | ivan321

cqlsh:log> select * from test where id>=113;
 id  | num | str
-----+-----+---------
 113 |   3 | ivan322
  11 |   3 | ivan321

cqlsh:log>




Кто нибудь знает почему оно так работает?
Это сырость самого CQL или вообще таков принцип самих NoSQL баз. получать данные тока через "="
Я хочу просто пройтись по логу записей и сделать группировку. Группировка будет самая разнообразная. Ее можно не рассматривать, все сводится к тому что первоначально мне просто необходимо делать запрос вида ID>N. Где N это номер айдишника на котором остановился подсчет последний раз, а ID уникально.
А оно так себя ведет в примере
Код: plsql
1.
select * from test where id>=113;


это ппц какой-то.

Кто нибудь с ней работал?
Что делаю не так?
...
Рейтинг: 0 / 0
09.09.2012, 18:03:40
    #37950039
adem
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cassandra. CQL. Феерия багов?
Проблема в том, что по умолчанию записи упорядочиваются не по ключу, а по хешу ключа, чтобы равномерно распределить данные по узлам кластера. Как говорит документация , в этом случае выборка по диапазону невозможна:

Using the ordered partitioner allows range scans over rows. This means you can scan rows as though you were moving a cursor through a traditional index. For example, if your application has user names as the row key, you can scan rows for users whose names fall between Jake and Joe. This type of query is not possible with randomly partitioned row keys, since the keys are stored in the order of their MD5 hash (not sequentially).


При использовании ByteOrderedPartitioner запросы работают корректно, но вместо этого рекомендуется построить индекс. Подробности в приведенной выше ссылке.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Cassandra. CQL. Феерия багов? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]