Uma base de dados é uma abstração sobre o sistema de arquivos de um sistema operacional que facilita aos desenvolvedores a construção de aplicações que criam, lêem, atualizam e excluem dados persistentes.
- Por que são necessárias bases de dados?
- Bases de dados relacionais
- As bases de dados mais comuns para aplicações web Python
- PostgreSQL database
- MySQL database
- Conectando a um banco de dados com Python
- Mapeamento de mapeamento de objeto-relacional
- Serviços de banco de dados de terceiros
- Recursos doSQL
- Recursos gerais de banco de dados
- Lista de verificação de aprendizagem de bancos de dados
Por que são necessárias bases de dados?
A um alto nível de aplicações web armazenar dados e apresentá-los aos usuários de forma auspiciosa. Por exemplo, o Google armazena dados sobre estradas e fornece direções para chegar de um local para outro dirigindo através da aplicaçãoMaps. As direcções de condução são possíveis porque os dados são armazenados num formato estruturado.
Bases de dados tornam o armazenamento estruturado confiável e rápido. Elas também lhe dão uma estrutura amental de como os dados devem ser salvos e recuperados ao invés de ter que descobrir o que fazer com os dados toda vez que você constrói uma nova aplicação.
Bases de dados relacionais
A abstração de armazenamento de banco de dados mais comumente usada no Python web developmentis conjuntos de tabelas relacionais. Abstrações alternativas de armazenamento são explicadas na página NoSQL.
Bases de dados relacionais armazenam dados em uma série de tabelas. Interligações entre as tabelas são especificadas como chaves estrangeiras. Uma chave estrangeira é uma referência única de uma linha em uma tabela relacional para outra linha em uma tabela, que pode ser a mesma tabela mas é mais comumente uma tabela diferente.
As implementações de armazenamento de bases de dados variam em complexidade. SQLite, um banco de dados incluído com Python, cria um único arquivo para todos os dados por banco de dados. Outros bancos de dados como PostgreSQL, MySQL, Oracle e Microsoft SQL Server têm esquemas de persistência mais complicados enquanto oferecem recursos avançados adicionais que são úteis para o armazenamento de dados de aplicações web. Estes recursos avançados incluem, mas não estão limitados a:
- replicação de dados entre um banco de dados mestre e um ou mais slaveinstances somente leitura
- tipos de colunas avançadas que podem eficientemente armazenar dados semi-estruturados, como JavaScript Object Notation (JSON)
- sharding, que permite o escalonamento horizontal de múltiplas bases de dados que servem como instâncias de leitura-escrita ao custo da latência em dataconsistência
- monitoramento, estatísticas e outras informações úteis de tempo de execução para esquemas e tabelas de banco de dados
Tipicamente aplicações web começam com uma única instância de banco de dados como o PostgreSQL com um esquema simples. Com o tempo o esquema de banco de dados evolui para uma estrutura mais complexa usando migrações de esquemas e recursos avançados como replicação, fragmentação e monitoramento se tornam mais úteis à medida que a utilização do banco de dados aumenta com base nas necessidades dos usuários da aplicação.
As bases de dados mais comuns para aplicações web Python
PostgreSQL eMySQL são duas das bases de dados abertas mais comuns para armazenar dados de aplicações web Python.
SQLite é uma base de dados que é armazenada em um único arquivo em disco. SQLite é construído em Python, mas só é construído para acesso por uma única conexão de cada vez. Portanto é altamente recomendado para notrun uma aplicação web de produção com SQLite.
PostgreSQL database
PostgreSQL é a base de dados relacional recomendada para trabalhar com aplicações Pythonweb. O conjunto de características do PostgreSQL, desenvolvimento ativo e contribuinte estável para seu uso como backend para milhões de aplicações ao vivo na Web hoje.
Aprenda mais sobre o uso do PostgreSQL com Python na páginaPostgreSQL.
MySQL database
MySQL é outra implementação viável de banco de dados de código aberto para aplicações Python. MySQL tem uma curva de aprendizado inicial ligeiramente mais fácil do quePostgreSQL mas não é tão rico em recursos.
Conheça sobre aplicações Python com suporte a MySQL na página dedicada ao MySQL.
Conectando a um banco de dados com Python
Para trabalhar com um banco de dados relacional usando Python, você precisa usar uma biblioteca de código. As bibliotecas mais comuns para bancos de dados relacionais são:
-
psycopg2(código fonte)para PostgreSQL.
-
MySQLdb(código fonte)para MySQL. Note que o desenvolvimento deste driver está em sua maioria congelado, portanto é sábio avaliar drivers alternativos se você estiver usandoMySQL como backend.
-
cx_Oracle forOracle Database (código fonte).Oracle moveu o código fonte do SourceForge para o GitHub em 2017.
O suporte aSQLite está embutido no Python 2.7+ e portanto uma biblioteca separada não é necessária. Simplesmente “importe sqlite3” para começar a interface com este banco de dados baseado em arquivo único.
Mapeamento de mapeamento de objeto-relacional
Mapadores de objeto-relacional (ORMs) permitem aos desenvolvedores acessar dados do abackend escrevendo código Python ao invés de consultas SQL. Cada framework de aplicação web lida com a integração de ORMs de forma diferente. Há uma página inteira sobre mapeamento objeto-relacional (ORMs) que você deve ler para obter um tratamento sobre este assunto.
Serviços de banco de dados de terceiros
Numerosas empresas executam servidores de banco de dados escaláveis como um serviço hospedado.Bancos de dados hospedados podem frequentemente fornecer backups e recuperação automatizados, configurações de segurança apertadas e escalonamento vertical fácil, dependendo do provedor.
-
Amazon Relational Database Service (RDS) fornece instâncias pré-configuradas de MySQL e PostgreSQL. As instâncias podem ser escaladas para configurações maiores ou menores baseadas em armazenamento e performanceneeds.
-
Google Cloud SQL é um serviço com instâncias MySQL gerenciadas, com backup, replicadas e auto-patched. CloudSQL integra-se com o Google App Engine mas também pode ser usado independentemente.
-
BitCan fornece tanto MySQL quanto MongoDB hosteddatabases com serviços de backup extensivos.
-
ElephantSQL é uma empresa de software como serviço que hospeda bancos de dados PostgreSQL e lida com a configuração do servidor, backups e conexões de dados em cima das instâncias de Serviços Web da Amazon.
Recursos doSQL
Você pode planejar usar um mapeador anobjeto-relacional (ORM) como sua principal maneira de interagir com um banco de dados, mas você ainda deve aprender o básico do SQL para criar esquemas e entender o código SQL gerado pelo ORM. Os seguintes recursos podem ajudá-lo a subir a velocidade em SQL se nunca o utilizou anteriormente.
-
Select Star SQL é um livro interactivo para aprender SQL. Altamente recomendado mesmo que você sinta que você só estará trabalhando com um mapeador objeto-relacional em seus projetos porque você nunca sabe quando você precisará cair noSQL para melhorar o desempenho lento de uma consulta gerada.
-
Um guia para iniciantes em SQL faz um bom trabalho explicando as principais palavras-chave usadas em instruções SQL como
SELECT
,WHERE
,FROM
,UPDATE
eDELETE
. -
SQL Tutorial ensina o básico de SQL que pode ser usado em todas as principais implementações de bancos de dados relacionais.
-
Vida de uma consulta SQL explica o que acontece tanto conceitual como tecnicamente dentro da adatabase quando uma consulta SQL é executada. O autor usa PostgreSQL como base de dados de exemplo e a sintaxe SQL através do post.
-
A Provavelmente Incompleto, Guia Abrangente para as Muitas Maneiras Diferentes de Juntar Tabelas em SQLelabora em uma das partes mais complicadas de escrever instruções SQL que fazem a ponte entre uma ou mais tabelas: a
JOIN
. -
Escrever melhor SQL é um pequeno guia de estilo de código para tornar suas consultas mais fáceis de ler.
-
SQL Intermediário é um tutorialbeyond-the-basics que usa dados abertos do US Consumer Financial Protection Bureauas exemplos para contagem, consulta e uso de views no PostgreSQL.
Recursos gerais de banco de dados
-
Como funciona um banco de dados relacional? é um post longo e detalhado sobre a ordenação, busca, fusão e outras operações que nós freqüentemente tomamos como garantidas quando usamos uma base de dados relacional estabelecida como o PostgreSQL.
-
Bases de dados 101 dá uma visão geral dos principais conceitos de bancos de dados relacionais que é relevante até mesmo para não desenvolvedores como uma introdução.
-
Cinco erros que os iniciantes cometem ao trabalhar com bancos de dados explicam porque você não deve armazenar imagens em bancos de dados, bem como porque se tornar cauteloso com a forma como você normaliza seu esquema.
-
DB-Engines classifica os sistemas de gestão de bases de dados mais populardatabase.
-
DB Weekly é um levantamento semanal de artigos e recursos gerais de bases de dados.
-
Designing Highly Scalable Database Architecturescobre escalas horizontais e verticais, replicação e cache de arquiteturas de banco de dados inrelacionais.
-
Online Migrations at scale is a great read on breaking down the complexity of a database schemamigration for an operational database. A abordagem utilizada pela equipe do autor foi um padrão de escrita dual em 4 passos para desenvolver cuidadosamente os dados para assinaturas, de modo que eles pudessem mudar para um novo e mais eficiente modelo de armazenamento.
-
Uma base de dados de tamanho único não se enquadra em nenhuma das planilhas específicas da Amazon Web Services para ter tantos tipos de bancos de dados relacionais e não-relacionais em sua plataforma, mas o artigo também é uma boa visão geral de vários modelos de bancos de dados e seus casos de uso.
-
SQL tem 43 anos de idade – aqui estão 8 razões pelas quais ainda hoje o utilizamos listas de razões pelas quais o SQL é comumente utilizado por quase todos os desenvolvedores mesmo quando a linguagem se aproxima do seu quinquagésimo aniversário.
-
Chaves SQL em profundidade fornece uma grande explicação para o que são chaves primárias e como você deve usá-las.
-
Explorar um conjunto de dados em SQL é um bom exemplo de como SQL sozinho pode ser usado para análise de dados. Este tutorial usa Spotify datato mostrar como extrair o que você está procurando aprender de um conjunto de dados.
-
Estratégia de teste de integração de bases de dados descobre um tópico difícil que vem à tona em cada projeto do mundo real.
-
GitLab forneceu sua postmortem de uma falha de banco de dados em 31 de janeiro como uma forma de ser transparente para os clientes e ajudar outras equipes de desenvolvimento a aprender como eles lixaram seus sistemas de banco de dados e então encontrou uma forma de recuperação.
-
Assíncrono Python e Bases de Dados é um artigo aprofundado cobrindo porque muitos drivers de banco de dados Python não podem ser usados sem modificação devido às diferenças no bloqueio versus modelos de eventos assíncronos. Definitivamente vale a pena ler se você está usando o WebSockets via Tornado ou gevent.
-
PostgreSQL vs. MS SQL Server é oneperspectivo sobre as diferenças entre os dois servidores de banco de dados do adata analyst.
Lista de verificação de aprendizagem de bancos de dados
-
Instalar PostgreSQL no seu servidor. Assumindo que você foi com o Ubuntu run
sudo apt-get install postgresql
. -
Crie modelos no seu ORM, seja com Django’sbuilt-in ORM ouSQLAlchemy com Flask.
-
Criar suas tabelas de banco de dados ou sincronizar os modelos ORM com o PostgreSQLinstance, se você estiver usando um ORM.
-
Comece a criar, ler, atualizar e excluir dados no banco de dados a partir de sua aplicação web.