Garnet agora é código aberto
Microsoft revelou recentemente seu decisão de libertar Garnet, seu sistema de gerenciamento de banco de dados NoSQL, como código aberto. Este sistema NoSQL é focado na criação de lojas de cache e compatível com bibliotecas clientes existentes para armazenamento Redis.
Granada permite a criação de clusters de cache escaláveis que suportam replicação, migração de chaves e fragmentação de dados entre nós de cluster. O mecanismo Tsavorite é usado para armazenar dados no Garnet (um fork do armazenamento FASTER da Microsoft).
Ao abrir o código-fonte do Garnet, esperamos permitir que a comunidade de desenvolvedores se beneficie de suas melhorias e capacidades de desempenho, desenvolva nosso trabalho e expanda o ecossistema Garnet adicionando novos recursos e chamadas de API. Esperamos também que o código aberto incentive o acompanhamento da pesquisa acadêmica e abra futuras oportunidades de colaboração nesta importante área de pesquisa.
Sobre Granada
Arquitetura de Granada separa a lógica para análise e processamento de solicitações de operações de armazenamento e os dados são armazenados usando dois armazenamentos de valores-chave baseados na biblioteca Tsavorite.
O primeiro armazém, "principal", é otimizado para operações rápidas de string, enquanto o segundo armazenamento, "objeto", é otimizado para lidar com objetos complexos e tipos de dados avançados, como hashes e listas. Os tipos de dados no segundo armazenamento são implementados usando bibliotecas .NET. Os dados são armazenados no heap (heap C#), permitindo que sejam atualizados com eficiência e serializados em disco.
Tsavorite suporta processamento de consulta multithread, transações, confirmando alterações em modo sem bloqueio (checkpointing), recuperação de falhas, armazenamento de cópias redundantes e manutenção de um log de operações.
O driver de rede no Garnet é baseado em arquitetura de memória compartilhada proposto pelo projeto de pesquisa ShadowFax. O processamento TLS e a interação com o armazenamento são realizados em um único thread para evitar a sobrecarga de comutação de threads e usar o cache da CPU com mais eficiência ao transferir dados pela rede.
O sistema NoSQL Garnet apresenta uma série de recursos excelentes o que o torna versátil e eficiente para diversas aplicações de armazenamento e manuseio, uma vez que permite armazenamento em vários níveis implementando armazenamento RAM, unidades SSD e armazenamento em nuvem, otimizando a distribuição de dados sob demanda para criar caches eficientes.
Além disso, tem suporte extensível ao dispositivo, pois oferece camadas otimizadas para funcionar com diferentes tipos de dispositivos, como SSDs, discos rígidos e armazenamento em nuvem do Azure Storage.
Ele também tem suporte para diferentes tipos de dados, pois permite armazenar valores de string e estruturas de dados complexas, como listas, hashes, conjuntos, listas ordenadas e dados de geolocalização, com a capacidade de definir o tempo de vida das chaves.
Das outras características O que se destaca em Garnet:
- Evita a fragmentação e garante o gerenciamento eficiente do espaço liberado na RAM.
- Permite definir limites configuráveis no tamanho da memória utilizada para índices, logs e armazenamento de objetos, adaptando-se às necessidades do sistema.
- Facilita o acesso ao armazenamento usando clientes Redis sem modificações adicionais.
- Oferece uma API para realizar consultas analíticas, transações e utilizar o paradigma de publicação/assinatura, proporcionando flexibilidade na manipulação de dados.
- Fornece meios para estabelecer políticas de controle de acesso de maneira flexível por meio de ACLs.
- Permite definir a configuração do sistema de armazenamento em formatos comuns e acessíveis.
- Fornece suporte para conexão de controladores de rede adicionais e criptografia de tráfego usando TLS, garantindo a segurança dos dados.
- Ele permite criar extensões em C# para implementar operações adicionais com strings e objetos, oferecendo flexibilidade e extensibilidade.
- Inclui suporte para procedimentos armazenados transacionais, restauração de pontos de verificação, modo AOF (anexar somente arquivo) e a capacidade de criar clusters de armazenamento com replicação, fragmentação e recuperação de nós com falha.
- Oferece desempenho superior e baixa latência no processamento de consultas, superando os sistemas concorrentes em termos de capacidade de resposta e eficiência de processamento de dados.
Para os interessado no código do projeto, você deve saber que ele está escrito em C# com um núcleo de armazenamento C++, É lançado sob a licença MIT e é compatível com Linux e Windows.