Download - TDC2016SP - Trilha Banco de Dados
Globalcode – Open4education
Trilha – Banco de dadosMarcos Vinicius Ribeiro Artigas
Software Engineer na Umbler
Globalcode – Open4education
O início, o cenário...
Globalcode – Open4education
1 ano e 3 meses :)
• de 26 mil usuários• de 23 mil sites hospedados• de 20 mil contas de e-mail• de 3 mil servidores liberados• de 15 mil bancos de dados criados
Previsão para o próximo ano é de triplicar esses valores.
Globalcode – Open4education
Encontramos uma necessidade
Globalcode – Open4education
1ª Tentativa
+
+
Globalcode – Open4education
2ª Tentativa
Elasticsearch Watcher
+
Globalcode – Open4education
3ª e última tentativa
Globalcode – Open4education
Então,
o que é um banco de dados de série temporal?
(TSDB)
Globalcode – Open4education
Tá,mas o que são dados de séries temporais?
(Time Series Data )
Globalcode – Open4education
Exemplo do que é!
Globalcode – Open4education
Exemplo do que não é!
Globalcode – Open4education
Onde geralmente se utiliza?
Globalcode – Open4education
Onde geralmente se utiliza?
Globalcode – Open4education
Onde geralmente se utiliza?
Globalcode – Open4education
Onde geralmente se utiliza?
Globalcode – Open4education
E quais as vantagens mesmo?
• Alta performance
• Banco dedicado a resolver um único problema
• Facilidade para agregação de dados
• Rotatividade dos dados
Globalcode – Open4education
Ok, quais TSDB existem?
e muitos outros ...
Atlas
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
● Fundada em 2012.
● Desde 2015 possui sua própria stack para
suporte ao InfluxDB, ela se chama TICK.
● Produtos OpenSource e gratuitos.
● Comunidade aquecida e suportada pela
própria empresa.
● Seus produtos estão na versão 0.13.
Paul Dix
Globalcode – Open4education
Principais características
● Alta performance para gravação de dados.● Escrita e leituras realizadas através de uma HTTP API.● Linguagem de consulta (InfluxQL) parecida com SQL.● Tags, permitem indexação de séries para consultas
rápidas e eficientes.● Políticas de retenção e consultas contínuas.● Bibliotecas de client desenvolvidas para as principais
linguagens.● Interface de administração web.
Globalcode – Open4education
Comparação com SQL
• Measurements = Tabelas
• Tags = Colunas indexadas no SQL
• Fields = Colunas não indexadas no SQL
• Points = Rows no SQL
O Resto é basicamente tudo igual..
ex: CREATE DATABASE teste
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu,host=server01 value=9.64 143405556200’
URL da HTTP API de escrita + nome do banco.
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu,host=server01 value=9.64 14340555620’
cpu = measurement
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu,host=server01 value=9.64 14340555620’
host = tagserver01 = valor da tag
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu,host=server01 value=9.64 143405556200’
value = field9.64 = valor da medição
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu,host=server01 value=9.64 143405556200’
Data e hora em formato Epoch Time
Globalcode – Open4education
Retention Polices (RP)
CREATE RETENTION POLICY <rp-name> ON <db-name> DURATION <duration> REPLICATION <n> [DEFAULT]
ex:CREATE RETENTION POLICY high_precision ON mydb DURATION 7d REPLICATION 3 DEFAULT
Globalcode – Open4education
Consultando no InfluxDb
curl -GET 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT value FROM cpu WHERE host='server01'"
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Aggregates
SELECT MEAN(value) FROM cpuWHERE time > now() - 1hGROUP BY time(10m)
Globalcode – Open4education
Schema Exploration
• SHOW DATABASES• SHOW RETENTION POLICIES• SHOW SERIES• SHOW MEASUREMENTS• SHOW TAG KEYS• SHOW TAG VALUES• SHOW FIELD KEYS
Globalcode – Open4education
Functions
• min / max • percentile • first / last• mean • count • sum • median• distinct • difference• moving_average
Globalcode – Open4education
Continuous Queries
CREATE CONTINUOUS QUERY "cpu_10min" ON mydb BEGIN
SELECT mean(value) INTO media_cpu_10_minFROM cpu
GROUP BY time(10m) END;
Globalcode – Open4education
Administração
• Relay
• Cluster
• Backup
• Restore
Globalcode – Open4education
T.I.C.K
Telegraf
InfluxDB
Chronograf
Kapacitor
Globalcode – Open4education
É tipo ELK?
Globalcode – Open4education
Telegraf
• + 50 plugins de inputex: Docker, Linux, Redis, Apache, PHP-FPM, Windows e etc.
• + 15 plugins de outputex: InfluxDB, Datadog, File, OpenTSDB, Prometheus e etc.
Globalcode – Open4education
Chronograf
Globalcode – Open4education
Chronograf
Globalcode – Open4education
Kapacitor
Kapacitor é uma estrutura de processamento de dados Open Source que facilita a criação de alertas sobre estruturas de dados temporais e detecção de anomalias.
Globalcode – Open4education
Exemplo de um .tickstream |from() .measurement('cpu')
|window() .period(10m) .every(5m) |alert()
.warn(lambda: "value" > 80) .crit(lambda: "value" > 90) .log('/tmp/alerts.log')
.slack() .channel(“#alerts”)
Globalcode – Open4education
InfluxDb + Kapacitor
Globalcode – Open4education
Mais informações
Documentação e Slack da InfluxData:
https://docs.influxdata.com/
https://gophers.slack.com/messages/influxdb/