используя один тег на значение в притоке - PullRequest
2 голосов
/ 24 октября 2019

Я читаю какой-то унаследованный код и обнаружил, что все вставки в InfluxDB выполняются следующим образом (упрощенный код здесь):

influxDB.write(Point.measurement(myeasurement)
  .time( System.currentTimeMillis(), TimeUnit.MILLISECONDS)
  .addField("myfield", 123)
  .tag("rnd",String.valueOf(Math.random() * 100000)))
  .build())

Как вы можете догадаться, значение тега тега "rnd""отличается для каждого значения, что означает, что мы можем иметь 100 000 различных значений тега. На самом деле, на данный момент у нас меньше значений, чем это, поэтому мы должны в конечном итоге иметь одно другое значение тега на значение ...

Я не эксперт в effxdb, но я понимаю, что теги используются effxdbсгруппировать связанные значения вместе, как раздел или шарды в других инструментах. Значения 100k тегов, кажется, много ...

Это так ужасно, как я думаю? Или есть вероятность, что этот тип вставки может быть полезен для чего-то?

РЕДАКТИРОВАТЬ: я только что понял, что Math.random () * является двойной, поэтому * 100000 просто бесполезно. Как String.valueOf (). На самом деле, есть одна серия в базе данных на значение, я не могу себе представить, как это может быть хорошо: (

1 Ответ

1 голос
/ 25 октября 2019

Это плохо и не нужно.
Ненужно, потому что каждая точка, которую вы записываете в influenxdb, уникально идентифицируется по ее временной метке + набору примененных значений тегов.
Плохо, потому что каждый набор значений тегов создает отдельный ряд. Influxdb ведет индекс по серии. Наличие уникального значения тега для каждой точки данных повысит требования к ресурсам системы и замедлит работу базы данных. Если у вас не так много точек данных, но тогда вам действительно не нужна база данных временных рядов или просто все равно.

Как сказал ОП. Теги используются для группировки или фильтрации.
Вот несколько хороших прочтений по теме
https://docs.influxdata.com/influxdb/v1.7/concepts/tsi-details/
https://www.influxdata.com/blog/path-1-billion-time-series-influxdb-high-cardinality-indexing-ready-testing/

В соответствии с документацией upper bound [for series or unique tag values] is usually somewhere between 1 - 4 million series depending on the machine used., что легко за деньценность данных высокого разрешения.

...