Я столкнулся с проблемой: база данных для технологических установок. Есть до 50 000 датчиков с частотой дискретизации 50 мс. Все измеренные значения должны храниться не менее 3 лет и должны поддерживать запросы в реальном времени (то есть пользователи могут видеть исторические данные с задержкой менее 1 секунды). Недавно я прочитал статью о Time-series Database, у меня есть много вариантов: OpenTSDB, KairosDB, InfluxDB, ...Большие данные с очень быстрым доступом
Я смущен, какой из них подходит для этой цели? Кто-нибудь знает об этом, пожалуйста, помогите мне!
UPDATE 15.06.25
Сегодня я запустить тест, основанный на OpenTSDB. Я использовал Virtual Box для создания кластера из 3 CentOS x64 VM (1 мастер, 2 подчиненных). Конфигурация хоста - 8 ГБ ОЗУ, ядро i5. Конфигурация главной виртуальной машины - 3 ГБ ОЗУ, а конфигурация ведомых устройств - 1,5 ГБ. Я пишу питон программу для отправки данных в OpenTSDB, как показано ниже:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.10.55", 4242))
start_time = time.time()
start_epoch = 1434192418;
for x in range(0, 1000000):
curr_epoch = start_epoch + x
tag1 = "put TAG_1 %d 12.9 stt=good\n" % (curr_epoch)
tag2 = "put TAG_2 %d 12.9 stt=good\n" % (curr_epoch)
tag3 = "put TAG_3 %d 12.9 stt=good\n" % (curr_epoch)
tag4 = "put TAG_4 %d 12.9 stt=good\n" % (curr_epoch)
tag5 = "put TAG_5 %d 12.9 stt=good\n" % (curr_epoch)
tag6 = "put TAG_6 %d 12.9 stt=good\n" % (curr_epoch)
tag7 = "put TAG_7 %d 12.9 stt=good\n" % (curr_epoch)
tag8 = "put TAG_8 %d 12.9 stt=good\n" % (curr_epoch)
tag9 = "put TAG_9 %d 12.9 stt=good\n" % (curr_epoch)
tag10 = "put TAG_10 %d 12.9 stt=good\n" % (curr_epoch)
str = tag1 + tag2 + tag3 + tag4 + tag5 + tag6 + tag7 + tag8 + tag9 + tag10
s.send(str)
print("--- %s seconds ---" % (time.time() - start_time))
Я бег питона на хосте, и работа завершается после ~ 220 секунд. Итак, у меня есть avg. скорость ~ 45000 записей в секунду.
ОБНОВЛЕНИЕ 15.06.29
На этот раз я использовал только 1 ВМ (5 Гб оперативной памяти, 3 ядра, CentOS 64, псевдо-распределенной Hadoop). Я запускаю 2 процесса python на хосте Windows 7 для отправки 2 половин данных в OpenTSDB. Сред. скорость ввода данных составляла ~ 100 000 записей в секунду.
Я думаю, вы получите ответы на более тесные ответы: http://softwarerecs.s.stackexchange.com/ – thomasb
Если каждый образец составляет 1 байт, что составляет около 100 TeraBytes. – Jodrell
Может быть меньше 100 Тбайт, если временные ряды являются регулярными, то есть скорость 50 мс фиксирована и гарантирована, а сбрасывание данных разрешено с помощью типичных алгоритмов сжатия историков, таких как размахивание двери и снятие дублирования значений повторения. Множество значений не изменится, так как физическое состояние не изменяется, что часто дает значимый предел точности. Не могли бы вы поделиться частью набора данных - например, список показателей/типов датчиков? –