Do que se trata?
Então, você tem um caso de uso de séries temporais? Eu também, e este artigo do blog é a prova disso.
Quando aprendo sobre um novo assunto, gosto de usar o método de loci para memorizar e conectar os novos conceitos. O método usa um local familiar (sua casa, por exemplo) pelo qual você passa (mentalmente) e preenche com as coisas que deseja lembrar. Se eu quiser que minha memória guarde minha agenda para amanhã, posso começar pela entrada e "pendurar" minha consulta médica das 9h ao lado do meu enorme sombrero colorido. Ao "caminhar" até a cozinha, verei minha chamada do Zoom das 10h30 "fritando" em cima de uma frigideira com ovos mexidos. As imagens estranhas ajudam a lembrar melhor das coisas: nosso cérebro se apega ao incomum. É interessante notar que esse exemplo também é uma série temporal: cada evento em minha agenda acontece em um determinado horário e cada evento tem determinadas propriedades (nome, local etc.).
Vamos continuar com essa analogia de "andar por uma casa" e tentar fazer com que o novo conhecimento sobre séries temporais se fixe.
O Verde Quarto
Verde é uma cor alegre: natureza, renovação, crescimento, ideias frescas. Nossa definição de série temporal pertence à sala verde.
Quando seu filho estiver com febre e você medir a temperatura corporal dele a cada hora, você tem um série de medições ao longo do tempo. Quando você conecta clandestinamente um rastreador GPS ao carro de um criminoso, você obtém uma série de locais onde o carro para semanas ou meses. Que tal um Raspberry Pi projeto para coletar temperatura e umidade leituras uma vez por segundo que seu filho construiu para a feira de ciências da escola? Instale-o em sua fazenda de cannabis para fluxo esses dados em seu cluster do Couchbase! Em seguida, você pode usar os dados com um Couchbase Mobile para garantir as condições ideais para a melhor colheita dessa importante cultura.
Como você pode ver, os casos de uso de séries temporais vão muito além dos velhos e enfadonhos exemplos de ticker de ações e registros de servidores. Eles ainda se resumem a um lista (sequência, série) de valores (leituras, medições, pontos de dados) coletados ao longo do tempo. Atualmente, os casos de uso de séries temporais são comuns em produtos de consumo, tecnologias industriais e serviços comerciais. Essa popularidade inspirou o surgimento de bancos de dados de séries temporaisque incluem diferentes otimizações para trabalhar especificamente com dados de séries temporais. Por exemplo, fornecemos Exportador Prometheus (escrito em Python) para converter as métricas do Couchbase Server em Prometeu formato de série temporal, para que você possa criar seus painéis de monitoramento com Grafana.
Estamos deixando nosso verde sala com um relógio derretido pendurado no teto (precisa ser estranho, certo?) e um quadro branco derretido com uma série de medições distorcidas com registro de data e hora como um exemplo da séries temporais dados de um dia de verão no Arizona (em graus Fahrenheit):
1 2 3 4 5 |
2019-07-27 07:11:22, temperatura=90, umidade="Que umidade?", sentimento="suado" 2019-07-27 10:21:22, temperatura=98, umidade="Essa palavra novamente...", sentimento="a dor" 2019-07-27 12:34:56, temperatura=107, umidade="Preciso procurar essa palavra em um dicionário", sentimento="desesperado" 2019-07-27 15:00:27, temperatura=120, sentimento="fervendo por dentro, frito por fora" 2019-07-27 15:32:15, temperatura=, sentimento="confuso", termômetro-status="derretido" |
O Laranja Quarto
Laranja é a cor que atrai nossa atenção; ela geralmente traz a sensação de entusiasmo e calor. Portanto, é um bom lugar para colocar os detalhes de como trabalhamos com dados de séries temporais no Couchbase Server.
Wcerto!
Esteja preparado para lidar com muitas gravações! Casos de uso reais que envolvem dados de séries temporais produzem milhares de leituras - por hora, por minuto, por segundo. Quando você multiplica isso pelo número de dispositivos ou aplicativos que geram os dados, chega rapidamente a milhões de novas gravações por dia. O Couchbase Server otimiza a ingestão de dados com seu memória em primeiro lugararquitetura assíncrona. Os documentos JSON são compactados na memória, no disco e na conexão.
O Couchbase Server lida com todos os tipos de gravações - inserções, atualizações e upserts (inserir se a chave não existir; caso contrário, atualizar) - com a mesma eficiência. Você pode otimizar ainda mais suas atualizações com nossas operações de subdocumento disponíveis para todos os SDKs compatíveis (por exemplo, API de subdocumento do Java SDK).
Aagregar!
Quando você faz várias medições coletadas e as reúne em um único documento JSON, você agrega seus dados. Essa é uma etapa típica para otimizar o armazenamento de dados de séries temporais. Isso pode acontecer antes de inserir as medições em um banco de dados (pré-agregação): seu aplicativo ou seu software de ingestão de dados, como o StreamSets Data Collector, pode fazer o trabalho. Servidor Couchbase Serviço de eventos pode acumular valores de séries temporais após eles foram adicionados a um bucket. Nesse caso, uma função JavaScript é executada como um acionador OnUpdate do banco de dados para salvar valores de vários documentos JSON em uma matriz de valores em um documento JSON único. Qualquer uma dessas abordagens o levará, por exemplo, a, 60 documentos de leituras por segundo (veja abaixo)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
chave = "sensor::temp-press::2020-01-02T12:34:00" { "ts": "2020-01-02 12:34:00", "sensor": "tps-001", "temperatura": 112.4, "pressão": 21.7 } chave = "sensor::temp-press::2020-01-02T12:34:01" { "ts": "2020-01-02 12:34:01", "sensor": "tps-001", "temperatura": 110.8, "pressão": 21.2 } ... chave = "sensor::temp-press::2020-01-02T12:34:58" { "ts": "2020-01-02 12:34:58", "sensor": "tps-001", "pressão": 22.8 } chave = "sensor::temp-press::2020-01-02T12:34:59" { "ts": "2020-01-02 12:34:59", "sensor": "tps-001", "temperatura": 113.1, "pressão": 22.5 } |
para um único documento com todas as leituras, como o que está abaixo:
1 2 3 4 5 6 7 8 9 10 |
chave = "sensor::tps-001::1577968440" { "valores": { "t": [112.4, 110.8, ... nulo, 113.1], "p": [21.7, 21.2, ... 22.8, 22.5] }, "tipo": "temp-press", "schema": "1.3.5" } |
Além de eliminar dados duplicados (registros de data e hora, nomes longos de campos/atributos JSON), também fizemos as seguintes alterações:
- substituiu o carimbo de data/hora ISO pelo valor da época na chave do documento. O valor da época corresponde ao minuto (2020-01-02 12:34), para o qual coletamos leituras por segundo.
- adicionou o nome do sensor à chave do documento. Dessa forma, podemos consultar os valores do sensor específico usando operações de valor-chave, que é sempre a maneira mais rápida de trabalhar com documentos.
- dados de temperatura e pressão listados em matrizes de 60 elementos, uma medição por segundo;
- adicionou a versão do esquema JSON do documento.
A flexibilidade do formato JSON facilita o lançamento rápido de sua primeira versão (no espírito de "Pior é melhor") e evoluir o esquema do documento à medida que o aplicativo amadurece. Os bancos de dados especializados em séries temporais são muito mais rígidos nesse aspecto. No entanto, é uma prática recomendada manter o controle da versão do esquema em seus documentos. Isso ajuda a garantir a compatibilidade com versões anteriores em seus aplicativos. Também permite que você atualize os documentos para um novo esquema executando um N1QL ATUALIZAÇÃO consulta.
Rleia!
É hora de fazer algo útil com nossos dados de série temporal. Aqui estão as opções que a plataforma de dados Couchbase oferece:
- Leituras de valores-chave em menos de um milissegundo é o que o Couchbase Server faz muito bem, o dia inteiro. Afinal de contas, um dos principais motivos pelos quais agregamos nossos dados foi para obtê-los facilmente em uma única operação de leitura.
- Consultas SQL para seus dados JSON. A linguagem N1QL herdou propositadamente a sintaxe SQL para facilitar o seu aprendizado.
- Pesquisa de texto completo é outra maneira de trabalhar com dados disponíveis no Couchbase Server. Dependendo do seu caso de uso, a pesquisa pode ser uma alternativa melhor para consultas geoespaciais, com reconhecimento de idioma, intervalo numérico e intervalo de datas. Melhor ainda, você pode combinar pesquisa e N1QL em uma única consulta.
- O Analytics é um ajuste natural para dados de séries temporais. Como parte de nossa plataforma de dados, oferecemos Serviço de análise que permite obter uma ampla variedade de insights de negócios a partir de seus dados. O Couchbase Analytics é executado como parte do mesmo cluster em que seus dados residem, portanto, não são necessárias operações de ETL (Extrair, Transformar, Carregar). Você executa consultas paralelas eficientes em cópias de sombra atualizadas dos dados.
- O Couchbase também é compatível com outros sistemas. Oferecemos conectores de Big Data compatíveis com sistemas populares, como Faísca, Kafkae Elasticsearch.
MAvançar!
Mais cedo ou mais tarde, será hora de seguir em frente. Por quanto tempo você precisa manter seus dados? Sempre fazemos essa pergunta quando ajudamos nossos clientes a dimensionar seus clusters. Com o Couchbase, é fácil aumentar ou diminuir a escala. Uma empresa de jogos on-line pode querer começar com alguns nós extras ao lançar um novo jogo. Por outro lado, uma startup com um orçamento apertado pode ter que ser mais vigilante quanto à quantidade de dados que mantém.
Como podemos excluir dados no Couchbase?
- Definir a expiração do documento (também conhecida como TTL, time to live). Os valores de TTL fazem parte dos metadados do documento: se TTL for zero, o documento não expirará. Um valor maior que zero é o número de segundos, após os quais o documento será marcado como excluído. O TTL pode ser definido e atualizado por meio de métodos SDK ou (a partir do Couchbase Server 6.5.1) por meio de Consulta N1QL.
- Conjunto TTL em um balde. Todos os novos documentos que entrarem no compartimento receberão o TTL atribuído, a menos que ele já esteja definido.
- Excluir documentos por meio de consulta N1QL ou função Eventing. As funções de eventos também podem ser executadas por cronômetros .
- Dê descarga ou deixe cair o balde inteiro.
Antes de excluir os dados do cluster do Couchbase, talvez você queira arquivá-los ou compartilhá-los por alguns dos motivos abaixo:
- Arquivar documentos em outro cluster do Couchbase usando XDCR (replicação entre centros de dados). Os documentos no bucket de origem podem ter TTLs, que podem ser removidos antes de entrar no bucket de destino. Essa opção é configurável para replicações XDCR.
- Arquivar documentos em um sistema de armazenamento mais barato (por exemplo, AWS S3) para retenção mais longa.
- Mover documentos para um sistema diferente para análise posterior (por exemplo, um lago de dados para pesquisa científica de longo prazo).
Como estamos deixando nossa laranja sala, vamos manter isso W.A.R.M. sentimento (Write, Aggregate, Read, Move on) em nossa memória. O ciclo de vida dos dados da série temporal é mostrado com essas letras maiúsculas - uma letra em cada parede - e as setas onduladas (como a acima) que as conectam.
Mais quartos em breve
Bem, amarelo é a cor da esperança, mas é muito difícil de ler em um fundo branco. Vou usá-la aqui uma vez como símbolo da minha esperança de compartilhar o Episódio 2 desta Série sobre o Tempo com vocês em breve. Obrigado por seu tempo!