Se você está apenas começando a explorar o mundo dos bancos de dados, já deve saber duas coisas: usar dados de forma eficaz é lucrativo e escolher um banco de dados para gerenciar esses dados pode ser um desafio.
É verdade que a capacidade dos dados de melhorar a receita de primeira linha está sempre aumentando. Ele pode otimizar as experiências do usuário e potencializar o aprendizado de máquina. Mas isso significa que há centenas de fornecedores lutando para armazená-los e analisá-los para você. Como escolher? Bem, como acontece com a maioria das coisas na vida, conhecimento é poder.
Confira esta visão geral do cenário de bancos de dados, especificamente, como colocar bancos de dados em um contexto de negócios. Começaremos com um mergulho profundo em licenciamento e modelagem de dados.
O licenciamento de software é, para dizer o mínimo, complexo. Não apenas direitos de propriedade intelectual (para isso, sugeriria consultar “An Introduction to the Law and Economics of Intellectual Property” de Besen e Raskind e s Open Source Licensing: Software Freedom and Intellectual Property Law de Rosen), mas especificamente por que você deveria se preocupar com uma licença e tendências no cenário de bancos de dados de código aberto que têm implicações para os seus negócios.
Pronto?
Todas as licenças de software contêm regras e regulamentos sobre como você usa a tecnologia que você deve seguir. Isso significa que as licenças do software que você adota podem ter um impacto tangível em sua forma de fazer negócios. Ignorar ou violar essas regras pode expô-lo a risco legal, perda financeira e, francamente, manchar a reputação da sua empresa. Esteja você comprando um software ou adotando tecnologias de código aberto, a licença acabará por restringir o uso do código de alguma forma. Tudo isso para dizer: esteja ciente dessas restrições ao desenvolver seu produto para ajudar a mitigar o risco jurídico de longo prazo.
Em seguida, lembre-se de que as licenças não são fixas. Na verdade, agora, muitas empresas que apoiam projetos de banco de dados de código aberto estão no processo de mudar suas licenças de banco de dados para se tornarem mais restritivas. Dependendo do seu caso de uso, isso pode significar que, se você estiver usando um banco de dados sem custo, agora pode estar exposto a ações legais. Não é para assustá-lo, é apenas para garantir que você permaneça vigilante. Quando essas mudanças acontecem, é importante reagir de forma adequada. Em alguns casos, uma alteração de licença pode exigir a rearquitetura de um serviço, a adoção de um banco de dados diferente ou a assinatura de um acordo comercial com o fornecedor.
Aqueles que frequentam o Hacker News ou o TechCrunch não serão alheios às conversas sobre software de banco de dados comercial e de código aberto. Aqui está o resumo: nos últimos três anos, surgiu um debate devido a uma confluência de fatores, como o crescimento dos principais fornecedores de nuvem pública e o sucesso no mercado, ou a falta dele, de provedores de banco de dados com foco em código aberto.
Dito isso, a relação entre software livre e software proprietário não é binária — é, sem dúvida, um espectro:
Observação: a distância ilustrada não é científica; a relatividade é mais importante.
Olhando para o espectro acima, na extrema esquerda, há licenças de software de banco de dados comerciais ou proprietárias, como Oracle, IBM Db2 e Microsoft SQL Server. Essas são tecnologias poderosas e ricas em funcionalidade que impulsionam cargas de trabalho em todos os setores. Ao comprar este software de um fornecedor ou como um serviço de nuvem, você está pagando um prêmio para ter acesso ao seguinte:
Suporte em nível de código
Um ecossistema robusto de ferramentas
Serviços e consultores profissionais
Visibilidade e influência no roteiro desse banco de dados
À direita, há software de domínio público. Este software não possui direitos autorais, o que significa que ele pode ser modificado, distribuído ou vendido sem restrições. Projetos próximos à extremidade direita do espectro são frequentemente regidos pelos padrões de terceiros imparciais e sem viés, como a Apache Software Foundation ou a Linux Foundation.
A Open Source Initiative (OSI) mantém uma lista geralmente aceita do que é e do que não é uma licença de código aberto. Em geral, o software de código aberto é caracterizado pela capacidade de "fazer um fork do código". Isso significa que, se a direção do projeto (software) estiver em desacordo com o que você precisa ou deseja, você poderá modificar ou editar o código como achar melhor.
Usar uma tecnologia de código aberto é particularmente atraente devido ao custo zero do licenciamento, maior transparência no desenvolvimento e inovação que vem de uma diversidade de stakeholders, mantenedores e espaços de problemas. Em comparação com o software comercial, com o software de código aberto, você abre mão da influência do roteiro, das garantias em torno de correções de bugs ou patches de segurança e dos contratos e obtém zero lock-in com fornecedor e maior flexibilidade da linha de negócios. (Você pode ver que essa é uma troca que você e sua equipe precisam considerar cuidadosamente.)
Seguindo a jornada no gráfico acima, da esquerda para a direita, há níveis variados de permissividade da licença, como Apache 2.0, MPL e GPL 3.0.
Apache 2.0: Apache Cassandra, Apache CouchDB
Mozilla Public License: RabbitMQ
BSD: Redis
GPL 3.0: Neo4j
Proprietário: IBM Db2, Microsoft SQL Server
No final da década de 2000, a maioria dos novos fornecedores de bancos de dados estava se direcionando ao mercado como “código aberto” para obter acesso fácil à adoção e ao reconhecimento de desenvolvedores. Você talvez conheça empresas deste campo, como Mongo Inc., Redis Labs e Elastic. Essas empresas desenvolviam projetos comunitários como MongoDB, Redis e Elasticsearch, mas buscavam monetizar esse investimento com versões de licenças empresariais, implementações gerenciadas de nuvem ou serviços profissionais.
No entanto, a mudança de paradigma da computação em nuvem tornou esse modelo de negócios precário, pois os principais fornecedores podem facilmente oferecer essas tecnologias como um serviço gerenciado nativo da plataforma de primeira classe. Essas ofertas são entregues com integrações convincentes para segurança, conformidade, monitoramento e registro em suas respectivas nuvens, sem garantir compensação aos criadores do software.
Nos últimos anos, as empresas reavaliaram sua rota para o mercado. Agora, estamos os vendo adotar modelos de licenciamento que protegem seus investimentos em desenvolvimento. Por exemplo, MongoDB , Redis Labs e Confluent, com diferentes graus de gravidade, alteraram as licenças de partes do código para evitar que outras empresas as executem como um serviço sem compensação.
"Então, Josh, qual é seu conselho?" Ótima pergunta.
Veja, há boas razões para usar bancos de dados comerciais e/ou de código aberto. O importante é que você saiba no que está se metendo e à sua empresa. Avalie a licença antes de construir uma aplicação para garantir que seu projeto esteja em conformidade e, se em vez disso, você deseja escolher uma licença para um projeto de código aberto, consulte a página da web “Escolher uma licença” do Github.
Portanto, uma consideração importante são as licenças, porque ninguém quer ser processado. O outro são as famílias de modelos de dados, mas por um motivo diferente. Ao criar uma aplicação, conhecer os tipos de modelos de dados ajudará você a escolher a ferramenta certa para o trabalho.
Agora que você já tem um controle sobre licenças, vamos falar sobre outra consideração crítica ao selecionar seu banco de dados: modelos de dados.
Quando comecei na IBM, precisava me atualizar rapidamente, então recorri ao NoSQL Distilled de Martin Fowler.
Em sua escrita, e nos setores em geral, as pessoas tendem a categorizar os bancos de dados em cinco famílias de “modelos de dados”: documento, chave-valor, gráfico, relacional e colunar amplo. Aqui está uma visão geral rápida de cada um, incluindo casos de uso e exemplos específicos de banco de dados. Isso o ajudará a determinar, com base em seus conjuntos de dados e necessidades comerciais, de qual banco de dados você precisa.
Nesse caso, os dados são modelados em documentos semelhantes a JSON, em vez de linhas e colunas. Esses bancos de dados, por natureza, valorizam a disponibilidade em vez da consistência transacional. Os bancos de dados de documentos se prestam à simplicidade e à escalabilidade, bem como à rápida iteração no desenvolvimento.
Casos de uso comercial:
Aplicativos móveis que exigem iterações rápidas
Registro de eventos, compras online, gerenciamento de conteúdo e processamento analítico detalhado
Catálogos de varejo com atributos de produtos
Exemplos:
Firebase
Esse tipo de modelo representa o tipo mais básico de banco de dados não relacional, onde cada item do banco de dados é armazenado como um nome de atributo (referido como chave) com seu valor correspondente.
Casos de uso comercial:
Preferências do usuário e armazenamentos de perfis
Recomendações de produto baseadas em dados de navegação
Carrinhos de compras
Exemplos:
DynamoDB
Redis
etcd
Os dados aqui são modelados como vértices e edges (valores e conexões). De forma semelhante a como as pessoas pensam e processam informações, os bancos de dados de gráficos recordam as relações entre unidades discretas de dados. Esses bancos de dados tornam a persistência, a exploração e a visualização de dados e relacionamentos mais intuitivas.
Casos de uso comercial:
Detecção de fraudes
Mecanismos de recomendação em tempo real
Master data management
Operações de rede e TI
Gerenciamento de acesso e identidade
Exemplos:
Neo4j
AWS Neptune
O modelo relacional , introduzido por .R.F Codd enquanto estava na IBM, é o gigante do setor. Os dados são armazenados em tabelas como linhas e colunas e geralmente possuem mecanismos de consulta sofisticados para análise de dados e exploração. Os bancos de dados relacionais oferecem suporte a garantias transacionais e conformidade com ACID (atomicidade, consistência, isolamento e durabilidade), enquanto a maioria dos bancos de dados nas outras quatro famílias é eventualmente consistente.
Casos de uso comercial:
E-commerce
Planejamento de recursos empresariais
Gerenciamento do relacionamento com o cliente
Exemplos:
IBM Db2
Armazenamentos de famílias de colunas permitem acesso a dados muito rápido usando uma chave de linha, nome de coluna e registro de data e hora da célula. O esquema flexível desses tipos de bancos de dados significa que as colunas não precisam ser consistentes entre os registros, e você pode adicionar uma coluna a linhas específicas sem precisar adicioná-las a cada registro. Os armazenamentos colunares amplos são derivados do artigo BigTable do Google. Esses modelos de dados não devem ser confundidos com os modelos de armazenamento orientados a colunas, que são mais relevantes para as tecnologias de armazenamento de dados e padrões de acesso analíticos devido à compactação melhorada dos dados em disco e ao uso mais eficiente da CPU.
Casos de uso comercial:
Análise de dados de segurança e mercado de ações
Análise de clickstream
IoT e telemetria
Exemplos:
Apache Cassandra
DataStax Enterprise
Google Cloud BigTable
Resumindo, há o seguinte: há vantagens e desvantagens em cada modelo de dados primário (e mal arranhamos a superfície aqui). Mas, em caso de dúvida, use algo testado e onipresente, como o PostgreSQL. Para saber mais sobre o arquétipo de famílias de modelos de dados, consulte o livro NoSQL Distilled de Martin Fowler, principalmente os capítulos 8 a 11.
Ufa! Eu falei um pouco sobre o assunto aqui, mas se você está ansioso para saber mais, aqui estão algumas sugestões com base no investimento de tempo:
15 minutos: “How to Choose a Database”, de Ben Anderson
15 minutes: “SQL vs. NoSQL Databases: What’s the Difference?”, de Ben Anderson e Brad Nicholson
Três horas: análises de Jepsen sobre a segurança de sistemas distribuídos
Uma semana: Designing Data-Intensive Applications , de Martin Kleppman.
Quer construir? O IBM Cloud tem uma ampla variedade de serviços de bancos de dados gerenciados para ajudar sua equipe a acelerar o trabalho.