2013-04-02 3 views
3

Я хотел знать, есть ли способ объединить два или более набора результатов в один.
Мне действительно нужно выполнить несколько запросов и вернуть только один набор результатов. Я не могу использовать UNION или JOIN-операторы, потому что я работаю с Cassandra (CQL)
Спасибо заранее!Объединение двух наборов результатов в один

ответ

4

Рамки, подобные Playorm, обеспечивают поддержку запросов JOIN (INNER и LEFT JOINs) в Кассандре.

http://buffalosw.com/wiki/Command-Line-Tool/

Вы можете увидеть больше примеров по адресу:

https://github.com/deanhiller/playorm/blob/master/src/test/java/com/alvazan/test/TestJoins.java

+0

Благодарим вас за ответ. Извините меня, но сначала я хочу задать вопрос, который немного не по теме. В TestJoins.java они используют псевдонимы в запросах, возможно ли это с Cassandra?! – user2090879

+0

Playhouse анализирует запросы в конце и поддерживает псевдонимы. Перейдите по этой ссылке для получения дополнительной информации http://buffalosw.com/wiki/Fast-Scalable-Queries/ и http://buffalosw.com/products/playorm/ для полнофункционального списка Playorm. – Easility

+0

Большое спасибо за помощь! – user2090879

3

Если Ваше желание запросить несколько строк в пределах одной и той же семьи колонке вы можете использовать ключевое слово IN:

SELECT * FROM testCF WHERE key IN ('rowKeyA', 'rowKeyB', 'rowKeyZ') LIMIT 10; 

Это вернет вас 10 результатов из каждой строки.

Если вам нужно объединить результаты с разными CF или запросить различные предложения WHERE, вам необходимо запустить несколько запросов и объединить результаты в код - cassandra не подходит для такого рода вещей.

+0

На самом деле я хочу реализовать оператор Union, поэтому мне нужно объединить результаты из разных семейств столбцов, имеющих одну и ту же архитектуру. Мне интересно, могу ли я иметь один результирующий набор, содержащий результаты всех семейств столбцов? – user2090879

2

PlayOrm может сделать соединения, но вам, возможно, придется иметь PlayOrm разделение на так что вы по-прежнему масштабировать. (т. е. вы не хотите присоединяться к 1 миллиарду строк с 1 миллиардом строк). Обычно вместо этого вы присоединяетесь к одному разделу с другим разделом или разделом в таблице Учетная запись, соединяющей раздел в таблице Users. то есть. убедитесь, что вы планируете масштабирование.

+0

Большое спасибо за помощь :) – user2090879

Смежные вопросы