2015-06-23 2 views
0

Я ищу наиболее подходящее решение для денормализации данных.RDBMS для денормализации данных NoSQL

У меня есть 5 таблиц в MySQL - сообщения, posts_to_groups, groups (отношения MANY_2_MANY между сообщениями и группами), posts_comments и posts_votes.

Мне нужно быстро загрузить некоторое количество сообщений из определенных групп, которые имеют наибольшее количество (комментарии + голоса) в течение определенного временного диапазона - (теперь-N (часы)). Производительность - это критерий номер один для меня.

Прямо сейчас я думаю о решении с HBase или Cassandra.

Например, если у меня есть 1 сообщение, и это сообщение связано с 3 группами, я могу хранить для каждого комментария или голосовать за это сообщение. 3 (1 * groups number) новые записи в Hbase с ключом строки - group_id.post_id.timestamp, но Я не уверен, как подсчитать в Hbase наибольшее количество комментариев + голосов во время диапазона на лету.

Я уверен, что есть лучшие подходы, поэтому я буду благодарен за ваши советы и мысли по этой задаче.

ответ

1

Вы сказали, что производительность - это ключ. Но есть еще что-то, поскольку вы хотите, чтобы агрегация выполнялась, а не просто поиск с помощью ключа (именно поэтому используется Hbase). Кроме того, Hbase хорош, если у вас нет одинакового формата для всех строк, которые вы пытаетесь добавить. Я не нахожу ни одного из них в вашем требовании идти на Hbase.

Также вы пытаетесь объединить 5 таблиц в один и ожидаете, что Hbase даст вам, агрегацию поверх нее. Может быть, слишком много. Улей предназначен для выполнения этих задач. Денормализация работает. Но это используется для простого поиска ключей и значений. Ваши требования выходят за рамки денормализации и выполнения агрегатов поверх нее. Даже я жду большего ответа на этот аспект. Счастливое обучение

+0

+1 для четкого требования к агрегации. Я знаю, что MongoDB делает это практически так, как вы хотите. К сожалению, не знакомы с другим NoSqls – FireAlkazar

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