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 você a entender se o Spanner é adequado para suas cargas de trabalho não relacionais.
Os bancos de dados NoSQL começaram a ser usados em um período em que os bancos de dados relacionais tradicionais não tinham recursos para oferecer suporte a aplicativos emergentes que exigiam alta escalonabilidade, disponibilidade e elasticidade de computação. Isso foi feito sacrificando vários recursos muitas vezes essenciais para o gerenciamento de dados, como transações, consistência e consultas ad hoc. O Spanner foi criado para oferecer suporte à natureza exigente de aplicativos e funcionalidades altamente disponíveis fornecidos por bancos de dados relacionais tradicionais, para que os clientes possam aproveitar ambos os conjuntos de recursos.
Com o Spanner, você pode começar com necessidades de armazenamento simples e não relacionais e dimensionar seu aplicativo conforme necessário.
Como o Spanner atende aos critérios do banco de dados NoSQL
O Spanner atende aos seguintes critérios importantes para suas 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 a escala ou o desempenho. Os bancos de dados Spanner com estilo de chave-valor podem ser escalonados horizontalmente para oferecer suporte a 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 é dimensionada com a carga de trabalho, mantendo um perfil consistente e de baixa latência, mesmo quando o aplicativo é dimensionado em várias ordens de magnitude.
API NoSQL
Os bancos de dados relacionais tradicionais geralmente são acessados usando SQL, que tem uma curva de aprendizado para desenvolvedores que não estão familiarizados com bancos de dados relacionais. Os clientes desses bancos de dados também dependem de conexões persistentes e exigem que a infraestrutura de pool de conexões seja implantada para escalonar. Em contraste, a API Spanner é construída em cima de um modelo de solicitação e resposta gRPC/HTTP2 que processa automaticamente falhas de conexão. O Spanner oferece APIs de leitura e gravação NoSQL simples, nativas da linguagem e eficientes, que não exigem conhecimento de SQL. Além disso, os clientes do Spanner não precisam de agrupamento de conexões para dimensionar.
Totalmente gerenciado
Uma grande vantagem dos bancos de dados NoSQL é que eles são considerados mais fáceis de gerenciar. Como um serviço totalmente gerenciado, o Spanner não impõe nenhuma carga operacional aos clientes. O Spanner executa atualizações de software e hardware sem tempo de inatividade por trás, 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 exigissem conhecimento da arquitetura interna do Spanner. O Spanner é executado em implantações que variam de 1/10 de um nó a dezenas de milhares de nós, escalonando de forma automática e responsiva com um escalonador gerenciado.
Dados semiestruturados
O Spanner oferece suporte a tipos de dados flexíveis, como JSON e BYTES, que são usados para armazenar dados semiestruturados ou não estruturados. Como outros bancos de dados NoSQL, é possível usar esses tipos de dados para evitar especificar todo o esquema de armazenamento de antemão.
Controle de acesso
Como outros bancos de dados NoSQL, o Spanner oferece suporte ao 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.
Como o Spanner é diferente dos 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 crescem em complexidade, eles geralmente precisam realizar operações transacionais de várias linhas e várias tabelas no banco de dados. Com o Spanner, você não precisa migrar para um repositório de dados transacional conforme seu banco de dados cresce, porque ele tem suporte total para transações de leitura-gravação. Como um banco de dados compatível com ACID, o Spanner mantém a consistência transacional do banco de dados o tempo todo, independente da escala.
Modelagem de dados
O design do esquema em bancos de dados NoSQL pode ser não natural devido à necessidade de ajustar todos os dados em uma tabela e desnormalizar os dados forçosamente devido à incapacidade de realizar junções. Com o Spanner, é possível especificar seu esquema sem recorrer a uma única tabela ou desnormalização. Para otimizar padrões de acesso que tocam várias tabelas, use a intercalação de tabelas. Também é possível fazer mesclagens entre tabelas.
Consultas ad hoc
Mesmo que você use principalmente a API NoSQL, muitas vezes ainda é útil executar consultas ad hoc para fins de depuração ou análise. O Spanner segue a linguagem de consulta padrão SQL. É 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 altamente consistentes
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 consistentes ou colocam restrições sobre o tamanho que um índice pode crescer. 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 grande 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 é adequado para suas necessidades de banco de dados NoSQL?
O Spanner é um sistema flexível de armazenamento de dados que oferece suporte a casos de uso SQL e NoSQL. Embora alguns aplicativos comecem com necessidades de armazenamento simples, à medida que crescem em complexidade, eles precisam de mais recursos que normalmente não sã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 é restrito por essas limitações e pode ampliar seu aplicativo conforme necessário.
A maioria das cargas de trabalho não relacionais é ideal para o Spanner. O Spanner não apenas oferece uma API de leitura e gravação NoSQL simples, mas também tem alta disponibilidade, alta confiabilidade, baixa latência, elasticidade de computação e escalonamento extremo. O Spanner permite consolidar cargas de trabalho diversas em uma única plataforma flexível.