Потоковое веб-приложение - Twitter, Facebook, NoSQL или SQL? - PullRequest
1 голос
/ 24 августа 2011

Итак, перед нами стоит задача проектирования, у нас есть абсолютно чистый план для разработки системы, которая представляет результаты обработки различных каналов социальных сетей, таких как Twitter и Facebook, в Интернете и через API-сервис, такой как REST. Часть обработки уже завершена, но теперь нам нужно где-то хранить результаты.

Формат результата выглядит примерно так: идентификатор сообщения, дата сообщения, обработанная метка времени, а затем набор различных показателей обработки. В этой базе данных будет около 200 миллионов сообщений. Поэтому первое, что нам нужно, - это что-то для хранения этих данных Мы думаем, что базу данных документов NoSQL было бы интересно попробовать, учитывая, что мы должны иметь возможность выбирать диапазон дат, который дисконтирует базы данных в стиле семейства столбцов (поскольку я считаю, что сканирование диапазона ключей в HBase выполняется медленно). Или лучшим вариантом может быть просто сохранить эти данные в старом добром MySQL или VoltDB. У кого-нибудь есть примеры использования или истории их внедрения такой системы?

Следующим шагом будет разработка веб-приложения. Нам нужен сервис графиков, который может принимать данные в режиме реального времени и обновлять интерфейс. Мы думаем об использовании HighCharts для этой цели. Есть что-нибудь лучше?

Наконец, нам нужен какой-то API-сервис, который может работать как приложение коммета и передавать данные, что-то вроде потокового API Twitter. Я думал, что лучшим вариантом для этого будет node.js.

Так что, я полагаю, вопрос в том, какие технологии мы выбрали лучше всего для этой работы, есть ли хорошие примеры использования и есть ли что-нибудь, что можно было бы порекомендовать?

Ура!

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

О хранилище: существует 4 типа хранилищ nosql. ключ / значение, база данных столбцов, база данных документов и база данных графиков. Каждый из них медленнее предыдущего, но также предоставляет вам больше возможностей. В случае, если вам нужно только хранить данные ключ / значение или столбец базы данных на ваш выбор. При таком типе хранения данные обрабатываются вручную, и вам может понадобиться какая-то карта, уменьшающая реализацию. Может быть, Hadoop. Базы данных документов и графиков дают вам какой-то запрос, и вы можете переместить часть обработки данных в базу данных (например, фильтры даты). Если мне нужно выбрать какое-нибудь хранилище nosql, я проведу тесты с базой данных графов (например, neo4j), а если у меня возникнут проблемы с производительностью, переключусь на базу данных столбцов (например, cassandra) и уменьшу карту

О графиках: HighCharts кажется хорошим вариантом. Я не знаю о поддержке svg-браузера и есть ли проблемы с производительностью, но на моей машине выглядит очень хорошо.

О потоке данных. У меня мало опыта только с nodejs, и это будет мой первый выбор. Есть несколько других реализаций, таких как Tornadoweb для Python и Misultin, Mochiweb и Cowboy для erlang. Я нашел ссылку с эталоном этих серверов, и кажется, что серверы erlang работают быстрее, чем nodejs. Вы также можете посмотреть на них.

0 голосов
/ 02 февраля 2012

Вы также можете использовать SOLR / Lucene с шардингом. Пропускная способность может быть увеличена с помощью настройки master / slave solr.

...