O que é o InfluxDB?
O InfluxDB é um banco de dados de séries temporais de alto desempenho, desenvolvido para lidar com grandes volumes de dados de séries temporais. Ele é altamente escalável e permite consultas de alta performance em dados de séries temporais.
O InfluxDB é construído em Go e é distribuído sob uma licença de código aberto
Como instalar o InfluxDB?
Para instalar o InfluxDB, você pode seguir as instruções no site oficial do InfluxDB. O InfluxDB está disponível em várias plataformas, incluindo Linux, macOS e Windows. Você pode instalá-lo usando o gerenciador de pacotes do seu sistema operacional ou baixando manualmente a versão apropriada para a sua plataforma.
sudo apt-get update
sudo apt-get install influxdb
Como usar o InfluxDB com o Symfony?
Para usar o InfluxDB no Symfony, é necessário o pacote do InfluxDB. Você pode instalá-lo usando o Composer. Depois de instalado, é necessário configurar a conexão do InfluxDB no arquivo app/config/parameters.yml.
composer require influxdb/influxdb:^2.0
Como configurar a conexão com o InfluxDB?
Você pode configurar a conexão do InfluxDB no arquivo app/config/parameters.yml. Você vai precisar especificar o endereço, porta, usuário e senha. Para um exemplo básico, você pode configurá-lo da seguinte maneira:
parameters:
influxdb_host: 'localhost'
influxdb_port: 8086
influxdb_user: 'username'
influxdb_password: 'password'
Como escrever dados no InfluxDB?
Para escrever dados no InfluxDB, você precisa criar uma instância do objeto InfluxDBClient e, em seguida, usar o método writePoints para escrever os dados. Aqui está um exemplo:
$influxDB = InfluxDBClient::fromDSN($this->getParameter('influxdb_dsn'));
$database = $influxDB->selectDB('my_db');
$points = [
new InfluxDBPoint(
'measurement-name',
null,
['tag1' => 'tag-value'],
['field1' => 'field-value', 'field2' => 42],
time()
),
];
$database->writePoints($points);
Como ler dados do InfluxDB?
Para ler dados do InfluxDB, você precisa criar uma instância do objeto InfluxDBClient e usar o método query para executar uma consulta. Aqui está um exemplo:
$influxDB = InfluxDBClient::fromDSN($this->getParameter('influxdb_dsn'));
$database = $influxDB->selectDB('my_db');
$resultSet = $database->query('SELECT field1, field2 FROM measurement-name');
$points = $resultSet->getPoints();
Como usar tags no InfluxDB?
Tags são valores-chave que podem ser adicionados a cada ponto em uma gravação. Eles são usados para filtrar dados ao executar consultas. Para adicionar tags a um ponto, envie-os como um array associativo no terceiro parâmetro de InfluxDBPoint(). Aqui está um exemplo:
new InfluxDBPoint(
'measurement-name',
null,
['tag1' => 'tag-value'],
['field1' => 'field-value', 'field2' => 42],
time()
),
Como usar campos no InfluxDB?
Campos são os valores que você deseja gravar. Eles são usados nas consultas e permitem armazenar valores numéricos, de texto ou booleanos. Para adicionar campos a um ponto, envie-os como um array associativo no quarto parâmetro de InfluxDBPoint(). Aqui está um exemplo:
new InfluxDBPoint(
'measurement-name',
null,
['tag1' => 'tag-value'],
['field1' => 'field-value', 'field2' => 42],
time()
),
Como usar consultas no InfluxDB?
O InfluxDB suporta consultas em SQL-like. Aqui está uma consulta de exemplo:
$influxDB = InfluxDBClient::fromDSN($this->getParameter('influxdb_dsn'));
$resultSet = $influxDB->query('SELECT * FROM measurement-name WHERE tag1='tag-value' AND time > now() - 1h');
$points = $resultSet->getPoints();
Como usar as funções do InfluxDB?
O InfluxDB suporta várias funções, incluindo count(), mean(), median(), max(), min(), sum(), stdDev(), first(), last(), bottom(), top(), percentile(). Aqui está uma consulta de exemplo com a função mean():
$influxDB = InfluxDBClient::fromDSN($this->getParameter('influxdb_dsn'));
$resultSet = $influxDB->query('SELECT mean(field1) FROM measurement-name WHERE tag1='tag-value' AND time > now() - 1h');
$points = $resultSet->getPoints();
Como usar a API do InfluxDB?
O InfluxDB tem uma API RESTful que você pode usar em vez da biblioteca PHP. Ele suporta vários verbos HTTP, incluindo GET, POST e DELETE. Aqui está um exemplo de como criar uma nova gravação:
curl -i -XPOST 'http://localhost:8086/write?db=my_db' --data-binary 'measurement-name,tag1=tag-value field1=field-value,field2=42'