Spanner para cargas de trabalho não relacionais

O Spanner é um sistema de banco de dados altamente confiável e totalmente gerenciado. Embora o Spanner tenha evoluído para se tornar um sistema de gerenciamento de banco de dados relacional, ele tem raízes como um sistema de armazenamento de chave-valor não relacional e mantém as características fundamentais desse sistema. Assim, é possível usar o Spanner como um banco de dados não relacional (NoSQL) e migrar de outros bancos de dados não relacionais para o Spanner. Este documento ajuda a entender se o Spanner é adequado para suas cargas de trabalho não relacionais.

Os bancos de dados NoSQL começaram a ser usados durante uma época em que os bancos de dados relacionais tradicionais não tinham recursos para dar suporte a aplicativos emergentes que exigiam alta escalonabilidade, disponibilidade e elasticidade computacional. Eles fizeram isso sacrificando vários recursos geralmente essenciais para o gerenciamento de dados, como transações, consistência e consultas ad-hoc. O Spanner foi criado para dar suporte à natureza exigente de aplicativos altamente disponíveis e funcionalidades fornecidas por bancos de dados relacionais tradicionais, para que os clientes possam aproveitar os dois conjuntos de recursos.

Com o Spanner, você pode começar com necessidades de armazenamento simples e não relacionais e escalonar seu aplicativo conforme necessário.

Como o Spanner atende aos critérios do banco de dados NoSQL

O Spanner atende aos principais critérios a seguir para as cargas de trabalho NoSQL.

Escala e desempenho

Os bancos de dados NoSQL ganharam popularidade devido à capacidade de escalonar leituras e gravações horizontalmente. Com o Spanner, você não precisa se preocupar com o escalonamento ou o desempenho. Os bancos de dados do Spanner com estilo de chave-valor podem ser escalonados horizontalmente para suportar centenas de milhões de solicitações de leitura ou gravação por segundo e petabytes de dados. A capacidade de computação do Spanner é escalonada de acordo com a carga de trabalho, mantendo um perfil consistente e de baixa latência mesmo quando o aplicativo é escalonado por várias ordens de magnitude.

API NoSQL

Os bancos de dados relacionais tradicionais são normalmente acessados usando SQL, que vem com uma curva de aprendizado para desenvolvedores não familiarizados com bancos de dados relacionais. Os clientes desses bancos de dados também costumam depender de conexões persistentes e exigem que a infraestrutura de pool de conexões seja implantada para escalonar. Por outro lado, a API Spanner é criada com base em um modelo de solicitação e resposta gRPC/HTTP2 que lida automaticamente com falhas de conexão. O Spanner fornece APIs de leitura e gravação NoSQL simples, nativas da linguagem e eficientes que não exigem conhecimento em SQL. Além disso, os clientes do Spanner não exigem pool de conexões para fazer o escalonamento.

Totalmente gerenciado

Uma grande vantagem dos bancos de dados NoSQL é que eles são percebidos como mais fáceis de gerenciar. Por ser um serviço totalmente gerenciado, o Spanner não sobrecarrega os clientes. O Spanner executa atualizações de software e hardware sem inatividade nos bastidores, mantendo a compatibilidade com versões anteriores. A API e a semântica do Spanner são as mesmas que se as operações estivessem sendo realizadas em um único banco de dados de máquina e não exigem conhecimento da arquitetura interna do Spanner. O Spanner é executado em implantações que variam de 1/10 de nó a dezenas de milhares de nós, com escalonamento automático e responsivo usando um escalonador automático gerenciado.

Dados semiestruturados

O Spanner aceita tipos de dados flexíveis, como JSON e BYTES, usados para armazenar dados semiestruturados ou não estruturados. Como outros bancos de dados NoSQL, é possível usar esses tipos de dados para evitar a especificação antecipada de todo o esquema de armazenamento.

Controle de acesso

Assim como outros bancos de dados NoSQL, o Spanner é compatível com controle de acesso baseado em IAM. Os administradores podem configurar e administrar políticas de controle de acesso sem armazenar nomes de usuário e senhas no banco de dados.

Qual é a diferença entre o Spanner e os bancos de dados NoSQL tradicionais

O Spanner oferece as seguintes vantagens em relação aos bancos de dados NoSQL tradicionais.

Transações

À medida que os aplicativos ficam mais complexos, muitas vezes eles precisam executar operações transacionais de várias linhas e tabelas no banco de dados. Com o Spanner, você não precisa migrar para um repositório de dados transacional à medida que seu banco de dados cresce, porque o Spanner tem suporte total para transações de leitura e gravação. Por ser um banco de dados compatível com ACID, o Spanner mantém a consistência transacional do seu banco de dados o tempo todo, independentemente da escala.

Modelagem de dados

O design de esquemas em bancos de dados NoSQL pode não ser natural devido à necessidade de encaixar todos os dados em uma tabela e à desnormalização de dados forçada devido à impossibilidade de realizar mesclagens. Com ele, é possível especificar um esquema sem reordenar a uma única tabela ou desnormalização. Para otimizar os padrões de acesso que afetam várias tabelas, use a intercalação de tabelas. Também é possível fazer mesclagens entre tabelas.

Consultas ad hoc

Mesmo se você usar principalmente a API NoSQL, muitas vezes ainda será útil executar consultas ad hoc para fins de depuração ou análise. O Spanner segue a linguagem de consulta SQL padrão. É possível usar a priorização de solicitações para isolar o tráfego ad hoc de baixa prioridade do tráfego on-line ou usar o Data Boost do Spanner para executar consultas analíticas em recursos de computação completamente isolados do tráfego de banco de dados on-line.

Índices secundários com consistência forte

Os aplicativos geralmente exigem índices secundários para oferecer suporte a pesquisas de baixa latência. Os bancos de dados NoSQL típicos oferecem índices secundários com consistência posterior ou limitam o tamanho de um índice. Isso pode complicar a lógica do aplicativo, que precisa contornar essas restrições. O Spanner oferece índices secundários com consistência forte em escala sem restrições de tamanho. Isso permite que você se concentre na lógica do aplicativo e não se preocupe com problemas de consistência.

O Spanner é ideal para suas necessidades de banco de dados NoSQL?

O Spanner é um sistema flexível de armazenamento de dados compatível com casos de uso de SQL e NoSQL. Embora alguns aplicativos comecem com necessidades simples de armazenamento, à medida que crescem em complexidade, precisam de mais recursos normalmente não oferecidos por bancos de dados NoSQL, como transações, índices secundários consistentes e uma linguagem de consulta flexível. Com o Spanner, você não fica limitado por essas limitações e pode expandir seu aplicativo conforme necessário.

A maioria das cargas de trabalho não relacionais são ideais para o Spanner. O Spanner oferece uma API NoSQL de leitura/gravação direta, mas também é apoiado por alta disponibilidade, alta confiabilidade, baixa latência, elasticidade de computação e escalonabilidade extrema. O Spanner permite consolidar diversas cargas de trabalho em uma única plataforma flexível.