A introdução do DevOps nas organizações mudou o processo de desenvolvimento e também introduziu alguns novos desafios. Além disso, desenvolvedores e equipes de DevOps, juntamente com suas próprias linguagens de programação escolhidas, também têm seus sistemas de banco de dados favoritos.
O ciclo de vida do produto está ficando mais curto a cada ano, então os desenvolvedores querem poder desenvolver rapidamente, usando as tecnologias que conhecem melhor.
Ter vários back-ends de banco de dados RDBMS significa que sua organização se tornará mais ágil no lado do desenvolvimento, mas também impõe conhecimento adicional às equipes de operação.
Estender sua infraestrutura de um para vários bancos de dados implica que você também os monitore, gerencie e dimensione.
Como cada back-end de armazenamento se destaca em diferentes casos de uso, isso também significa que você precisa reinventar a roda para cada um deles.
Conhecer as semelhanças e as principais diferenças o ajudará a mergulhar em diferentes sabores de RDBMS.
Neste artigo vamos passar pelos seguintes pontos:
- Uma breve introdução à plataforma
- Oracle, MSSQL, MySQL, PostgreSQL
- Suporte de plataforma
- Processo de instalação
- Acesso ao banco de dados
- Processo de backup
- Controlando a execução da consulta
- Segurança
- Opções de replicação
- Suporte da comunidade
Uma breve introdução à plataforma
O PostgreSQL é reconhecido por muitos como o banco de dados de código aberto mais avançado do mundo. É um sistema de banco de dados totalmente de código aberto lançado sob sua própria licença, a Licença PostgreSQL, comparável às licenças MIT ou BSD. A comunidade PostgreSQL está ativa e continuamente aprimorando recursos novos e existentes. De acordo com a classificação de popularidade do mecanismo de banco de dados, o PostgreSQL foi o DBMS do ano de 2017 e 2018. A popularidade dos mecanismos de banco de dados mostra que a tendência não mudou ao longo dos anos.
Um fato interessante é que o PostgreSQL não suportava SQL até 1994. A linguagem QUEL foi usada para consultar dados dele. O suporte SQL foi adicionado posteriormente.
O PostgreSQL possui muitos recursos avançados que outros sistemas de gerenciamento de banco de dados corporativos oferecem, como visualizações, procedimentos armazenados, índices e gatilhos, além dos recursos de chave primária, chave estrangeira e atomicidade.
O PostgreSQL pode ser estendido pelos usuários modificando recursos existentes, adicionando novos recursos e distribuído gratuitamente, pois é de código aberto. Ele roda nas principais plataformas como UNIX, MacOS, Windows e Linux etc. Ele suporta vídeo, texto, áudio, imagens, interfaces de programação para diferentes idiomas. A lista de linguagens suportadas inclui C/C++, Java, Python, Perl etc.
Oráculo é um dos maiores fornecedores de RDBMS (sistema de gerenciamento de banco de dados relacional) no mundo de TI. É conhecido como banco de dados Oracle, Oracle DB ou Oracle comercializado pela Oracle.
O Oracle Database está sendo usado por muitas empresas do setor de TI para processamento de transações, análise de negócios, finalidade de aplicativos de inteligência de negócios, etc.
A Oracle tem uma história longa e muito interessante:
Em 16 de junho de 1977, o Software Development Laboratories (SDL) foi criado em Santa Clara, Califórnia, por Larry Ellison, Bob Miner e Ed Oates. Em 1977, a Oracle tomou seu nome do codinome do projeto da CIA e o primeiro Oracle RDBMS comercializado é mostrado ao mundo em 1979.
O banco de dados Oracle está disponível em diferentes edições, como Enterprise Edition Standard Edition, Express Edition e Oracle Lite. O maior concorrente do banco de dados Oracle é o servidor Microsoft SQL.
Microsoft SQL Server é um RDBMS muito popular com licenciamento restritivo e custo de propriedade modesto se o banco de dados for de tamanho significativo ou for usado por um número significativo de clientes.
É uma das três tecnologias de banco de dados líderes de mercado, junto com o Oracle Database e o DB2 da IBM.
Ele fornece uma interface muito amigável e fácil de aprender, o que resultou em uma grande base de usuários instalada.
Como outros softwares RDBMS, o Microsoft SQL Server é construído sobre SQL, uma linguagem de programação padronizada que os administradores de banco de dados (DBAs) e outros profissionais de TI usam para gerenciar bancos de dados e consultar os dados que eles contêm. O SQL Server está vinculado ao Transact-SQL (T-SQL), uma implementação do SQL da Microsoft que adiciona um conjunto de extensões de programação proprietárias à linguagem padrão.
MySQL
O MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto baseado em Oracle baseado em SQL.
Originalmente concebido pela empresa sueca MySQL AB, o MySQL foi adquirido pela Sun Microsystems em 2008 e depois pela Oracle quando comprou a Sun em 2010.
Os desenvolvedores podem usar o MySQL sob a GNU General Public License (GPL). A versão Enterprise vem com suporte e recursos adicionais para segurança e alta disponibilidade.
É o segundo banco de dados mais popular do mundo de acordo com o ranking db-engines e provavelmente o back-end de banco de dados mais presente do planeta, pois executa a maioria dos serviços de Internet em todo o mundo. O MySQL é executado em praticamente todas as plataformas, incluindo Linux, UNIX e Windows.
O MySQL é um componente importante de uma pilha corporativa de código aberto chamada LAMP.
LAMP é uma plataforma de desenvolvimento web que usa Linux como sistema operacional, Apache como servidor web, MySQL como sistema de gerenciamento de banco de dados relacional e PHP como linguagem de script orientada a objetos.
Suporte de plataforma
Oráculo
A versão mais popular do Oracle DB, o Oracle 12c é um sistema RDBMS verdadeiramente empresarial que é suportado em uma variedade de sistemas operacionais e plataformas. A Oracle domina o mundo dos bancos de dados em parte porque roda em dezenas de plataformas, desde Mainframe, Sparc, Mac até Intel. A lista inclui as seguintes combinações de SO e arquitetura:Linux em x86-64 (somente as distribuições Red Hat Enterprise Linux, Oracle Linux e SUSE são suportadas) Microsoft Windows em x86-64. Oracle Solaris em SPARC e x86-64. IBM AIX em sistemas POWER. Linux em IBM zEnterprise Systems HP-UX em Itanium.
MSSQL
Sendo um produto da Microsoft, o SQL foi projetado para ser muito compatível com o sistema operacional Windows. Em 16 de novembro de 2016, a Microsoft anunciou o início de uma nova história:o SQL Server agora é compatível com Linux e Docker. O inferno congela!
MySQL
O MYSQL realiza uma execução mais suave em todas as plataformas como Microsoft, UNIX, Linux, Mac etc.
PostgreSQL
Em geral, pode-se esperar que o PostgreSQL funcione em várias (mesmo exóticas) arquiteturas de CPU e sistemas operacionais.
Inclui arquiteturas de CPU como x86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, Sparc, Sparc 64, Alpha, ARM, MIPS, MIPSEL, M68K e PA-RISC. Muitas vezes é possível construir em um tipo de CPU não suportado configurando com --disable-spinlocks, mas o desempenho será ruim.
Espera-se que o PostgreSQL funcione nos seguintes sistemas operacionais:Linux (todas as distribuições recentes), Windows (Win2000 SP4 e posterior), FreeBSD, OpenBSD, NetBSD, Mac OS X, AIX, HP/UX, IRIX, Solaris, Tru64 Unix, e UnixWare.
Processo de instalação
Oráculo
De todos os quatro sistemas de banco de dados apresentados, o Oracle possui os requisitos de sistema mais complexos que acompanham um processo de instalação complexo. Em plataformas baseadas em Windows e Linux, a Oracle usa uma ferramenta dedicada Oracle Universal Installer (OUI) como o principal processo de instalação. O OUI é usado para instalar o software Oracle Database. OUI é um utilitário de interface gráfica do usuário que permite:
- Visualize o software Oracle que está instalado em sua máquina
- Instale o novo software Oracle Database
- Exclua o software Oracle que não é mais necessário.
Durante o processo de instalação, o OUI iniciará o Oracle Database Configuration Assistant (DBCA), que pode instalar um banco de dados padrão pré-criado que contém esquemas de exemplo ou pode orientá-lo no processo de criação e configuração de um banco de dados personalizado.
Oracle OUI - interface de instalação
Se você não criar um banco de dados durante a instalação, poderá chamar o DBCA após instalar o software para criar um ou mais bancos de dados.
MSSQL
A partir do SQL Server 2016 (13.x), o SQL Server está disponível apenas como um aplicativo de 64 bits.
A instalação acontece por meio do Assistente de Instalação, um prompt de comando ou por meio da ferramenta sysprep.
O Assistente de Instalação executa o Centro de Instalação do SQL Server. Para criar uma nova instalação do SQL Server, selecione a opção Instalação no lado esquerdo e clique em Nova instalação autônoma do SQL Server ou adicione recursos a uma instalação existente.
A instalação baseada em Linux é muito semelhante ao método de instalação de banco de dados de código aberto. Ele suporta empacotamento para sistemas baseados em Debian e RedHat. As etapas consistem na configuração do repositório, instalação do pacote e configuração pós-instalação, bastante semelhante ao MySQL. Todo o processo é amplamente descrito no artigo a seguir.
Assistente de instalação do MSSQL
MySQL
A Oracle fornece um conjunto de distribuições binárias do MySQL. Isso inclui distribuições binárias genéricas na forma de arquivos tar compactados (arquivos com extensão .tar.gz) para várias plataformas e binários em pacotes específicos de plataforma. Na plataforma Windows, o processo de instalação é acionado pelo assistente de instalação padrão via GUI.
PostgreSQL
O PostgreSQL está disponível na maioria das distribuições Linux, então é muito provável que você possa instalá-lo através de um simples comando yum ou apt-get. Para a configuração de HA, você pode usar a ferramenta ou GUI do ClusterControl s9s. As ferramentas S9S podem ajudá-lo a criar um cluster PostgreSQL com apenas um comando de linha única:
$ s9s cluster \
--create \
--cluster-type=postgresql \
--nodes="192.168.0.91?master;192.168.0.92?slave;192.168.0.93?slave" \
--provider-version='11' \
--db-admin='postgres' \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='PostgreSQL 11 Streaming Replication' \
--wait
Creating PostgreSQL Cluster
\ Job 259 RUNNING [█▋ ] 15% Installing helper packages
Para mais informações, consulte este blog.
Acesso ao banco de dados e criação de banco de dados
Oráculo
O Oracle separa o processo de criação do binário e do banco de dados. Ao contrário de outros sistemas de banco de dados populares, a criação de banco de dados envolve muito mais etapas.
O Database Configuration Assistant (DBCA) é a maneira preferida de criar um banco de dados porque pode fazê-lo em uma abordagem muito mais automatizada. O DBCA pode ser iniciado pelo Oracle Universal Installer (OUI), dependendo do tipo de instalação selecionado. Você também pode iniciar o DBCA como uma ferramenta autônoma a qualquer momento após a instalação do banco de dados Oracle.
Você pode executar o DBCA no modo interativo ou no modo não interativo/silencioso. O modo interativo fornece uma interface gráfica e um fluxo de trabalho guiado para criar e configurar um banco de dados. O modo não interativo/silencioso permite que você crie scripts para a criação do banco de dados. Você pode executar o DBCA no modo não interativo/silencioso especificando argumentos de linha de comando, um arquivo de resposta ou ambos.
Oracle DBCA - criação de banco de dados
Quando um banco de dados é criado, você pode acessá-lo com um cliente dedicado chamado sqlplus. SQL*Plus é um programa cliente de terminal com o qual você pode acessar o Oracle Database.
MSSQL
SQL Server Management Studio (SSMS) é a principal ferramenta para administrar o Mecanismo de Banco de Dados e escrever código Transact-SQL. O SSMS está disponível para download gratuito no Centro de Download da Microsoft. A versão mais recente pode ser usada com versões mais antigas do Mecanismo de Banco de Dados.
O Management Studio é um método preferencial para criar um novo banco de dados. Para criar um banco de dados no Microsoft SQL Server, conecte-se ao computador onde o Microsoft SQL Server está instalado usando uma conta de administrador.
Inicie o Microsoft SQL Server Management Studio e escolha criar uma opção de banco de dados. O processo do assistente o guiará pelo processo. Se você preferir a linha de comando, isso pode ser feito com a sintaxe CREATE DATABASE.
MySQL
Para acessar seu banco de dados MySQL, use o cliente mysql. A criação do banco de dados é tão simples quanto CREATE DATABASE
PostgreSQL
O banco de dados PostgreSQL tem a opção de vários 'esquemas' que operam de maneira semelhante aos bancos de dados no MySQL.
Os esquemas contêm as tabelas, índices, etc, e podem ser acessados simultaneamente pela mesma conexão com o banco de dados que os abriga. Os métodos de acesso para PostgreSQL são definidos em um arquivo:pg_hba.conf. Ele pode estar localizado em vários lugares. No Ubuntu 14.04 está localizado em /etc/postgresql/9.3/main/pg_hba.conf, no Centos 7 por outro lado está localizado por padrão em /var/lib/pgsql/data/pg_hba.conf.
Processo de backup
Oráculo
A Oracle tem a ferramenta de backup integrada mais complexa e dedicada de todos os quatro servidores descritos aqui; é chamado de Gerenciador de Recuperação (RMAN).
O RMAN permite executar políticas de backup sofisticadas e restaurações seletivas. As mesmas operações geralmente requerem muitas etapas manuais em outros RDBMS.
Podemos fazer backups de duas maneiras:
- desabilitar o banco de dados e copiar arquivos físicos (o chamado backup frio)
- usando o RMAN e faça um backup sem desabilitar o banco de dados (hot backup)
Para fazer um hot backup, coloque a base no modo ARCHIVELOG. Isso dirá ao Oracle para não manter a cópia dos arquivos de redo log como archivelogs.
MSSQL
No mundo MS SQL, você pode usar os comandos T-SQL integrados para fazer backup e restaurar bancos de dados. Não há necessidade de usar ferramentas como mysqlhotcopy e mysqldump.
O MS SQL Server oferece três estratégias de backup online diferentes:
- Modelo de recuperação simples (ALTER DATABASE dbname SET RECOVERY SIMPLE)
- Modelo de recuperação completa (ALTER DATABASE dbname SET RECOVERY FULL)
- Modelo de recuperação com registro em massa (ALTER DATABASE dbname SET RECOVERY BULK_LOGGED)
O modelo recomendado é a recuperação completa se nenhuma perda de dados for aceitável. Este modo é semelhante ao recurso MySQL quando o log binário está habilitado. Você pode recuperar o banco de dados a qualquer momento, mas deve fazer backup regularmente do log de transações, bem como do banco de dados.
O modelo bulk-logged pode ser usado para grandes operações em massa, como importação de dados ou criação de índices em tabelas grandes. É um método bastante menos comum para executar um banco de dados, especialmente a produção. Ele não oferece suporte a recuperação pontual, portanto, geralmente é usado como uma solução temporária.
O modelo Simple é útil quando o banco de dados raramente é atualizado ou para fins de teste e desenvolvimento. No modo SIMPLE, o log de transações do banco de dados é cortado toda vez que a transação é concluída. Nos outros modos, o log é truncado via instrução CHECKPOINT ou após o arquivo de backup da transação. Caso o banco de dados esteja danificado, apenas o backup mais recente poderá ser recuperado e todas as alterações desde esse backup serão perdidas.
MySQL
Dois utilitários de backup mais populares estão disponíveis para MySQL e MariaDB, ou seja, backup lógico mysqldump e backup binário Percona XtraBackup e MariaBackup (um fork do Percona XtraBackup). A versão MySQL Enterprise também oferece mysqlbackup, que é semelhante às ferramentas de backup quente XtraBackup e MariaBackup.
PostgreSQL
A maioria dos DBMSs fornece algumas ferramentas de backup integradas. O PostgreSQL tem pg_dump e pg_dumpall prontos para uso. No entanto, você pode querer usar algumas outras ferramentas para seus bancos de dados de produção. Mais informações podem ser encontradas nas principais ferramentas de backup para o artigo PostgreSQL.
Controle de execução de consultas e suporte de simultaneidade
Oráculo
No Oracle, todos os objetos de banco de dados são agrupados por esquemas. Esquemas são coleções de objetos de banco de dados e todos os objetos de banco de dados são compartilhados entre todos os esquemas e usuários. Ele pode ser traduzido para bancos de dados MySQL. Mesmo que tudo seja compartilhado, cada usuário pode ser limitado a determinados esquemas e tabelas por meio de funções e permissões. Este conceito é bastante semelhante aos bancos de dados MySQL.Oi
MSSQL
O MS SQL Server organiza todos os objetos, como tabelas, exibições e procedimentos, por nomes de banco de dados. Os usuários são atribuídos a um login, que recebe acesso ao banco de dados específico e seus objetos. Além disso, no SQL Server, cada banco de dados tem um arquivo de disco privado e não compartilhado no servidor.
MySQL
MySQL só tem suporte MVCC no InnoDB. É um mecanismo de armazenamento e por padrão está disponível no MySQL. Ele também fornece recursos de reclamação ACID, como suporte a chaves estrangeiras e manipulação de transações. Por padrão, cada consulta é tratada como uma transação separada, que é uma abordagem diferente do Oracle DB.
PostgreSQL
O mecanismo Postgres executa o controle de simultaneidade usando um método chamado MVCC (Multiversion Concurrency Control). Para cada usuário conectado ao banco de dados, o banco de dados Postgres fornece um instantâneo do banco de dados em uma instância específica. Quando o banco de dados precisar atualizar um item, ele adicionará a versão mais recente e apontará a versão antiga como obsoleta. Ele permite que o banco de dados economize sobrecarga, mas requer uma varredura regulamentada para excluir os dados antigos e desatualizados.
Segurança
Oráculo
Os recursos de segurança são ótimos, o sistema oferece segurança em várias camadas, incluindo controles para avaliar riscos, impedir a divulgação não autorizada de dados, detectar e relatar atividades de banco de dados e aplicar controles de acesso a dados.
MSSQL
Os recursos de segurança são modestos, o RDBMS oferece menos recursos que o Oracle, mas ainda muito mais do que os sistemas de banco de dados Open Source.
MySQL
O MySQL implementa a segurança baseada em Listas de Controle de Acesso (ACLs) para todas as conexões, consultas e outras operações que um usuário pode tentar realizar. Há também algum suporte para conexões criptografadas por SSL entre clientes e servidores MySQL.
PostgreSQL
O PostgreSQL possui FUNÇÕES e funções herdadas para definir e manter permissões. PostgreSQL tem suporte SSL nativo para conexões para criptografar comunicações cliente/servidor. Ele também possui segurança em nível de linha.
Além disso, o PostgreSQL vem com um aprimoramento embutido chamado SE-PostgreSQL que fornece controles de acesso adicionais baseados na política de segurança do SELinux. Mais detalhes aqui.
Suporte da comunidade
Oráculo
O banco de dados Oracle, semelhante ao MySQL, tem uma grande comunidade, principalmente organizada em torno de https://community.oracle.com e grupos apaixonados em qualquer local do mundo, como por exemplo https://poug.org/en/. O suporte pago dá acesso ao grupo de suporte anteriormente conhecido como metalink, não support.oracle.com.
MSSQL
Comparado a outros sistemas de banco de dados, o MSSQL provavelmente possui os grupos comunitários menos organizados, mas ainda muito ativos. A Microsoft faz um ótimo trabalho na promoção de seus produtos nas universidades. Isso dá aos jovens desenvolvedores, devops e DBAs acesso fácil à tecnologia (licenças gratuitas) e a qualquer material necessário.
MySQL
O MySQL tem uma grande comunidade de contribuidores que, principalmente após a aquisição pela Oracle, se concentram principalmente na manutenção de recursos existentes, com alguns novos recursos surgindo ocasionalmente. A vantagem sobre outros bancos de dados de código aberto é um ecossistema de fornecedores externos muito forte. Empresas como MariaDB e Percona não apenas oferecem um ótimo suporte, mas também contribuem adicionando recursos corporativos em suas versões de código aberto.
PostgreSQL
O PostgreSQL tem uma comunidade muito forte e ativa. Sua comunidade melhora os recursos existentes, enquanto seus committers inovadores se esforçam para garantir que ele continue sendo o banco de dados mais avançado com novos recursos e segurança, limitando a distância entre os bancos de dados Oracle e MSSQL. O PostgreSQL é conhecido por ter mais recursos do que outros RDBMS do mercado.
Opções de replicação
Oráculo
A Oracle oferece replicação lógica e física por meio de um Oracle Data Guard integrado. É um recurso corporativo.
Data Guard é uma tecnologia Ship Redo / Apply Redo, "redo" é a informação necessária para recuperar transações.
Um banco de dados de produção conhecido como banco de dados primário transmite redo para uma ou mais réplicas chamadas de bancos de dados em espera. Quando uma inserção ou atualização é feita em uma tabela, essa alteração é capturada pelo gravador de log em um log de archive e replicada para o sistema em espera.
Os bancos de dados em espera estão em uma fase contínua de recuperação, verificando e aplicando redo para manter a sincronização com o banco de dados primário. Um banco de dados em espera também será ressincronizado automaticamente se for temporariamente desconectado do banco de dados primário devido a falta de energia, problemas de rede etc.
Para opções de replicação mais flexíveis, como replicação seletiva e multifonte, você deve considerar uma ferramenta extra paga, o Oracle Golden Gate.
MSSQL
O Microsoft SQL Server fornece os seguintes tipos de replicação para uso em aplicativos distribuídos:
- Replicação transacional
- Replicação de mesclagem
- Replicação de instantâneo
Ele pode ser amplamente estendido com o Microsoft Integration Services, oferecendo a opção de personalizar o fluxo de replicação imediatamente.
PostgreSQL
O PostgreSQL tem várias opções disponíveis, cada uma com seus prós e contras, dependendo do que é necessário para a replicação. As opções de compilação são baseadas no log de gravação antecipada. Os arquivos são enviados para um servidor em espera onde são lidos e reproduzidos, ou Replicação de Streaming, onde um servidor em espera somente leitura busca logs de transações em uma conexão de banco de dados para reproduzi-los. No caso de uma arquitetura de replicação mais sofisticada, você provavelmente gostaria de verificar Slony (mestre para vários escravos) ou Bucardo (multimaster).
MySQL
A Replicação MySQL é provavelmente a solução de alta disponibilidade mais popular para MySQL,
e amplamente utilizada pelos principais serviços da web.
É fácil de configurar, mas a manutenção contínua, como atualizações de software, alterações de esquema, alterações de topologia, failover e recuperação, sempre foi complicada.
A replicação do MySQL não requer ferramentas de terceiros, tanto master-slave quanto multimaster podem ser feitas imediatamente.
As versões recentes do MySQL adicionaram replicação de várias fontes e ID de transação global, o que o torna ainda mais confiável e fácil de manter.
Conclusão
Bancos de dados prioritários como Oracle e MSSQL oferecem sistemas de gerenciamento robustos e bom suporte. Entre a longa lista de recursos suportados, os usuários podem ter a sensação reconfortante de acesso ao suporte empresarial e sistemas de conhecimento pagos.
Por outro lado, o custo da licença, não tão grande como uma lacuna de recursos e plugins corporativos, deixará você ansioso para mudar para a decisão de código aberto mais fácil do que nunca.
O uso de processos e automação predefinidos pode não apenas economizar seu tempo, mas também protegê-lo de erros comuns.
Uma plataforma de gerenciamento que aborda sistematicamente todos os diferentes aspectos do ciclo de vida do banco de dados será mais robusta do que juntar várias soluções pontuais.