Há muitos casos de uso em que a expiração automática de documentos funciona perfeitamente. Manutenção do estado da sessão, carrinhos de compras, cotações de preços para viagens e muito mais. Em todos esses casos, os aplicativos que usam o Couchbase Server definem o tempo de expiração em segundos, minutos ou horas para gerenciar o comportamento do usuário.

Para itens com expiração no banco de dados, o Couchbase Server tem inteligência integrada para fazer com que os dados desapareçam no tempo de expiração determinado. Você pode encontrar tudo sobre TTL e expiração aqui na documentação do Couchbase Server.

A maioria desses sistemas com expiração também vem com casos de uso em que você deseja renovar os dados expirados ou notificar um sistema downstream de que um conjunto de documentos está prestes a expirar. A renovação ou as notificações de dados expirados geralmente envolvem um processo que analisa as próximas expirações de documentos. A consulta a essas informações ficou muito mais rápida com a adição de índices globais e N1QL.

No passado, você podia indexar essas informações em visualizações de mapa/reprodução. Embora as visualizações de mapa/reprodução possam oferecer uma indexação avançada, devido à coleta dispersa, os índices globais têm uma vantagem.

Aqui está o motivo: Os índices globais são particionados independentemente dos dados. Por exemplo, mesmo que seus dados estejam espalhados por 20 nós, os índices globais podem residir em um único nó se o índice couber nesse único nó. Você também não precisa escolher o mesmo HW para os nós de índice e de dados no Couchbase Server. Isso significa que você pode obter um nó de índice que seja "alto" o suficiente para caber o índice. Você pode ler mais sobre as diferenças entre as visualizações de mapa/reprodução e os índices secundários globais aqui.

Veja como você indexa e consulta as informações de expiração para detectar dados que estão expirando: Usarei o .Net nos exemplos.

Etapa 1 Incluir a expiração no corpo do documento: você não precisará fazer isso no futuro, mas, atualmente, META() ainda não expõe a expiração. No código abaixo, adicione um atributo exp_datetime ao JSON que calcula o tempo aproximado em que o documento expiraria. (Lembre-se de que este é um sistema distribuído e não há uma hora central. Os relógios estarão ligeiramente desregulados nos nós do cliente e do servidor, portanto, é difícil detectar a hora exata da expiração).

Etapa 2 - Criar um índice sobre o tempo de expiração.

Etapa 3 - Consulta de dados que expiram nos próximos 30 segundos. A consulta a seguir retornará os IDs dos documentos e os valores completos dos documentos.

A saída conterá todos os documentos que expiram nos próximos 30 segundos.

Feliz Hacking

Autor

Postado por Cihan Biyikoglu, diretor de gerenciamento de produtos, Couchbase

Cihan Biyikoglu é diretor de gerenciamento de produtos da Couchbase, responsável pelo produto Couchbase Server. Cihan é um entusiasta de big data que traz mais de vinte anos de experiência para a equipe de produtos da Redis Labs. Cihan começou sua carreira como desenvolvedor C/C++.

Deixar uma resposta