2014-02-21 3 views
9

Вопрос всем экспертам Кассандры.Cassandra NOT EQUAL Оператор

У меня есть семейство колонн с около миллиона записей.

Я хотел бы запросить эти записи таким образом, чтобы я мог выполнять операцию типа Not-Equal-To.

I Googled на этом, и мне кажется, что я должен использовать своего рода Map-Reduce.

Может кто-нибудь сказать мне, какие варианты доступны в этом отношении.

ответ

11

Я могу предложить несколько подходов.

1) Если у вас ограниченное количество значений, которые вы хотели бы проверить на неравномерность, рассмотрите моделирование как столбцы boolean (т. Е .: столбец isEqualToUnitedStates с истинным или ложным).

2) В противном случае рассмотрим эмулирование неподдерживаемого запроса != X путем объединения результатов двух отдельных запросов, < X и > X на стороне клиента.

3) Если ваша схема не может поддерживать какой-либо тип запроса выше, вам, возможно, придется прибегать к написанию пользовательских подпрограмм, которые будут выполнять фильтрацию на стороне клиента и строить динамически неравномерно. Это будет работать, если вы можете сузить пространство поиска до управляемых пропорций, так что относительно дешево выполнять запрос без неравного.

Итак, предположим, что вас интересуют все покупки конкретного клиента каждого типа продукта, кроме виджета. Идеальный запрос может выглядеть примерно так: SELECT * FROM purchases WHERE customer = 'Bob' AND item != 'Widget'; Теперь, конечно, вы не можете запустить это, но в этом случае вы сможете запустить SELECT * FROM purchases WHERE customer = 'Bob', не тратя слишком много ресурсов и фильтровать item != 'Widget' в клиентское приложение.

4) Наконец, если нет возможности ограничить данные значимым образом перед выполнением сканирования (запрос без проверки равенства приведет к возвращению слишком большого количества строк для удобного обращения), возможно, вам придется прибегнуть к MapReduce. Это означает выполнение распределенного задания, которое будет проверять все строки в таблице по кластеру. Очевидно, что такие задания будут выполняться намного медленнее, чем исходные запросы, и их довольно сложно настроить. Если вы хотите пройти этот путь, ознакомьтесь с Интеграция Cassandra Hadoop.

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