O que é um banco de dados?
Banco de dados é uma estrutura especializada no armazenamento e recuperação de informações. Atualmente, existem centenas de bancos de dados e grandes empresas especializadas neste segmento. Assim, podemos optar por um banco de dados gratuito e sem garantia ou suporte, ou então, podemos adquirir um banco de dados e até construir todo o nosso sistema sobre este.
Devido a quantidade de informação que as empresas precisam administrar atualmente, torna-se a cada dia maior a necessidade de bancos de dados mais robustos para suportar esse acúmulo de informações. Consequentemente, a dificuldade em manter toda a estrutura torna-se a cada dia mais complexa, fazendo com que os bancos de dados acabem por ser tornar, sistemas muito maiores do que aqueles que os acessam.
Temos que uma empresa precisa armazenar desde o seu cadastro de clientes, fornecedores, faturamento, contas à pagar e etc, até as informações da utilização de seu website ou então, de suas redes sociais. E também, a nossa realidade hoje, é que nos próximos 20 anos, as empresas estarão armazenando uma quantidade de informações digital que atualmente, talvez poucos sistema suportariam. Por essa razão, quando um sistema está em fase de projeto, a escolha do banco de dados estará entre as mais importantes.
Nesse curso, nós estudaremos a estrutura de armazenamento relacional, até porque, essa ainda é a estrutura mais utilizada no mundo. O modelo relacional, armazena dados em tabelas onde alguns campos mantem relações com campos de outras tabelas. Hoje, os bancos de dados relacionais, fornecem como forma de acesso às informações, principalmente através da linguagem de programação declarativa, chamada de SQL - Structured Query Language ou em português, Linguagem de Consulta Estruturada.
Normalmente, cada linguagem de programação possui uma biblioteca que especifica o acesso a banco de dados relacionais ou então, possui um biblioteca especifica para cada banco de dados. Em Python, nós iremos fazer acesso através do módulu DB-API, que é o acrônimo para Database Application Programming Interface (DB-API). Assim, pense na biblioteca DB-API como uma interface de acesso a banco de dados relacionais e não como uma forma de acesso ao SQLite especificamente. Ou seja, nós temos que a bilbioteca do SQLite3 implementou a interface estabelecida no padrão DB-API. Então, através dessa biblioteca e sua API é que nós trabalharemos e assim, praticamente tudo que fizermos em código Python para manipular uma base SQLite, poderá também ser feito com uma base MySql ou então PostgreSql.
O QUE É UM SGBD - SISTEMA GERENCIADOR DE BANCO DE DADOS?
SGBD é um acrônimo de Sistema de Gerenciamento de Banco de Dados (SGBD) – do inglês Data Base Management System (DBMS). É um sistema especializado em gerenciar uma grande quantidade de informação. Normalmente, um SGBD é um produto vendido a parte do sistema operacional. Porém, devido ao alto grau de complexidade em manter a coesão entre todas as centenas de milhares de registros, um SGBD, acaba sendo responsável por verificar não somente se o seu trabalho está sendo feito de maneira adequada, mas sim, o mesmo precisa checar se diversas partes do sistema operacional estão funcionando corretamente a fim de garantir a integridade das informações.
Essa é a razão de hoje haver tantas empresas e tantos diferentes banco de dados no mercado.
Em termos gerais, os bancos de dados relacionais acabam mantendo um mínima compatibilidade entre si. Porém, basta requerer algum recurso um pouco mais especifico, ou a execução de alguma tarefa de maneira especial, que tem-se o início a grande incompatibilidade dos bancos de dados relacionais. Mesmo que exista um padrão da linguagem SQL, rapidamente se observa que o mesmo não é seguida de maneira igual por todos os bancos de dados.
Todo SGBD possui uma interface de acesso, também chamada de API. Geralmente, essa interface de acesso da-se sob um protocolo de rede, por exemplo, TCP/IP. Com o SQLite é diferente, o mesmo é um SGBD, porém o acesso a banco de dados da-se pelo acesso a um único arquivo armazenado em nosso disco rígido. Logo, na manipulação de um BD SQLite , não existe o Cliente e um Servidor, tudo está acontecendo sobre um arquivo de dados e um de paginação e assim, todo o controle acaba ocorrendo pela restrição e acesso de poder escrever num arquivo. Assim, o controle para saber se uma tabela está aberta de modo exclusivo, isto é, se uma tabela está locada, acaba sendo feito pela checagem de "flags" escrito no arquivo no disco da nossa própria base de dados.