Banco de dados em tempo real - Real-time database

Um banco de dados em tempo real é um sistema de banco de dados que usa processamento em tempo real para lidar com cargas de trabalho cujo estado está em constante mudança. Isso difere dos bancos de dados tradicionais que contêm dados persistentes , em sua maioria não afetados pelo tempo. Por exemplo, um mercado de ações muda muito rapidamente e é dinâmico. Os gráficos dos diferentes mercados parecem ser muito instáveis ​​e, no entanto, um banco de dados precisa acompanhar os valores atuais de todos os mercados da Bolsa de Valores de Nova York . O processamento em tempo real significa que uma transação é processada rápido o suficiente para que o resultado volte e seja acionado imediatamente. Os bancos de dados em tempo real são úteis para contabilidade, banco, direito, registros médicos , multimídia , controle de processos, sistemas de reserva e análise de dados científicos.

Visão geral

Os bancos de dados em tempo real são bancos de dados tradicionais que usam uma extensão para fornecer o poder adicional de produzir respostas confiáveis. Eles usam restrições de tempo que representam um certo intervalo de valores para os quais os dados são válidos. Este intervalo é chamado de validade temporal. Um banco de dados convencional não pode funcionar nessas circunstâncias porque as inconsistências entre os objetos do mundo real e os dados que os representam são muito graves para modificações simples. Um sistema eficaz precisa ser capaz de lidar com consultas urgentes, retornar apenas dados válidos temporariamente e suportar agendamento de prioridade. Para inserir os dados nos registros, geralmente um sensor ou dispositivo de entrada monitora o estado do sistema físico e atualiza o banco de dados com novas informações para refletir o sistema físico com mais precisão. Ao projetar um sistema de banco de dados em tempo real , deve-se considerar como representar o tempo válido, como os fatos estão associados ao sistema em tempo real . Além disso, considere como representar os valores dos atributos no banco de dados para que as transações do processo e a consistência dos dados não tenham violações.

Ao projetar um sistema, é importante considerar o que o sistema deve fazer quando os prazos não são cumpridos. Por exemplo, um sistema de controle de tráfego aéreo monitora constantemente centenas de aeronaves e toma decisões sobre as rotas de voo de entrada e determina a ordem em que a aeronave deve pousar com base em dados como combustível, altitude e velocidade. Se alguma dessas informações estiver atrasada, o resultado pode ser devastador. Para resolver problemas de dados obsoletos, o carimbo de data / hora pode oferecer suporte a transações, fornecendo referências de tempo claras.

Preservando a consistência dos dados

Embora o sistema de banco de dados em tempo real possa parecer um sistema simples, surgem problemas durante a sobrecarga, quando duas ou mais transações de banco de dados requerem acesso à mesma parte do banco de dados. Uma transação geralmente é o resultado da execução de um programa que acessa ou altera o conteúdo de um banco de dados. Uma transação é diferente de um fluxo porque um fluxo permite apenas operações somente leitura e as transações podem fazer operações de leitura e gravação. Isso significa que em um fluxo, vários usuários podem ler os mesmos dados, mas não podem ambos modificá-los. Um banco de dados deve permitir que apenas uma transação opere por vez para preservar a consistência dos dados . Por exemplo, se dois alunos exigirem a vaga restante para uma seção de uma aula e clicarem em enviar ao mesmo tempo, apenas um aluno poderá se inscrever.

Os bancos de dados em tempo real podem processar essas solicitações utilizando algoritmos de agendamento para controle de simultaneidade , priorizando as solicitações dos alunos de alguma forma. Ao longo deste artigo, presumimos que o sistema possui um único processador, um banco de dados baseado em disco e um pool de memória principal.

Em bancos de dados em tempo real, os prazos são formados e diferentes tipos de sistemas respondem aos dados que não cumprem seus prazos de maneiras diferentes. Em um sistema de tempo real, cada transação usa um carimbo de data / hora para agendar as transações. Uma unidade de mapeamento de prioridade atribui um nível de importância a cada transação após sua chegada no sistema de banco de dados que depende de como o sistema visualiza os tempos e outras prioridades. O método de carimbo de data / hora depende da hora de chegada no sistema. Os pesquisadores indicam que, para a maioria dos estudos, as transações são esporádicas com tempos de chegada imprevisíveis. Por exemplo, o sistema atribui um prazo de solicitação anterior a uma prioridade mais alta e um prazo posterior a uma prioridade menor. Abaixo está uma comparação de diferentes algoritmos de programação.

Prazo inicial
PT = DT - O valor de uma transação não é importante. Um exemplo é um grupo de pessoas ligando para pedir um produto.
Valor mais alto
PT = 1 / VT - O prazo não é importante. Algumas transações devem chegar à CPU com base na criticidade, não na justiça. Este é um exemplo de menor folga que pode esperar o mínimo de tempo. Se as centrais telefônicas estiverem sobrecarregadas, as pessoas que ligam para o 911 devem ter prioridade.
Prazo inflacionado do valor
PT = DT / VT - Dá peso igual ao prazo e aos valores com base no agendamento. Um exemplo é a inscrição em aulas em que o aluno seleciona um bloco de aulas que deseja assistir e clica em enviar. Nesse cenário, as prioridades mais altas geralmente têm precedência. Um sistema de registro de escola provavelmente usa essa técnica quando o servidor recebe duas transações de registro. Se um aluno tivesse 22 créditos e o outro 100 créditos, a pessoa com 100 créditos teria prioridade (agendamento baseado em valor).

Restrições de tempo e prazos

Um sistema que percebe corretamente a serialização e as restrições de tempo associadas às transações com prazos suaves ou firmes, aproveita a consistência absoluta . Outra maneira de garantir que os dados sejam absolutos é usar restrições relativas. Restrições relativas garantem que as transações entrem no sistema ao mesmo tempo que o resto do grupo ao qual a transação de dados está associada. Usar os mecanismos de restrições absolutas e relativas garante muito a precisão dos dados.

Uma maneira adicional de lidar com a resolução de conflitos em um sistema de banco de dados em tempo real, além dos prazos, é um método de política de espera. Este processo ajuda a garantir as informações mais recentes em sistemas críticos de tempo. A política evita o conflito pedindo a todos os blocos não solicitantes que esperem até que o bloco de dados mais essencial seja processado. Embora estudos em laboratórios tenham descoberto que as políticas baseadas em prazos de dados não melhoram o desempenho significativamente, a política de espera forçada pode melhorar o desempenho em 50 por cento. A política de espera forçada pode envolver a espera pelo processamento de transações de prioridade mais alta para evitar o deadlock. Outro exemplo de quando os dados podem ser atrasados ​​é quando um bloco de dados está prestes a expirar. A política de espera forçada atrasa o processamento até que os dados sejam atualizados usando novos dados de entrada. O último método ajuda a aumentar a precisão do sistema e pode reduzir o número de processos necessários que são abortados. Geralmente, confiar em políticas de espera não é o ideal.

É preciso discutir a formação de prazos. Os prazos são as restrições para os dados que serão substituídos em breve acessados ​​pela transação. Os prazos podem ser observadores ou preditivos. Em um sistema de cumprimento de prazos, todas as transações não concluídas são examinadas e o processador determina se alguma delas cumpriu seu prazo. Problemas surgem neste método por causa de variações causadas por variações de tempo de busca, gerenciamento de buffer e falhas de página . Uma forma mais estável de organizar prazos é o método preditivo. Ele cria uma programação candidata e determina se uma transação perderia seu prazo final dentro da programação.

O tipo de resposta a um prazo perdido depende se o prazo é rígido, flexível ou firme. Os prazos rígidos exigem que cada pacote de dados chegue ao seu destino antes que o pacote tenha expirado e, caso contrário, o processo pode ser perdido, causando um possível problema. Problemas como esses não são muito comuns porque a onipotência do sistema é necessária antes de atribuir prazos para determinar o pior caso. Isso é muito difícil de fazer e se algo inesperado acontecer ao sistema, como um pequeno problema de hardware, isso pode prejudicar os dados. Para prazos suaves ou firmes, perder um prazo pode levar a um desempenho degradado, mas não a uma catástrofe. Um prazo flexível atende ao maior número possível de prazos. No entanto, não existe garantia de que o sistema possa cumprir todos os prazos. Caso uma transação perca seu prazo, o sistema tem mais flexibilidade e a transação pode aumentar em importância. Abaixo está uma descrição dessas respostas:

Prazo difícil
Se o não cumprimento dos prazos criar problemas, um prazo difícil é o melhor. É periódico, o que significa que entra no banco de dados em um padrão rítmico regular. Um exemplo são os dados coletados por um sensor. Eles são freqüentemente usados ​​em sistemas críticos para a vida.
Prazo firme
Os prazos firmes parecem semelhantes aos prazos rígidos, mas diferem dos prazos rígidos porque os prazos firmes medem a importância de concluir a transação em algum ponto após a chegada da transação. Às vezes, concluir uma transação após o vencimento do prazo pode ser prejudicial ou não ajudar, e tanto os prazos firmes quanto os rígidos levam isso em consideração. Um exemplo de prazo firme é um sistema de piloto automático.
Prazo flexível
Se cumprir as restrições de tempo é desejável, mas os prazos perdidos não causam danos sérios, um prazo flexível pode ser melhor. Opera em regime aperiódico ou irregular. Na verdade, a chegada de cada vez para cada tarefa é desconhecida. Um exemplo é uma mesa de comutação de operadora de um telefone.

Os processos de hard deadline abortam transações que ultrapassaram o prazo, melhorando o sistema ao limpar a desordem que precisa ser processada. Os processos podem limpar não apenas as transações com prazos expirados, mas também as transações com os prazos mais longos, supondo que, uma vez que cheguem ao processador, estariam obsoletas. Isso significa que outras transações devem ter prioridade mais alta. Além disso, um sistema pode remover as transações menos críticas. Quando eu estava pré-selecionando aulas durante um período de alto tráfego, um campo no banco de dados pode ficar tão ocupado com solicitações de registro que ficou indisponível por um tempo e o resultado da minha transação foi uma exibição da consulta SQL enviada e uma mensagem que disse que os dados não estão disponíveis no momento. Esse erro é causado pelo verificador, um mecanismo que verifica a condição das regras e a regra que ocorreu antes dela.

O objetivo de agendar períodos e prazos é atualizar transações com garantia de conclusão antes de seu prazo de forma que a carga de trabalho seja mínima. Com grandes bancos de dados em tempo real, as funções de buffer podem ajudar a melhorar o desempenho tremendamente. Um buffer é parte do banco de dados que é armazenado na memória principal para reduzir o tempo de resposta da transação. Para reduzir as transações de entrada e saída do disco, um certo número de buffers deve ser alocado. Às vezes, as multiversões são armazenadas em buffers quando o bloco de dados de que a transação precisa está em uso. Posteriormente, o banco de dados terá os dados anexados a ele. Diferentes estratégias alocam buffers e devem balancear entre ocupar uma quantidade excessiva de memória e ter tudo em um buffer que precisa ser pesquisado. O objetivo é eliminar o tempo de busca e distribuir os recursos entre os frames do buffer para acessar os dados rapidamente. Um gerenciador de buffer é capaz de alocar mais memória, se necessário, para melhorar o tempo de resposta. O gerenciador de buffer pode até determinar se uma transação que ele possui deve avançar. O armazenamento em buffer pode melhorar a velocidade em sistemas em tempo real.

Sistemas de banco de dados futuros

Os bancos de dados tradicionais são persistentes, mas incapazes de lidar com dados dinâmicos que mudam constantemente. Portanto, outro sistema é necessário. Os bancos de dados em tempo real podem ser modificados para melhorar a precisão e a eficiência e evitar conflitos, fornecendo prazos e períodos de espera para garantir a consistência temporal. Os sistemas de banco de dados em tempo real oferecem uma maneira de monitorar um sistema físico e representá-lo em fluxos de dados para um banco de dados. Um fluxo de dados, como a memória, diminui com o tempo. Para garantir que as informações mais recentes e precisas sejam registradas, há várias maneiras de verificar as transações para garantir que sejam executadas na ordem correta. Uma casa de leilões online fornece um exemplo de banco de dados que muda rapidamente.

Agora, os sistemas de banco de dados são mais rápidos do que antes. No futuro, podemos esperar sistemas de banco de dados ainda mais rápidos. Embora tenhamos sistemas mais rápidos agora, um esforço para reduzir erros e atrasos ainda será benéfico. A capacidade de processar os resultados em tempo hábil e previsível sempre será mais importante do que o processamento rápido. O processamento rápido mal aplicado não é útil para sistemas de banco de dados em tempo real. As transações que são executadas mais rapidamente às vezes ainda são bloqueadas de tal forma que precisam ser abortadas e reiniciadas. Na verdade, o processamento mais rápido prejudica alguns aplicativos em tempo real porque o aumento da velocidade traz mais complexidade e mais chances de problemas causados ​​por uma variação de velocidade. O processamento mais rápido torna mais difícil determinar quais prazos foram cumpridos com êxito. Com os futuros sistemas de banco de dados rodando ainda mais rápido do que nunca, é necessário fazer mais estudos para que possamos continuar a ter sistemas eficientes.

A quantidade de pesquisas que estudam sistemas de banco de dados em tempo real aumentará por causa de aplicativos comerciais, como casas de leilão baseadas na web como o eBay . Mais países em desenvolvimento estão expandindo seus sistemas telefônicos, e o número de pessoas com telefones celulares nos Estados Unidos, bem como em outros lugares do mundo, continua crescendo. Também é provável que impulsione a pesquisa em tempo real o aumento exponencial da velocidade do microprocessador. Isso também permite novas tecnologias, como videoconferência pela web e conversas de mensagens instantâneas em som e vídeo de alta resolução, que dependem de sistemas de banco de dados em tempo real. Estudos de consistência temporal resultam em novos protocolos e restrições de tempo com o objetivo de lidar com transações em tempo real de forma mais eficaz.

Referências

Leitura adicional