Подтвердить что ты не робот

Java-библиотека для сбора данных датчиков

Я ищу встраиваемую библиотеку Java, которая подходит для сбора потоков данных в режиме реального времени в общем режиме. Я планирую использовать это для разработки приложения "концентратор" для отчетности по нескольким разным потокам датчиков, работающим на сервере на основе JVM (для этого также будет использоваться Clojure).

Ключевые вещи, которые необходимо иметь:

  • Интерфейсы для различных типов датчиков /API. Я рад создать то, что мне нужно, но было бы неплохо, если бы какой-то стандартный материал появился из коробки.
  • Подходит для использования в режиме "мягкого реального времени", т.е. достаточно низкая латентность и низкие накладные расходы.
  • Возможность контролировать и управлять потоками во время выполнения, собирать статистику и т.д.
  • Открыть исходный код под разумно разрешительной лицензией, чтобы я мог интегрировать его с другим кодом (Apache, EPL, BSD, LGPL все отлично)
  • разумно активная экосистема сообщества/разработчика

Есть ли что-то, что подходит для этого профиля, который вы можете порекомендовать?

4b9b3361

Ответ 1

1. База данных с круговой разверткой (wikipedia)

RRDtool (аббревиатура для инструмента round-robin database) предназначен для обработки данные временных рядов, такие как пропускная способность сети, температура, загрузка процессора и т.д. Данные хранятся в базе данных с циклическим циклом (круговой буфер), таким образом площадь системного хранилища остается постоянной с течением времени.

Этот подход/формат БД широко используется, достаточно стабилен и достаточно прост. Из коробки он позволяет создавать приятные графики:

enter image description here

Существует реализация Java - RRD4J:

RRD4J - это высокопроизводительная система регистрации данных и графики для времени последовательные данные, реализующие функциональные возможности RRDTool в Java. Следует большая часть той же логики и использует одни и те же источники данных, типы архивов и определения как RRDTool. Открытый исходный код под лицензией Apache 2.0.

Обновление

Забудьте о том, что существует Clojure API RRD (examples).

2. Для некоторых экспериментов с данными в реальном времени я бы предложил рассмотреть Perst

Он маленький, быстрый и надежный, но распределенный под GPLv3. Perst предоставляет несколько алгоритмов индексирования:

  • B-Tree
  • T-Tree (оптимизировано для базы данных в памяти)
  • R-Tree (пространственный индекс)
  • Patricia Trie (префиксный поиск)
  • KD-Tree (многомерный индекс)
  • Временной ряд (большое количество объектов фиксированного размера с меткой времени)

Последний подходит вам очень хорошо.

3. Neo4J с Отношения индексов

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

4. Oracle Berkeley DB Java Edition

Oracle Berkeley DB Java Edition является открытым исходным кодом, встраиваемым, механизм транзакционного хранения, полностью написанный на Java. Требуется полный преимущества среды Java для упрощения разработки и развертывание. Архитектура Oracle Berkeley DB Java Edition поддерживает очень высокую производительность и concurrency для интенсивного чтения и интенсивность работы с записью.

Предложение

Попробуйте RRD4J:

  • Это достаточно просто
  • Доза дает неплохие сюжеты
  • Он имеет Clojure API
  • Он поддерживает несколько back-end, включая Oracle Berkeley DB Java Edition
  • Он может хранить/визуализировать подробные наборы данных.

enter image description here

Ответ 2

Для сбора потоков данных в реальном времени данные датчиков могут помочь

Вы проверили API LeJos. Это http://lejos.sourceforge.net/nxt/nxj/api/index.html

Также стоит проверить Oracle Java ME Embedded и целевые рынки, на которые они обращаются http://www.unitask.com/oracledaily/2012/10/04/at-the-java-demogrounds-oracle-java-me-embedded-enables-the-internet-of-things/

Можно загрузить с http://www.oracle.com/technetwork/java/embedded/downloads/javame/index.html

Для хранения данных временного ряда ничто не сравнивает cassandra http://cassandra.apache.org/ и ответить, почему cassandra ссылается <а4 >

Для доступа к Cassandra с Java обратитесь https://github.com/jmctee/Cassandra-Client-Tutorial Это очень полезно и применение концепции временных рядов в cassandra db см. http://www.datastax.com/wp-content/uploads/2012/08/C2012-ColumnsandEnoughTime-JohnAkred.pdf