панель веб-аналитики в реальном времени: какие технологии следует использовать? (node /django, cassandra / mongodb …)

#node.js #mongodb #postgresql #cassandra #postgis

#node.js #mongodb #postgresql #cassandra #postgis

Вопрос:

мы хотим разработать панель мониторинга для анализа геопространственных данных. Это небольшой и близкий подход к тому, что мы хотим сделать: http://adilmoujahid.com/images/data-viz-talkingdata.gif

Наши основные опасения связаны с используемыми серверными технологиями. (фронт будет D3.js, DC.js, leaflet.js …)

Между Django и node.js мы думаем, что будем использовать node.js , потому что мы читали, что это быстрее, чем Django для такого рода задач. Но мы не уверены и открыты для идей.

Но насчет Mongo или Cassandra мы в замешательстве. Наши данные в основном структурированы, поэтому хранить их в таблицах, подобных Cassandra, было бы проще в управлении, также Cassandra, похоже, обладает лучшей производительностью. Однако у нас также есть данные устройств Интернета вещей с большим количеством данных о местоположении GPS в реальном времени…

Какие предложения вы можете дать нам для достижения нашей цели?

Краткое содержание TL; DR;

  • Панель мониторинга с сотнями одновременных пользователей.
  • Хранимые данные будут в основном представлять собой структурированный текст / числа, но будут включать также изображения, GPS-массивы, датчики Интернета вещей, географические данные (векторные полигоны и растры)
  • Базы данных будут получать высокую нагрузку на запись, поступающую от датчиков.
  • Производительность панели мониторинга очень важна. Важнее считывать данные в режиме реального времени, чем сохранять их неповрежденными / безопасными.
  • Большая часть вычислений / математики будет вычисляться в браузере клиента, сервер попытается избежать математических операций.

Ответ №1:

Отказ от ответственности: Я сотрудник DataStax, поэтому я прокомментирую статью Cassandra.

Cassandra — хороший выбор для этого, если ваша панель мониторинга может быть спланирована вокруг набора известных запросов. Если эти пользователи будут выполнять специальные запросы непосредственно к базе данных с панели мониторинга, вам понадобится что-то с немного большей гибкостью, например, ElasticSearch или (shameless plug) DataStax Search. Особенно, если вы ожидаете, что запросы / база данных будут обрабатывать некоторую часть геопространственной логики.

Ответ №2:

JaguarDB имеет очень мощную поддержку геопространственных данных (2D и 3D). Это позволяет хранить несколько измерений для каждого местоположения точки, в то время как другие базы данных поддерживают только одно измерение (pointm). Также поддерживаются многие сложные запросы, такие как Voronoi polygon, convexhull. Это открытый исходный код, распределенный и сегментированный, индексы с несколькими столбцами и т.д.

Ответ №3:

Что касается Postgresql и Cassandra, есть ли большая разница в использовании оперативной памяти / процессора / диска между ними?

Наш вариант использования не требует транзакций, он будет находиться на одном узле, и у нас будут устройства Интернета вещей, записывающие данные до 500 раз в секунду. Однако я читал, что географические данные лучше работают с Potstgis, чем cassandra…

В соответствии с этим вариантом использования, вы рекомендуете Cassandra или Postgis?