Добрый день, а есть возможность хранить базу на флешку? Чтобы база перезаписывалась.
База и так перезаписывается, в соответствии с настройками. Но да - можно в настройках wb-mqtt-db указать путь к файлу на флешке, конечно.
Дополню мысль, WB не хранит “длинную” базу (несколько дней), запись копии данных от датчиков на внешнюю флешку, скажем 128 ГБ с более “длинным” (на всю емкость флешки) диапазоном возможна, с перезаписью по заполнению емкости флешки (подобно записи видео на диск видеорегистратора)? Где почитать эту тему?
Почему? Ну, в общем да, при размере самой БД более 1-2ГБ скорее всего будут проблемы с работой с ней.
Но в 200МБ вполне помещаются значения от 30 датчиков, записываемые раз в минуту в течении года.
Скажите пожалуйста, я поставил 3600 сек, это значит, что значения счетчиков будут записываться 1 раз в 1 час? Если макс кол-во записей на канал и на группу 100 000, то количество дней записи будет рассчитываться так 100 000 / “3 канала” / “24 записи в день” = 1388 дней? Не переполню я память? Какой объем примерно будет иметь такая БД, помимо основной all?
Подробное описание параметра:
Да.
Ну да.
~6-7МБ.
Скажите пожалуйста, как рассчитать (метод) объем БД, если максимальное количество записей на канал 1 000 000, максимальное количество записей на группу будет 2 000 000? Какой объем БД не замедлит работу WB (допустимый объем БД)?
какие параметры установить для этого (для года)? Максимальное количество записей на канал? Максимальное количество записей на группу?
Верно я понимаю, что именно параметр максимальное количество записей на группу будет как раз главным при вычислении объема БД?
365 дней * 24 часа * 60 минут = 525 600 минут
525 600 записей
525 600 записей * 30 датчиков = 15 768 000 записей
тогда,
максимальное количество записей на канал не менее 525 600 (можно и больше)
максимальное количество записей на группу будет 15 768 000
15 768 000 записей * 13,3 байта = 209 714 400 байт
Верно?
Параметры определяют политику удаления самых старых, не более. То есть если в группе будет больше установленного количества - то самые старые будут удалены. Аналогично для канала.
От размера данных еще зависит.
Если брать “среднее” (ls -l /mnt/data/var/lib/wirenboard/db
) с контроллера где все типы то 100к записей весят примерно 8МБ.
Соответственно - примерно 86 байт на запись.
Если исключительно бинарные - тогда меньше. Если хранить текстовые строки - то больше.
В расчете можно ориентироваться на 86 байт/запись.
Тут не совсем так. Данных - по факту меньше, просто интервал, минимальный выбран в минуту.
Но идея с хранением длинной истории на контроллере - она не нова, но на практике не сильно удобно получается. Проще и удобнее использовать внешнюю базу, именно предназначенную для рядов данных. Например influxdb
?
Сложно сказать. Тут несколько факторов играют, такие как количество операций в секунду с самой базой, тип выборок из нее. Нельзя сравнивать операцию “выбрать записи по каналу” за несколько часов (дней) с такими же но за (условный) год. Ну и от нагрузки на контроллер от прочих работающих на нем сервисов.
Я на практике не видел баз более 1ГБ.