PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL é o melhor banco de dados do mundo


O título não é clickbait ou hipérbole. Pretendo provar que, em virtude do design e da implementação, o PostgreSQL é objetiva e mensuravelmente um banco de dados melhor do que qualquer coisa atualmente disponível, com ou sem considerações financeiras.

Como no mundo posso reivindicar e justificar uma declaração tão elevada? Continue lendo, gentil nerd. Prometo que seu tempo não será desperdiçado.

Segurança transparente


O PostgreSQL tem uma lista de discussão de segurança. O projeto PostgreSQL aprende sobre os vetores de intrusão ao mesmo tempo que todos os outros. Nada está escondido, e tudo o que é encontrado é trabalhado a uma taxa que faz a cabeça dos vendedores comerciais girar. Não se deixe enganar por listas de defeitos mais curtas publicadas pelo mesmo fornecedor que fornece o software sob escrutínio.

Isso significa que todos os vetores de ataque conhecidos são tratados assim que são tornados públicos. Esse tipo de capacidade de resposta de segurança não é sequer contemplado no mercado comercial. Para fornecedores comerciais, o sigilo até que o problema possa ser resolvido é vital para a correção. O PostgreSQL não tem esse alívio, e isso é fantástico para você.

O controle de simultaneidade de várias versões é bom para você


O PostgreSQL escolhe um método de controle de simultaneidade que funciona melhor para cargas de trabalho altas de INSERT e SELECT.

É muito fácil projetar para PostgreSQL, tendo em mente as limitações para a sobrecarga de rastreamento para

ATUALIZAR e EXCLUIR. Principalmente, se você respeita seus dados, deve aprender a amar a segurança de dados que o PostgreSQL oferece a você.

DDL participa de transações usando PostgreSQL. As migrações funcionam até o fim ou nada (o pior tipo de não funcionar é quase funcionar). Os arreios de teste são fáceis de construir. Precisa redefinir o chicote de teste? Apenas RETORNO.

O PostgreSQL suporta formas de isolamento de transações compatíveis com padrões, incluindo serialização, leitura confirmada e leitura repetível. Esses métodos fornecem total conformidade com ACID.

PostgreSQL faz tudo


Então, você quer NoSQL, Riak, REACT, Redis, Mongo, etc.? O PostgreSQL faz tudo isso. É certo que não com todos os sinos e assobios de todos os produtos originais. Por exemplo, o PostgreSQL não cria novos shards para você para nenhum deles. Isso ainda é um processo manual. Mas, novamente, sempre há pg_partman. . .

Você quer um armazenamento de dados de coluna? Que tal hstore? Você não quer treinar sua equipe? Conecte o idioma de sua escolha e continue transportando. Você quer replicação parcial? A replicação lógica de streaming é para você.

Eu teria dificuldade em pensar em um recurso que eu quero que o PostgreSQL não tenha, ou que não exista uma extensão conhecida para fornecer.

Você deseja extrair dados de outros sistemas? O PostgreSQL tem a coleção mais vibrante de objetos de federação de qualquer banco de dados. Eles os chamam de invólucros de dados estrangeiros, e você pode conectar o PostgreSQL a um jacaré com fita adesiva e braçadeiras. Trate qualquer coisa como se fossem seus dados.

Conectá-lo a um mapa


A comunidade PostGIS pode ser maior do que a própria comunidade PostgreSQL. Os recursos de mapeamento do PostgreSQL o colocam em uma classe à parte, mesmo em comparação com alternativas muito caras.

O projeto PostGIS escolheu o PostgreSQL como plataforma devido à facilidade de extensibilidade e aos extensos recursos de enriquecimento de dados. Esses recursos são expostos diretamente para qualquer outro projeto aproveitar. Eles também não são respondidos por nenhum outro fornecedor, comercial ou de código aberto.

Em última análise, você pode conectá-lo a qualquer coisa.

O PostgreSQL está crescendo e liderando o caminho em código aberto


O projeto PostgreSQL é uma das organizações mais visíveis em software de código aberto. Com uma comunidade enorme e crescendo a um ritmo astronômico, quaisquer deficiências que ela tenha agora serão derrotadas em um período de tempo com o qual outros fornecedores só podem sonhar.

Recursos adicionais de qualidade corporativa são anunciados literalmente todos os dias, e a equipe para manter esses recursos é auto-selecionada a partir de um grupo de gênios que toda empresa espera contratar, e simplesmente não há o suficiente para todos.

O PostgreSQL cria soluções que são estáveis ​​para sempre


O PostgreSQL tem replicação lógica embutida no núcleo. Isso permite migrações entre versões. Leia isso novamente. Você não está preso a uma versão específica de hardware ou software. A solução pode ser atualizada indefinidamente.

Além disso, o PostgreSQL é suportado em muitas plataformas, incluindo as versões superestáveis ​​do Linux. Você precisa de uma solução que sobreviva ao ROI típico de 3 a 5 anos? O PostgreSQL durará para sempre, mesmo que você nunca atualize o hardware. E as taxas para isso são fáceis de calcular. $ 0.

Declarativo é melhor que imperativo


As linguagens de banco de dados são geralmente declarativas. Ou seja, você escreve uma consulta na linguagem incorporada de sua escolha, descrevendo os resultados que gostaria de ver. O banco de dados tenta decodificar suas intenções e fornecer os resultados apropriados. Esta é a base de todos os modelos de programação declarativa. No PostgreSQL, isso se resume a um mapeamento de funções para palavras-chave na linguagem SQL, às vezes com várias opções algorítmicas para exatamente como implementar cada declaração.

Na velha discussão sobre os modelos de programação imperitivos versus os declarativos5, me ocorre que a programação declarativa é apenas uma programação imperativa disfarçada. Cada token declarativo em uma linguagem de consulta de banco de dados é mapeado para um ou vários algoritmos que aplicam a declaração em termos imperativos. Assim, a incompatibilidade de impedância definida por Henrietta está, em última análise, na mente do desenvolvedor. Ou seja, se o desenvolvedor pensasse exatamente como o programador da função de banco de dados pensa, não haveria incompatibilidade.

Então, como um modelo declarativo poderia ser melhor do que um modelo imperitivo, dado que um é apenas um recurso de chamada do outro? Ainda bem que você perguntou, porque isso me leva ao meu ponto.

Os desenvolvedores do PostgreSQL são mais espertos que você. Não quero dizer que seja jocoso ou tímido. Literalmente, milhares de contribuidores fizeram milhões de contribuições ao projeto PostgreSQL, muitos deles como melhorias nas contribuições de outros. As chances de que o que você pensou em sua cabeça seja melhor do que o que já foi implementado é muito baixa. E, mesmo que seus pensamentos fossem melhores, você deveria contribuir com eles para o projeto PostgreSQL para o benefício de todos, elevando assim a fasquia para todos os outros.

Então, o que torna o PostgreSQL tão maravilhoso? Mindshare mundial sem considerações corporativas. Milhares de desenvolvedores estão trabalhando centenas de milhares de horas para fazer melhores escolhas algorítmicas. Assim, seu software fica melhor a cada lançamento, geralmente sem ter que fazer nada em particular de sua parte.

Não é essa a natureza do software em geral, você diz? Bem, sim. Mas não tão longe quanto é quando o mundo inteiro está envolvido em seu projeto. O PostgreSQL tem um lugar muito proeminente na comunidade de código aberto. Os fornecedores comerciais nunca serão capazes de acompanhar a taxa de mudança que um projeto de código aberto pode fornecer nesse nível. As migrações para código aberto (e principalmente PostgreSQL) estão aqui para provar isso.

Os recursos continuam aparecendo. Restam muito poucas coisas que os fornecedores comerciais podem apontar como uma vantagem distinta. Entre essas coisas estão o suporte SMP, replicação bidirecional e ferramentas externas. Adivinhe no que a comunidade está trabalhando agora e provavelmente será lançado nos próximos anos?

Estenda o PostgreSQL como quiser


O PostgreSQL tem uma comunidade vibrante de autores que escrevem softwares auxiliares. Isso inclui conectar qualquer linguagem que você goste e usá-la para estender o PostgreSQL de qualquer maneira que pareça útil. Você gosta de manipulação de strings perl? Ok, então use isso. Que tal o suporte ao mapa Python? Claro, basta conectar o python e ir para a cidade. Deseja escrever serviços da Web usando um back-end do PostgreSQL? Isso é incrível, e o PostgreSQL vai ajudar. JSON? OK. XML? Pode apostar. O PostgreSQL tem suporte direto para tudo isso e infinitamente mais. Se você puder pensar em uma linguagem que faça isso bem, conecte-a ao PostgreSQL e você poderá tê-la no lado do servidor.

Você pode criar suas próprias funções, tipos de dados, operadores, agregados, funções de janela ou praticamente qualquer outra coisa. Não vê um recurso que você gosta? Plagie e personalize-o a partir do código-fonte. Você é livre para fazer isso por causa da licença.

O PostgreSQL também fornece algumas funções de gancho que permitem estender o banco de dados sem ter que ir a extremos de programação.

Essa capacidade de assimilar qualquer recurso de qualquer outra linguagem é exclusiva do PostgreSQL. Você pode fornecer qualquer recurso usando qualquer biblioteca padronizada existente. Você pode seguir os padrões, acompanhar as mudanças, ainda atualizar o PostgreSQL enquanto ele estiver ativo e fazer tudo de graça.

Vá em grande e vá longe


O PostgreSQL possui vários recursos para aproveitar ao máximo a plataforma de hardware que recebeu. Particionamento, execução paralela, índices parciais, tablespaces, cache e rotinas de manutenção paralela sem bloqueio (quase tudo no PostgreSQL está gerando a palavra-chave CONCURRENTLY ultimamente).

Quando isso não for suficiente para você, a replicação de streaming físico fará um monte de espera de leitura para você a um preço baixo. Sharding, memcache, enfileiramento, balanceamento de carga e pool de conexões funcionam com o PostgreSQL. Ainda não é suficiente? Que tal a replicação de streaming lógico? Você quer geoshard o banco de dados em todo o mundo, você diz? Bem, bem-vindo à replicação bidirecional.

E o preço ainda está em $ 0.

Indexar tudo isso


O PostgreSQL suporta uma lista tão grande de índices que fica confuso descobrir como usar todos eles. GiST, SP-Gist, KNN Gist, GIN, BRIN e Btree estão todos disponíveis. E há mais a ser obtido através do sistema de extensão, como filtros Bloom e outros.

O PostgreSQL pode usá-los com índices acionados por funções, índices parciais, índices de cobertura e pesquisa de texto completo. E esses recursos estendidos não são mutuamente exclusivos. Você pode usá-los todos ao mesmo tempo.

Enrole, implemente


Várias das tecnologias já mencionadas fazem do PostgreSQL uma fantástica plataforma de integração e distribuição de dados. Várias formas de replicação, combinadas com várias formas de federação, fornecem tecnologias push e pull para praticamente qualquer tipo de sistema de dados.

Eles podem ser combinados em configurações infinitas para fazer a ponte entre as soluções de armazenamento de banco de dados. Tudo isso sem exigir nenhum pacote de processamento ETL/ELT. O PostgreSQL apenas faz isso. A fonte única de banco de dados de verdade mais rápida do planeta faz isso não movendo os dados para fora do sistema de origem. Isso significa que os dados estão sempre atualizados e os tempos de resposta podem ser gerenciados.

Se você não suporta a falta de confiabilidade do sistema de origem ou gostaria de um desempenho um pouco melhor no lado da consulta, também pode armazenar em cache os dados periodicamente com visualizações materializadas, que podem ser atualizadas enquanto ainda são consultadas.

A licença está aberta


O PostgreSQL tem sua própria licença que é amplamente baseada na licença BSD. Isso permite uma liberdade ainda maior de uso e distribuição.

A licença se aplica a todo o código do projeto principal, extensões de contribuição principal, bibliotecas de clientes, gerenciadores de conexões e a maioria das ferramentas associadas.

É altamente permissivo, escrito em inglês simples e não está disponível para compra.

Documentação fantástica


O projeto PostgreSQL exige que qualquer desenvolvedor que envie o código forneça a documentação para a proposta. Esta proposta é utilizada para criar a documentação do recurso que é disponibilizado em diversos formatos. Esta documentação também é usada na avaliação do próprio recurso e como referência para desenvolver recursos futuros.

Tudo junto, isso significa que o PostgreSQL vive de documentação. Existem muitos desenvolvedores do PostgreSQL que aprenderam a codificar em C, como funcionam os bancos de dados e como os projetos são gerenciados trabalhando com o projeto PostgreSQL. Esta documentação é inigualável.

Desenvolvimento orientado a testes


O PostgreSQL é amplamente testado. Não, isso não é dizer com força suficiente. O PostgreSQL é exaustivamente testado. Cada bug é recebido com um teste para verificar sua existência, e o código é escrito para satisfazer o teste. Novos recursos são escritos pela criação de testes (e documentação) primeiro, depois codificados até que o recurso apareça.

Esses testes são integrados ao farm de compilação para regressão, portanto, os bugs não (re)aparecem em versões futuras do PostgreSQL. Isso significa que todo teste (que ainda é atual) é executado para cada versão do PostgreSQL para cada ciclo de compilação. São muitos testes e garantem que o PostgreSQL continue sendo o banco de dados mais estável disponível.

O PostgreSQL só é liberado quando TODOS os testes de regressão são aprovados. Isso prevê lançamentos de “0 bugs conhecidos”.

Internacionalização e localização


Os desenvolvedores do PostgreSQL vêm de todo o mundo. Eles têm trabalhado em muitas línguas nativas desde o início do PostgreSQL como um projeto de graduação universitária. A internacionalização e a localização foram incorporadas ao PostgreSQL como uma prática padrão, e não um parafuso, já que o PostgreSQL começou a atrair um mercado comercial global.

Embora o PostgreSQL delegue parte da internacionalização ao sistema operacional por motivos de compatibilidade, grande parte da tradução é incorporada ao sistema, proporcionando uma experiência de transição de idioma perfeita.

Operação na nuvem


O PostgreSQL trabalha em arquiteturas de nuvem usando ansible, kubernetes e ferramentas proprietárias de vários fornecedores de nuvem. Existem várias implementações de nuvem nativas para escolher para combinar com sua arquitetura.

Se você deseja tratar servidores como gado, não como animais de estimação, o PostgreSQL também o cobre na nuvem.

Conformidade com os padrões


O PostgreSQL foi focado em padrões durante toda a vida útil do projeto. Como o PostgreSQL se originou em um programa de pós-graduação da Universidade, ele tem sido usado como uma implementação de referência para muitos padrões SQL.

O PostgreSQL implementa SQL/Med e ANSI SQL.

De acordo com a fantástica documentação, “o PostgreSQL suporta a maioria dos principais recursos do SQL:2016. Dos 179 recursos obrigatórios necessários para a conformidade total do Core, o PostgreSQL está em conformidade com pelo menos 160.” Isso é mais do que quase qualquer outro mecanismo de banco de dados.

Recursos de idioma


O PostgreSQL implementa expressões de tabela comuns (CTE), estruturas de controle de linguagem (if, for, case, etc.), tratamento estruturado de erros e todos os benefícios que você esperaria de uma linguagem procedural madura.

Você já está convencido?


Ainda poderia falar sobre a fantástica comunidade de grupos de usuários, canais de IRC, sites com soluções, artigos de blog e mentores. Eu poderia ser filosófico sobre a maneira como o banco de dados é multiplataforma, arquitetura cruzada e cultura cruzada. São horas e horas de apresentações, vídeos e palestras.

Ou você pode simplesmente fazer o download e ver se é maior do que sua imaginação. Acho que você vai se surpreender muito.