Дизайн таблицы MemSQL для облака слов

Я обрабатываю твиттер-канал, сохраняя твиты в таблице в memsql. В таблице есть такие поля, как tweet_id, post_time, body и т. д.

Таблица содержит около 5 миллионов твитов в день. всего хранится миллиард твитов за весь период

Таблица хранится как columnstore с tweet_id в качестве ключа сегментирования и post_time в качестве столбца кластеризации columnstore.

Пока что он отлично работает для всей аналитики в реальном времени и возвращает ответы за доли секунды, если вы запросите один день. Чем шире ваши фильтры дат, тем медленнее выполняется запрос

Требование состоит в том, чтобы сгенерировать облако слов из поля тела твита. Мой вопрос; как лучше всего это сделать? Мне нужно, чтобы запрос был эффективным (занимает секунды, а не минуты). Имейте в виду следующее.

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

Я считаю, что потребуется отдельная таблица, какой может быть дизайн для этой таблицы? предложения, пожалуйста

Наконец, мой кластер MemSQL имеет 5 узлов, всего 1 ТБ ОЗУ и 192 ядра.


person Ahmad Qudan    schedule 12.02.2017    source источник


Ответы (1)


Я не думаю, что MemSQL — лучший способ сделать это. Лучше всего проиндексировать его с помощью поискового сервера/библиотеки, например Apache Solr, или просто использовать Apache Lucene в качестве серверной части. Таким образом, запросы, необходимые для облака слов, такие как «Дайте мне все подсчеты n-слов с самым высоким рейтингом, отсортированные по количеству», будут возвращаться за секунды.

person mjuarez    schedule 14.02.2017