Spanner para cargas de trabalho não relacionais

O Spanner é um sistema de base de dados totalmente gerido e altamente fiável. Embora o Spanner tenha evoluído para se tornar um sistema de gestão de base de dados relacional, tem as suas origens como um sistema de armazenamento de chave-valor não relacional e mantém as características fundamentais de um sistema deste tipo. Como tal, pode usar o Spanner como uma base de dados não relacional (NoSQL) e migrar de outras bases de dados não relacionais para o Spanner. Este documento ajuda a compreender se o Spanner é adequado para as suas cargas de trabalho não relacionais.

As bases de dados NoSQL começaram a ser usadas numa altura em que as bases de dados relacionais convencionais não tinham funcionalidades para suportar aplicações emergentes que exigiam elevada escalabilidade, disponibilidade e elasticidade de computação. Fizeram-no sacrificando várias funcionalidades frequentemente essenciais para a gestão de dados, como transações, consistência e consultas ad hoc. O Spanner foi criado para suportar a natureza exigente das aplicações e funcionalidades de alta disponibilidade fornecidas por bases de dados relacionais convencionais, para que os clientes possam tirar partido de ambos os conjuntos de funcionalidades.

Com o Spanner, pode começar com necessidades de armazenamento simples e não relacionais e dimensionar a sua aplicação conforme necessário.

Como o Spanner cumpre os critérios da base de dados NoSQL

O Spanner cumpre os seguintes critérios principais para as suas cargas de trabalho NoSQL.

Escala e desempenho

As bases de dados NoSQL ganharam popularidade devido à sua capacidade de dimensionar as leituras e as escritas horizontalmente. Com o Spanner, não tem de se preocupar com a escala nem com o desempenho. As bases de dados do Spanner com estilo de chave-valor podem ser dimensionadas horizontalmente para suportar centenas de milhões de pedidos de leitura ou escrita por segundo e petabytes de dados. A capacidade de computação do Spanner é dimensionada com a carga de trabalho, mantendo um perfil de latência baixo e consistente, mesmo à medida que a sua aplicação é dimensionada por várias ordens de magnitude.

API NoSQL

Normalmente, as bases de dados relacionais convencionais são acedidas através de SQL, o que implica uma curva de aprendizagem para os programadores que não estão familiarizados com bases de dados relacionais. Normalmente, os clientes destas bases de dados também dependem de associações persistentes e requerem a implementação de uma infraestrutura de agrupamento de associações para serem dimensionados. Por outro lado, a API Spanner é criada com base num modelo de pedido/resposta gRPC/HTTP2 que processa automaticamente as falhas de ligação. O Spanner oferece APIs de leitura/escrita NoSQL simples, nativas da linguagem e eficientes que não requerem conhecimentos de SQL. Além disso, os clientes do Spanner não requerem nenhuma partilha de ligações para serem escaláveis.

Totalmente gerido

Uma grande vantagem das bases de dados NoSQL é que são consideradas mais fáceis de gerir. Como um serviço totalmente gerido, o Spanner não impõe qualquer encargo operacional aos clientes. O Spanner faz atualizações de software e hardware sem tempo de inatividade em segundo plano, ao mesmo tempo que mantém a compatibilidade com versões anteriores. A API e a semântica do Spanner são as mesmas que se as operações estivessem a ser realizadas numa base de dados de uma única máquina e não requerem conhecimentos da arquitetura interna do Spanner. O Spanner é executado em implementações que variam de 1/10 de um nó a dezenas de milhares de nós, sendo dimensionado de forma automática e reativa com um dimensionador automático gerido.

Dados semiestruturados

O Spanner suporta tipos de dados flexíveis, como JSON e BYTES, que são usados para armazenar dados semiestruturados ou não estruturados. Tal como outras bases de dados NoSQL, pode usar estes tipos de dados para evitar especificar todo o esquema de armazenamento antecipadamente.

Controlo de acesso

Tal como outras bases de dados NoSQL, o Spanner suporta o controlo de acesso baseado na IAM. Os administradores podem configurar e administrar políticas de controlo de acesso sem armazenar nomes de utilizador e palavras-passe na base de dados.

Como o Spanner difere das bases de dados NoSQL convencionais

O Spanner oferece as seguintes vantagens em relação às bases de dados NoSQL convencionais.

Transações

À medida que as aplicações crescem em complexidade, precisam frequentemente de executar operações transacionais de várias linhas e várias tabelas na base de dados. Com o Spanner, não precisa de migrar para um arquivo de dados transacional à medida que a sua base de dados cresce, porque o Spanner tem suporte total para transações de leitura/escrita. Enquanto base de dados compatível com ACID, o Spanner mantém a consistência transacional da sua base de dados em todos os momentos, independentemente da escala.

Modelação de dados

A conceção de esquemas em bases de dados NoSQL pode ser artificial devido à necessidade de ajustar todos os dados a uma tabela e desnormalizar os dados à força devido à incapacidade de realizar junções. Com o Spanner, pode especificar o seu esquema sem recorrer a uma única tabela ou à desnormalização. Para otimizar padrões de acesso que afetam várias tabelas, pode usar a intercalação de tabelas. Também pode fazer junções entre tabelas.

Consultas ad hoc

Mesmo que use principalmente a API NoSQL, continua a ser útil executar consultas ad hoc para fins de depuração ou estatísticas. O Spanner cumpre a linguagem de consulta padrão SQL. Pode usar a prioritização de pedidos para isolar o tráfego de baixa prioridade ad hoc do tráfego online ou usar o Data Boost do Spanner para executar consultas analíticas em recursos de computação completamente isolados do tráfego da base de dados online.

Índices secundários fortemente consistentes

As aplicações requerem frequentemente índices secundários para suportar pesquisas de baixa latência. As bases de dados NoSQL típicas oferecem índices secundários eventualmente consistentes ou impõem restrições ao tamanho que um índice pode atingir. Isto pode complicar a lógica da aplicação, que tem de contornar estas restrições. O Spanner oferece índices secundários fortemente consistentes em grande escala sem restrições de tamanho. Isto permite-lhe focar-se na lógica da sua aplicação e não se preocupar com problemas de consistência.

O Spanner é adequado para as suas necessidades de base de dados NoSQL?

O Spanner é um sistema de armazenamento de dados flexível que suporta exemplos de utilização de SQL e NoSQL. Embora algumas aplicações comecem com necessidades de armazenamento simples, à medida que aumentam em complexidade, precisam de mais funcionalidades que normalmente não são oferecidas pelas bases de dados NoSQL, como transações, índices secundários consistentes e uma linguagem de consulta flexível. Com o Spanner, não está limitado por estas restrições e pode expandir a sua aplicação conforme necessário.

A maioria das cargas de trabalho não relacionais são uma excelente opção para o Spanner. O Spanner não só oferece uma API de leitura/escrita NoSQL simples, como também é suportado por alta disponibilidade, alta fiabilidade, baixa latência, elasticidade de computação e escalabilidade extrema. O Spanner permite-lhe consolidar diversas cargas de trabalho numa única plataforma flexível.