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 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 durante uma época em que os bancos de dados relacionais bancos de dados não tinham recursos para dar suporte a aplicativos emergentes que precisavam 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 dar suporte a natureza exigente de aplicativos e funcionalidades altamente disponíveis fornecidos por bancos de dados relacionais tradicionais, para que os clientes possam aproveitar os dois conjuntos de atributos.

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 principais para bancos de dados NoSQL do Google Cloud.

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

Normalmente, os bancos de dados relacionais tradicionais são acessados usando SQL, que é com uma curva de aprendizado para desenvolvedores nã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 a API Spanner é criada com base em uma solicitação gRPC/HTTP2 e resposta a incidentes, que lida automaticamente com falhas de conexão. O Spanner oferece recursos simples, nativos da linguagem APIs NoSQL de leitura e gravação que não exigem conhecimento em SQL. Além disso, Os clientes do Spanner não exigem pool de conexões para escala.

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 não tem inatividade atualizações de software e hardware nos bastidores, mantendo o compatibilidade. A API Spanner e a semântica são as mesmas que se as operações eram realizadas em um único banco de dados de máquina e não fossem que exigem 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

Conforme a complexidade dos aplicativos aumenta, muitas vezes eles precisam executar várias linhas e tabelas transacionais no banco de dados. Com o Spanner, não é preciso precisar migrar para um repositório de dados transacional à medida que seu banco de dados cresce, porque O Spanner tem suporte total a transações de leitura e 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, independentemente 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 operações ad hoc consultas para fins de depuração ou análise. O Spanner segue a linguagem de consulta padrão do 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. Bancos de dados NoSQL típicos oferecem índices secundários consistentes ou colocam restrições sobre o tamanho que um índice pode ter. Isso pode complicar lógica do aplicativo, que precisa contornar essas restrições. O Spanner oferece índices secundários altamente consistentes em grande escala sem restrições de tamanho. Isso permite que você se concentre a lógica do aplicativo sem se preocupar 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 fica limitado por essas limitações e expandir o aplicativo conforme necessário.

A maioria das cargas de trabalho não relacionais são ideais 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.