Oracle vs PostgreSQL. Por que escolher a Oracle pode ser uma decisão inteligente

Lendo vários artigos no hub sobre a migração bem-sucedida do Oracle para o PostgreSQL, um leitor inexperiente pode ter a impressão de que o PostgreSQL não é pior ou até melhor que o Oracle. E a escolha é óbvia. E as centenas de milhares de empresas que acabam pagando bilhões de dólares à Oracle estão apenas desperdiçando seu dinheiro. Mas tentarei tranquilizá-lo, onde, onde e nas grandes empresas eles sabem como contar dinheiro. E suas decisões não são de forma alguma equivocadas.

O objetivo do artigo é criar um grão de dúvida na alma de um leitor que está tentando fazer uma escolha entre bancos de dados relacionais que funcionam no modo versionado. Por que exatamente o modo de versão? Aqui a escolha não é grande, mas nos bloqueadores existem concorrentes dignos e a escolha é ainda mais difícil (quanto custa a versão gratuita do DB2 para bancos de dados pequenos?)

Não sou especialista no banco de dados Oracle, embora trabalhe com esse banco de dados há muitos anos e não apenas com ele. Tudo o que posso fazer é usar suas vantagens e obter um desempenho ideal. Além disso, não sou especialista em PostgreSQL (nunca o usei na produção).

Lendo artigos sobre migração bem-sucedida - Entendo que essas empresas nem precisavam do Oracle ou o banco de dados foi selecionado inicialmente incorretamente. Eles usaram apenas uma pequena fração dos recursos desse banco de dados. Somente assim eles poderiam tomar uma decisão sobre a migração e implementá-la. Simplesmente, se você usar todo o poder desse banco de dados, nunca terá a vontade de migrar porque é semelhante a escrever seu aplicativo do zero.

Vamos finalmente falar sobre os benefícios de desempenho que a Oracle fornece e, com base nessas informações, você encontrará a resposta por si mesmo.

  1. Partição (8i) . Partição - permite o crescimento do volume de dados praticamente sem afetar o desempenho geral. Um bônus interessante e importante é a partição de índices. As partições do PostgreSQL aparecerão apenas na versão 10. Antes disso, a herança (INHERITS) é um hack sujo. E os recursos de particionamento no Oracle estão aumentando a cada versão.
  2. Mesclar (8i) . Sim, sim, a mesma mesclagem que existe no MSSQL há muitos anos (2008) e que nem existirá no PostgreSQL 11. Dá um aumento de dez vezes na velocidade em comparação com operações únicas. Sim, eu sei que o PostgreSQL suporta subconsultas e você pode implementar tudo através do Insert select e da atualização complicada. Mas isso está longe de ser o mesmo.
  3. RESULT_CACHE (Selecionar) (11g). Na Oracle, essa tecnologia apareceu relativamente recentemente. Se você usar essa tecnologia com sabedoria, ela ganha em algumas coisas dezenas ou centenas de vezes. O principal é aprender a usá-lo de maneira inteligente.
  4. Opção INMEMORY ( 12 ) Não há analógico no PostgreSQL. Crescimento real em algumas consultas centenas de vezes.
  5. Otimizador + ajuste de consulta . Começando com 11g, ele se transformou em quase um clique próximo-> próximo no EM. O PostgreSQL é mais complicado com isso e a falta de uma contrapartida de EM em geral é bastante desconfortável.

    PL / SQL. Sim, eu sei sobre a variedade de idiomas no PostgreSQL. Mas a Oracle está constantemente aprimorando o idioma, com foco no desempenho.
    • Compilação . O bycode ocorre durante o salvamento (no PostgreSQL durante a primeira chamada na sessão + plano de consulta durante a primeira execução). Começando com 10g, o Oracle pode compilar em código nativo.
    • Inteiro nativo - acelera significativamente o trabalho com números. O PostgreSQL pode usar outras linguagens mais adequadas (tradutores). No Oracle, isso também pode ser resolvido usando Java e C.
    • Mudando o "contexto" do PL / SQL. A Oracle está muito preocupada em otimizar essa métrica, melhorando-a de versão para versão. Para reduzir os atrasos A mudança do "contexto" cria BULK COLLECT, FORALL e muito mais.

      Dado o estado das linguagens do PostgreSQL, essa tarefa não é de todo importante neste estágio.
    • Cache de resultados (função) (11g) Com o uso adequado, a capacidade de resposta do aplicativo como um todo pode aumentar várias vezes, sem exigir muito esforço. Em algumas consultas, dezenas de vezes.

Bem, como se costuma dizer, o diabo está nos detalhes, e a Oracle trabalhou esses detalhes muito melhor. A Oracle nunca deixa de se surpreender com todas as versões. E não importa para qual banco de dados você transfere depois do Oracle - você sempre terá a sensação: Bem, droga, no Oracle há muito tempo ou no Oracle é melhor feito.

Tenho quase certeza de que, com o mesmo hardware e usando todos os recursos do PostgreSQL e Oracle, você pode obter melhor desempenho, com menos esforço no ORACLE.

PS Em nenhum caso, considere este artigo como um banco de dados PR Oracle.

Entendo bem que sempre há coisas que são feitas melhor no PostgreSQL. Mas, em geral, a Oracle neste segmento do banco de dados número 1.

Eu especificamente não toquei em coisas relacionadas à administração. Imagine que você pode transferir o arquivo de data de disco para disco ou restaurar o “bloco quebrado” no estado Online. E você pode fazer a transição para novos servidores sem parar o banco de dados. E esses não são novos recursos. Na Oracle, tudo está muito melhor lá, e eu não sou um administrador de banco de dados.

Anteriormente, em algum lugar até a versão 10, o administrador era quase sempre necessário. Agora, a necessidade de administrador caiu drasticamente, embora as qualificações do administrador agora sejam mais altas. Talvez, na versão 15, o conceito de "admin" DB seja uma coisa do passado :)

Sim, e o Pl / SQL é mais atencioso que outros, embora, obviamente, isso não seja C # :). É verdade que isso é puramente individual.

Bem, eu não toquei em coisas que pouco ajudam na velocidade.

PSS E sim, mal me lembro de todas as possibilidades. Apenas aqueles que estavam na "superfície". Adicione os comentários. Vou incluir no upd.

Source: https://habr.com/ru/post/pt422669/


All Articles