Лучше использовать больше измерений или просто использовать метки для производительности - PullRequest
0 голосов
/ 06 января 2019

Я использую InfluxDb для регистрации измерений многих электростанций. В настоящее время я использую одно измерение с power_plant в качестве тега, а не поля для измерений. Лучше иметь разные измерения для каждой электростанции или просто использовать метки. У меня есть опасения по поводу производительности, когда в этом одном измерении будет терабайт или больше данных?

На данный момент у меня есть такая структура (все данные электростанций в одном измерении и использование тегов силовой установки и устройства для запроса данных)

private static $invertersMeasurement = [
    'value' => NULL,
    'tags' => [
        'power_plant' => NULL,
        'device' => NULL,
        'logger_ip' => NULL,
        ],
    'fields' => [
        'type' => NULL,
        'e_total' => NULL,
        'status' => NULL,
        'error' => NULL,
        'temp' => NULL,
        'pac' => NULL,
        'pdc1' => NULL,
        'udc1' => NULL,
        'idc1' => NULL,
        'pdc2' => NULL,
        'udc2' => NULL,
        'idc2' => NULL,
        'pdc3' => NULL,
        'udc3' => NULL,
        'idc3' => NULL,
        'pdc4' => NULL,
        'udc4' => NULL,
        'idc4' => NULL
        ],
    'time' => NULL
];

Лучше ли удалить метку электростанции и сохранить данные для каждой электростанции в другом измерении?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Q: Лучше использовать больше измерений?

A: Преимущество наличия всех данных в одном измерении состоит в том, что вам гораздо проще выполнять агрегирование данных, когда все точки расположены внутри одного места.

Однако это проблема до притока v1.7.0, когда перекрестные измерения вообще невозможны. Это означает, что вы не можете выполнять агрегирование данных между точками данных из разных измерений.

Примечание: На данный момент только flux, новый язык запросов притока 2.0 позволит вам выполнять перекрестные измерения.

В большинстве случаев, если вы правильно проектируете свою схему, сохраняя точные данные нужного типа в соответствующем измерении, вам не нужно выполнять перекрестные измерения.

Глядя на ваши поля, я вижу некоторые типы данных, такие как температура. Может быть, они могут быть помещены в другое измерение? Это для того, чтобы разработчики, особенно недавно нанятые, могли гораздо проще находить данные?

Это также делает ваши измерения очень организованными. Один набор данных измерений может выглядеть беспорядочно, если у вас есть данные о температуре, поступающие с интервалом в минуту, а некоторые из ваших полей имеют интервал 2 минуты. Это означает, что в определенном случае конкретная строка данных всегда будет иметь только температурное поле, а не другие.

Вам нужно обработать такие крайние случаи. Вы делаете linear интерполяцию или нет?

Не уверен, что это за поля ucp idc 1,2,3 и 4. Если они каким-то образом связаны, то их следует держать в одном измерении. Связано в том смысле, что с комбинацией определенных полей, например, ucp1 и ucp2, вы можете решить, могут ли данные иметь смысл из этого, чтобы сказать вам что-то. Например, высокая температура + низкое значение ucp означает отказ машины?

Я бы пошел для группировки ваших данных в правильном измерении, иначе на самом деле нет необходимости иметь measurement в притоке.

0 голосов
/ 07 января 2019

Нет, сохраняйте теги, потому что некоторые инструменты визуализации (например, Grafana) имеют лучшую поддержку тегов, чем измерения + фильтрация по тегам выполняется быстро и дешево (если у вас нет тегов с большим количеством элементов). Во всяком случае, ваша схема выглядит хорошо для меня.

...