Salve caro amigo! Sei que a muito tempo não posto nada aqui. Do último post pra cá, muitas coisas aconteceram… Vida pessoal e profissional está a mil… Prometo que vou terminar a série sobre SELECT… Mas são tantos assuntos legais e acaba que não saio com nada do outro lado. Não vou prometer muitas postagens, mas vou tentar me dedicar mais.
As postagens
Os meus últimos posts não tiveram muito conteúdo técnico. Falei sobre o evento SQL Saturday que aconteceu em Brasília, onde eu tive a oportunidade de palestrar. Antes deste post, estava escrevendo a série sobre o processamento lógico do comando “SELECT”. Para aqueles que estão acompanhando a série, fiquem tranquilos que vou até o final! De grão em grão a galinha enche o papo!
O que temos pra hoje
Recentemente decidi postar algo mais básico! Seguindo o objetivo deste blog, que é compartilhar meu conhecimento com todos, e depois de perceber que muitas pessoas sempre me perguntam com o que trabalho (o que, pra quem é da área, sabe que não é fácil explicar) decidi falar sobre o que é banco de dados e sobre a minha profissão: DBA (Database Administrator, ou Administrador de Banco de Dados).
Este post ficou um pouco grande. Ao final tenho algumas perguntas e respostas e talvez você prefira ir direto caso queria uma forma mais rápida de entender. Este post está voltado mais para quem não conhece muita coisa da área de tecnologia. Para aqueles já conhecem algo sobre banco de dados, então não deem muita importância com algumas coisas que irei dizer. Estarei tentando ser o menos técnico possível e isso vai exigir exemplos menos complicados.
Pra não confundir as coisas, vou usar muito o termo “Instituição Financeira” ao invés de banco (aquele onde está sua conta), para não confundir com banco de dados.
Mas não se assuste. Tentei ser o mais didático possível, então senta aí e vamos conversar um pouco…
Você usa banco de dados o tempo todo!
Você já se perguntou pra onde vão as fotos que as pessoas postam no Instagram? Sabe aquele comentário que você acabou de postar no facebook pelo seu celular e que em instantes seus amigos, em qualquer lugar do mundo, usando um iPhone, um Android ou até um notebook, pode vê-lo? Como isso é possível? Como você pode consultar seu saldo do banco nos caixas eletrônicos de vários lugares do Brasil? Como pode você sacar um dinheiro em Brasília, e imediatamente conferir pela internet, ou aplicativo no celular, o saldo, já atualizado? Você já se perguntou o que acontece quando vai a um caixa eletrônico da sua instituição financeira?
Vamos imaginar uma situação, quando você vai a um caixa eletrônico, em um dia qualquer:
- Você chega na frente do caixa e tem uma tela esperando o que você quer fazer.
- Uma caixa eletrônico é nada mais, nada menos, do que um computador com o programa de caixa eletrônico da sua instituição financeira…
- Aquilo não passa de um programa de computador esperando você, usuário e cliente, fornecer um comando. A diferença é que uma tela simpática e os comandos são pré-determinados, e são escolhidos através dos botões que ali existem. Digamos que você queira consultar o saldo.
- Você coloca o cartão e digita a senha, conforme lhe é solicitado na tela.
- Após isso, aparece uma tela com mensagens do tipo: “Aguarde…”, “Operação em processamento…”, etc…
- Enquanto essas mensagens estão na sua frente, o programa que está ali por de trás daquela telinha simpática, precisa verificar se a sua senha está correta (do que adiantaria ter e pedir a sua senha!?) para saber se ele pode prosseguir com o acesso aos dados da sua conta… É uma maneira de garantir que a pessoa, que está ali executando os comandos, está autorizada a ver aqueles dados.
- Então ele obtém de algum lugar a senha que você cadastrou (lembra!? quando você abriu sua conta!?) compara com a senha que você digitou para verificar se as duas são iguais… Se não for, na tela pode aparecer uma mensagem do tipo: “Dados inválidos”, “Senha incorreta. Tente Novamente”…
- Estando tudo certo, de algum lugar ele também traz o saldo da sua conta.
- Após isso ele exibe a informação na tela para você.
😕 Ummmmmm é isso mesmo Rodrigo!!! Mas que lugar é esse? Onde diabos fica guardado minha senha e saldo da minha conta???
É ai que a brincadeira começa: Esses dados seus ficam guardados em um banco de dados. Com o número da sua conta (que está gravado no seu cartão) o programa do caixa eletrônico obteve de um banco de dados não só sua senha e saldo, como algumas outras informações da sua conta.
😀 Nossa que legal, então em cada caixa eletrônico tem esse tal de banco de dados? Como ele é? É um equipamento grande? 😕
Perguntas inteligentes requerem respostas inteligentes. Vamos por partes. Um banco de dados serve para guardar o quê? Dados.
Um banco de dados na verdade é um conceito. Sabe a agenda do seu celular? Então… é um banco de dados… Sabe aquela lista de pessoas que você montou para um churrasco na sua casa? Então também é um banco de dados… Um banco de dados é um local onde você guarda informações para serem usadas depois. Não preciso de tecnologia avançada para fazer um banco de dados, como nos exemplos acima, porém o que muda é o meio onde você guarda/consulta essas informações: você pode ter uma agenda telefônica anotada em uma folha de papel.
No caso de computadores, quem guarda e lê alguma coisa são os programas e não você, ser humano. Os aplicativos, sites da internet, etc. eles sim precisam guardar dados que NÓS fornecemos a eles: textos, fotos, músicas, etc. Nós interagimos com os programas e eles ficam a cargo de guardar os nossos dados em um banco de dados. Sem um banco de dados, poucos programas iriam servir pra alguma coisa.
XD XDNossa Rodrigo, muito legal cara! :/ Mas ainda não entendi pra que serve esse negócio? Um banco de dados serve para guardar dados… Programas usam banco de dados para guardar nossos dados! Mas onde fica esse tal banco de dados?
Os computadores tem memórias. Igual a memória da sua cabeça, ela serve para guardar coisas. Olha só temos algo em comum aqui…
😉Entendi Rodrigo! Igual eu anoto coisas importantes em um papel, um programa guarda os dados na memória do computador! O banco de dados dele fica na memória!
Show! É exatamente isso. Mas sabe quando você está digitando um trabalho importante no computador e de repente a energia acaba e desliga seu computador? Nossa que merda! Era aquele trabalho que você esperou 1 mês para fazê-lo e tem que entregar no dia seguinte… Como você faz para se proteger disso?
😈Simples: eu sempre salvo meu trabalho no computador, lá no HD, quando modifico algo nele. Ou em um pen drive! Sou uma pessoa esperta. Há Há Há!!! Desculpe ai companhia energética!😈
Muito bem. O que você faz é jogar os dados do seu trabalho em um local “mais seguro”. Onde você possa recuperar caso haja algum tipo de falha do computador, como a queda de energia e o computador desligar.
E é assim que os programas fazem: eles salvam suas coisas para algum espécie de disco (o chamado “HD” do computador) E a todo momento estão lendo e gravando os dados lá. Caso ocorra algum problema (queda de energia, por exemplo), ao ligar novamente, os dados estarão prontos para serem usados.
😕Ahhhhh, mas como é a cara desse banco de dados que os programas de computador usam? Eu consigo vê-lo?❓
Nesse mundo de computadores, as coisas que são gravadas em um disco são, na verdade, gravadas em arquivos. Então um programa quando quer salvar os dados para depois acessá-los, ele grava e lê os dados em arquivos, e os arquivos ficam no disco cujo aquele computador possui acesso. Geralmente ele grava de uma forma que é impossível para nós, simples humanos, entender o arquivo. Somente o próprio programa consegue lê e nos apresentar os dados da forma que consigamos compreender.
Ahhhhhhhhhhh, entendi! Então toda vez que eu vou no caixa eletrônico da minha instituição financeira, o programa da tela simpática que me pergunta o que quero fazer consulta minha senha e meu saldo no disco daquele computador que estou mexendo!!!
❓❓❓Mas espera um pouco … Como outros caixas eletrônicos da minha instituição financeira, de cidades diferentes,conseguem ter todas as minhas informações atualizadas? E se eu sacar um dinheiro? Como os outros caixas eletrônicos do Brasil inteiro atualizam seu banco de dados? E quando eu abro a conta? Como minha senha vai parar em outros lugares? Agora ficou tudo confusoo_Oo_O
Opa, aí você começa a perceber um problema… Imagina se todos os caixas eletrônicos, tivessem, ali mesmo, seu próprio banco de dados? Nossa, você depositava um dinheiro na sua conta para aproveitar suas férias que começariam em 10 minutos… Caia na estrada e chegando em outra cidade, em outro caixa eletrônico da mesma instituição financeira, o que aconteceria se o banco de dados desse outro caixa não estivesse com o saldo da sua conta atualizado e com o depósito feito? Você não iria poder aproveitar suas férias…
💡Rodrigo, Rodrigo, já sei!!!!! E se todos os caixas eletrônicos acessarem o mesmo disco? O mesmo banco de dados? É possível cara?💡
BINGO!!!!!!!! A coisa começa a ficar interessante: os caixas eletrônicos da sua instituição financeira conseguem ler e consutar informações em um um banco de dados central! Com a ajuda de uma rede de computadores bem rápida, a comunicação entre o caixa eletrônico e o banco de dados fica fácil, e as operações que você faz rapidamente são atualizadas de qualquer lugar que você esteja. E como é um banco de dados só, é possível criar aplicativos para celular que também acessam este mesmo banco de dados… Também posso criar um site em que você possa consultar seu saldo, pois o site irá consultar o mesmo banco de dados que o dos caixas eletrônicos…
Só que a coisa não é tão simples assim. Se você tem um banco de dados único, então todos os caixas eletrônicos da sua instituição financeira precisam acessar o mesmo arquivo onde fica esses dados, e lógico o mesmo disco, e mais lógico ainda, o mesmo computador que tem acesso a esse disco.
Na verdade, o programa que está instalado ali naquele caixa eletrônico, precisa se comunicar com outro computador. Este outro computador é onde estará o banco de dados. Essa comunicação é feita com tecnologia de rede de dados bem rápida e permite que, mesmo os computadores estando bem distantes fisicamente, as coisas trafeguem com velocidade alta e…
😎😎😎 … Já sei, já sei… Então os programas dos caixas eletrônicos enviam e recebem os dados que estão neste outro computador central, que foi designado para ser o banco de dados da minha instituição financeira...
A idéia é exatamente essa. Mas aí você começa a se deparar com algumas perguntinhas:
- Qualquer programa pode acessar os dados de um banco de dados? (Lascou… Se for assim, seria fácil obter os dados da sua conta😮).
- Como esses dados devem ser gravados e lidos? (Sei lá…😎)
- E se acabar o espaço em disco? (Nossa😮, não vou poder colocar mais dinheiro na minha conta? Nem fazer outras operações?)
- Caramba, a minha insituição financeira tem milhares de clientes. Não é muito dado para guardar e consultar? Não fica lento acessar todos esses dados ao mesmo tempo? (Nossa, pare de pergunta dificíl cara…:'()
- E como posso permitir que vários programas diferentes consultem os dados sem prejudicar os dados de outro programas? (Sei lá…[2]😎)
Ai você começa a perceber que ter um banco de dados não é tão simples. É um mundo complexo. Um banco de dados, além de guardar dados de outros programas precisa ter, dentro outras coisas:
- Segurança (Não é qualquer um que pode mexer nos dados ali guardados)
- Velocidade (A leitura e gravação dos dados deve ser o mais rápido possível… Assim você não fica esperando tanto aquela telinha “Aguarde…”)
Agora te pergunto… Será que é simples fazer isso? Será que quando se vai fazer um site novo, um programa novo, ou um sistema inteiro novo, os programadores, toda vez, precisam realmente pensar nisso tudo também?
💡💡💡Humm… Espera um pouco Rodrigo…! E se houvesse um programa de computador específico para cuidar de guardar os dados? Em outras palavras, um programa só para cuidar dos bancos de dados…?💡💡💡
E é exatamente assim que a roda gira… Existem programas específicos que cuidam de banco de dados: Os outros programas, sites, aplicaticos de celular, etc., se conectam com esses programas e estes ficam a cargo de gravar e ler os dados solicitados. Esses tipo de programas são chamados de “Softwares Gerenciadores de Banco de Dados” ou SGBDs. O que os SGBDs fazem, basicamente, é:
- Receber e guardar os dados que outros programas precisam, em um banco de dados.
- Grantir a segurança desses dados e controlar qual programa deve ou não acessar tal dado
- Garantir que os dados sejam lidos e entregue aos outros programas, aplicativos, sites, rapidamente e estes entreguem a você, usuário!
- Permitir que diferente programas consigam usar o banco de dados sem que um prejudique os dados do outro.
A maioria das pessoas da área de tecnologia chama o SGBD de “banco de dados” mesmo. Isso é por conveniência. Mas o banco de dados mesmo você sabe que são aqueles montes de dados que estão gravados em algum arquivo… O SGBD cuida de ler ou gravar esses dados, mediante a solicitação de outros programas de computador (sites, aplicativos de celular, etc).
E onde esses tais de SGBD ficam?😕
Um SGBD é apenas um programa de computador. Eles ficam instalados em computadores mais potentes, chamados de “servidores”. Ao criar um programa novo, o responsável por esse programa também deve pensar na infra-estrutura necessária para se manter um SGBD funcionando (isso também irá influenciar nos custos de desenvolvimento desse programa, com certeza!), bem como seus banco de dados. Eu não faço a mínima idéia onde fica o servidor que está instalado o SGBD que é usado pelos caixas eletrônicos da minha instituição financeira, muitos menos os do facebook, do twitter, etc. Quem precisa saber disso são apenas os programas que consultam. Através de protocolos de comunicação e endereços da internet, os programas conseguem enviar e receber dados dos SGBD de onde diabos eles estejam fisicamente. Eu, como um profissional da área, preciso me preocupar com essas e outras coisas a respeito dos SGBD que são de minha responsabilidade. Você (e eu), como usuário dos sistemas, jamais precisará se preocupar com isso. Tudo deve ser transparente. Graças a Deus tudo é transparente!😛😛
Tá legal, e quem é que cria esses tais de SGBDs?😕
Existem vários fabricantes. Igual existem várias marcas de carro, existem várias “marcas” de SGBD. Cada uma tem sua particularidade: velocidade, nível de segurança e preço são uns dos exemplos que influenciam na escolha de um SGBD específico.
Você acha que a Microsoft só mexe com Windows? Com XBOX? Com hotmail? Está enganado! Um dos SGBD mais populares do mercado é o “SQL Server” , e a Microsoft é quem desenvolve. Empresas como IBM e Oracle “fabricam” SGBDs. O DB2 é o SGBD da IBM e o SGBD da Oracle se chama Oracle também.
Eu trabalho com o SGBD da Microsoft, o “SQL Server”. Sim! Este é o nome do SGBD. Igual os carros têm seu nome, o SGBD têm seu nome, e quem escolhe é quem fabrica.
😕 😕Opa, mas espera um pouco aí Rodrigo… Você? Onde é que você entra nessa história? Por acaso você trabalha na Microsoft e ajuda a criar essas coisas?❓❓
Opa, opa, opa… Um SGBD é um mundo complexo! Um SGBD sozinho é capaz de fazer a mesma coisa que um filhote, recém-nascido, de gibião míope de um olho só com encefalia renal absoluta.
❓❓❓o_Oo_Oo_O😮😮😮😐😐😐😕😕😕 Hein!!!??? o_O ? Filhote? Gibião? O que é Gibião? Míope ainda? …. ???? Ops! Rs. Entendi. Você quis dizer que um SGBD sozinho é nada….🙄🙄🙄
Exato! É necessário a mente humana. O SGBD é um programa/software complexo e precisa ser monitorado e configurado. Quem cuida do SGBD irá definir o modo se como ele comportará.
Imagine que o SGBD seja um carro bem moderno capaz de fazer muitas coisas. Ainda que seja tudo, o carro precisa de um motorista. O motorista deverá cuidá-lo, levá-lo na revisão, colocar gasolina, checar pneus, óleo, água, motor, etc., a fim de que garanta que o mesmo cumpra seu objetivo e evite problemas inesperados.
Assim é com o SGBD. E no nosso caso, o motorista é o Administrador de Banco de Dados! (O correto seria Administrador de SGBD). Também conhecido como Database Administrator, ou DBA, ele é um profissional que irá se dedicar exclusivamente ao SGBD. Instalação (pois é um programa de computador e precisa ser instalado um dia), manuntenção, monitoramento, etc., serão tarefas de um DBA.
Por existirem vários SGBDs com particularidades diferentes, o DBA precisa estudar e conhecer os detalhes de um específico, pois como já mencionei, é um mundo muito complexo. SGBDs são programas de computador muito avançados, pois envolvem vários conceitos e recursos computacionais porque gerenciam dados e na maioria dos casos, dados em grandes quantidades. Noções de álgebra relacional, estatísticas matemáticas, teoria de conjuntos e até probabilidade fazem parte dos “skills” de um DBA, além de conhecimento técnico tipo redes, sistemas operacionais, segurança, classificação de dados, etc… São muitas coisas e fogem totalmente do escopo desse post… Sentiu o drama!?
😎Uau … Ser um DBA parece ser bem interessante… Mas e aí, uma coisa que ainda não ficou claro: como os outros programas conseguem usar um SGBD para guardar os dados?😕
Bom é meio difícil explicar isso sem entrar em um pouco de detalhe técnico… De forma bem resumida e grosseira: os programas, sites, aplicativos, etc., enviam comandos ao SGBD, e este faz o trabalho de ler/gravar e devolver os resultados para o programa que solicitou, e então, com a bola no programa novamente, ele pega os dados retornados pelo SGBD e continua trabalhando… É isso mesmo que você está pensando: Sabe lá no caixa eletrônico? Muita coisa acontece enquanto aquela telinha “Aguarde…” fica tomando sua paciência… Sabe quando você dá um curtida em algo no facebook? Então naquele instante sua curtida já foi registrada no banco de dados deles… É amigo, a parada é rápida!
Se há um problema no SGBD, você vai perceber os efeitos na hora: Os sistemas podem começar a ficar lento, apresentar mensagens de falhas, etc. Não quer dizer que toda vez que aconteça algum problema no programa que esteja usando, a culpa é SGBD(e pode acreditar, na maioria das vezes não será)… Mas se a coisa não estiver direita lá, você vai ser prejudicado diretamente!
Novamente, grosseiramente falando, um SGBD é nada mais do que um programa de computador que cuida de ler e gravar os dados em disco, à medida que outros programas (softwares de caixas eletrônicos, aplicativos de celular, sites, etc) solicitam.
Rodrigo, e porque mesmo os programas solicitam isso?😕😕
Para guardar nossos dados! Os programas obtém as informações que passamos a eles e se encarregam de entregar ao SGBD para que o mesmo guarde em um banco de dados. Tudo isso depende da natureza do programa… Do próposito de um sistema, aplicativo, etc. Há inúmeros programas que não precisam de um banco de dados pois não necessitam guardar nenhum informação… Somente a memória do computador já é suficiente… (paremos por aqui, ou senão essa conversa vai ficar ganhar outros rumos…)
Bem… lógico que você precisa instalar esse SGBD em um computador que tenha acesso aos discos para guardar os dados. À este computadores damos o nome de “servidor” ou pra ser mais específico: “servidores de banco de dados”. E geralmente são computadores mais potentes do que os que estamos acostumados.
Os SGBDs estão a todo momento lendo e escrevendo os nossos dados nos discos que são disponibilizados para o servidor onde estão instalados. Se o SGBD não consegue escrever o dado no disco, então ele avisa o programa que solicitou a operação e o programa se encarrega de tratar essa situação: geralmente ele vai tentar novamente ou vai exibir uma mensagem na tela pra você, algo do tipo “Não foi possível realizar a operação. Tente novamente”.
Tá Rodrigo, mas como os benditos programas se comunicam com o SGBD?❓❓
Os SGBDs são metidos e exibidos: Eles falam uma língua própria. Um programa precisa de um banco de dados para guardar os dados? Vai precisar falar a língua do SGBD…
:/:/Rodrigo e que língua é essa? Como assim falar? Ele fala?❓❓
O SGBD não fala igual a nós seres humanos e também não é necessário nenhum comando de voz se é isso que você pensou… O que eu quis dizer é que um programa só consegue ler ou gravar algum dado em um banco de dados gerenciado por um SGBD se ele enviar comandos específicos para ele. Os desenvolvedores/programadores de um determinado programa precisam entender e saber esses comandos, ou linguagem, como chamamos no mundo de programação de computadores.
Esses comandos são chamados de SQL (repita: éssi-quê-éli.). O SQL é o idioma dos SGBDs. Tanto o DBA quanto os programas que usam o SGBD precisam ter conhecimentos de SQL pois somente assim você consegue dizer ao SGBD o que ele precisa fazer pra você. Com o SQL você diz exatamente o que você quer o SGBD faça pra você: ler ou gravar dado e qual o dado.
Lembra do exemplo do caixa eletrônico? Então aquilo ali é um computador que está executando o programa para te ajudar a realizar as coisas na sua conta. Cada vez que você faz uma operação, este programa envia comandos SQL para o servidor de banco de dados (que fica em algum lugar do planeta e é extremamente protegido) e aguarda o SGBD responder. Esse geralmente é o tempo que você fica aguardando os resultados. É rápido isso né!? Imagina centenas, milhões, milhares de pessoas acessando o facebook no mesmo instante… O site do facebook está a todo momento utilizando um SGBD, e este está indo no banco de dados com as suas informações, posts, fotos, comentários, curtidas… Tudo isso fica guardado em um banco de dados que está sendo acessado indiretamente por você!
Boa parte dos programas apenas são criados para que capturem os dados que devem ser fornecidos pelo usuário (eu, você, seu pai, sua mãe, seu irmão, seu cachorro, ops, seu cachorro não…). De posse dessas informações, o programa monta o código SQL que é enviado ao SGBD. Dentro do código SQL está a maioria dos dados que você forneceu (isso mesmo guerreiro(a)! juntamente com o código, e não me pergunte como isso acontece, pois o post vai ficar técnico demais! Assunto pra outro post ;-]). Então o programa se conecta com o servidor de banco de dados, envia os comandos, o SGBD que está nesse servidor recebe estes comandos, faz o que tem quer ser feito, e se for o caso, retorna as informações para o programa que solicitou. Tudo isso acontece em segundos, milisegundos, milésimos…
É tarefa do DBA, juntamente com as equipes de desenvolvimento, garantir que o banco de dados vai responder rapidamente às essas solicitações de outros programas. O DBA é o mediador. O SGBD faz o que o DBA pede. Se o DBA diz ao SGBD que determinado programa pode acessar um determinado banco, o SGBD assim o faz. Em outra palavras, o DBA é responsável por garantir também a segurança do banco de dados. Garantir a perfomance, dentre muitas outras responsabilidades que se dizem respeitos aos dados de outras pessoas. (Ou você está pensando que qualquer programa, qualquer pessoa, pode acessar os bancos de dados de um SGBD?). Muitas vezes, este trabalho é tão complexo e grande, que grandes empresas necessitam de equipes de DBAs, chegando a fazer até escalas de plantão para cuidar do banco de dados 24 horas por dia (meu amigo… Tenha certeza que a sua instituição financeira se preocupa com o bom funcionamento dos sistemas, e inclusive do banco de dados)…
Bem… neste ponto você já deve ter alguma noção do que é um banco de dados, um SGBD e um DBA. Em termos práticos, um DBA cuida de um SGBD e o SGBD cuida do banco de dados (sim, pode imaginar que o banco de dados são os dados que estão em arquivo lá no disco acessado pelo servidor…). Indiretamente o DBA é o responsável pelo banco de dados. A todo momentos dados estão sendo adicionados aos bancos de dados e quanto mais cresce maior a tendência a problemas (velocidade, segurança, armazenamento, etc.) e o DBA é a pessoa quem vai ajudar a garantir que esses fatores estejam em seu nível aceitável.
A maioria dos sistemas no mundo inteiro usam bancos de dados, pois sem eles não há como guardar a informação, e a maioria desses sistemas confiam o gerenciamento dos seus dados a um SGBD, pois é uma tarefa complexa, não precisamos reinventar a roda:
- O sistema de ponto eletrônico da sua empresa
- O sistema do supermercado onde realiza as suas compras
- O sistema bancários das instituições financeiras do Brasil
- Os sistema de RH
- O facebook, o instagram, o twitter, o globo.com, o Google, o whatsapp, etc.
- Os blogs (de onde você acha que este texto que você está lendo foi tirado?)
- O jogo online que você ou seu filho gosta de jogar contra os amigos
- O mercado livre, a Amazon, eBay, etc. (Os preços dos produtos, dados de entrega, de compra, etc. ficam seguramente guardados por um SGBD)
- Os endereços reconhecidos pelos correios (o próprio nome já dize “Base de dados dos correios” )
- Inúmeros outros sistemas
Bom, para resumir, vamos à algumas perguntas e respostas:
O que é um banco de dados?
Um banco de dados é um lugar onde você guarda ….? Dados! É um conceito apenas. Você pode ter um banco de dados em casa, aquele cardápio do seu restaurante preferido,a lista de convidados para a sua festa, a agenda telefônica do seu celular, etc….
Há uma semelhança: Em todas esses casos, algum dado está sendo guardado em algum lugar. A diferença é o meio onde esses dados estão sendo guardados. No caso da lista de convidados e do cardápio você pode encontrar em uma folha de papel impressa ou escrito a mão mesmo (apesar de restaurantes mais modernos oferecer um cardápio eletrônico… E advinha onde os dados desse cardápio estão guardados!?). No caso do celular os dados ficam guardados na memória interna do seu celular, ou no chip, ou no cartão de memória, que são lugares onde dispositivos eletrônicos conseguem armazenar algo.
💡Então uma impressora pode ser um banco de dados?❓
Talvez, para você, ser humano infeliz! Mas para um programa de computador não seria um boa idéia… Como o programa conseguiria recuperar esses dados de volta? Scanner? Pois é, além de ser um processo extremamente lento, quem faria o trabalho seria outro dispositivo, e não a impressora.
E no caso de ser para seu uso mesmo, você, ser humano, o banco de dados seria os papéis onde o dado seria impresso… A impressora seria mais um SGBD, e você seria o programa solicitando que os dados fossem gravados lá… Então esqueça essa idéia maluca… E esqueça esse exemplo!
Como é um banco de dados no mundo da computação?
Quando vamos para o mundo de computadores, um banco de dados é nada mais nada menos do que dados sendo “salvos” ou “lidos” em uma memória do computador. Igual quando você digita um documento e depois salva no disco, ou no pen drive, por exemplo, um banco de dados também é assim.
Um banco de dados pode ser os dados de arquivo no disco rígido (HD) acessado por computador em que um programa está constantemente lendo e gravando eles. É necessário um programa específico que fique cuidando desta tarefa pois há também outras questões: segurança dos dados, velocidade de acesso, controle de acesso simultânetos, etc.
Que programa é responsável por um banco de dados?
Um banco de dados é gerenciado por um programa específico para isso. Este programa é chamado de SGBD (Software Gerenciador de Banco de Dados). Ele é igual um programa de computador qualquer, só que construído exclusivamente para guardar e ler dados que outros programas ou sistemas necessitam.
Como o SGBD é um programa de computador, é preciso que exista alguém que manipule esse programa. Apesar de conseguir fazer boa parte do trabalho sozinho, o SGBD só faz o que lhe foi programado, e é alguém precisa dar manuntenção e estar monitorando o mesmo para checar se tudo está ok. Essa pessoa é o Administrador de Banco de Dados (DBA, do inglês: Database Administrator).
Para ser um DBA, o profissional deve entender de como um determinado SGBD funciona, incluindo sua arquitetura, para reagir e evitar problemas, além de planejar configurações e ações que irão tornar os dados guardados pelo SGBD mais seguros e rápidos de serem gravados e acessados.
Qual a diferença entre o SGBD e o banco de dados?
O SGBD cuida de um bancos de dados. Ele é um programa de computador responsável por ler e gravar os dados em resposta às solicitações de outros programas (por exemplo: sites, aplicativos, etc.). O SGBD está constatemente lendo e gravando os dados em em arquivos, por ele mesmo criado. Os programas que desejam utilizar um banco de dados não precisam nem mesmo estar instalados junto com o SGBD… Só precisam conseguir se comunicar com eles.
Os outros programas/sistemas não necessitam saber como isso é feito. Basta que eles enviem comandos ao SGBD solicitando o que dejesa. Quando você utiliza algum sistema de computador que usa banco de dados, está acessando indiretamente o banco de dados por meio deste sistema. O fluxo é:
Você (Inocente!) -> Sistema -> SGDB -> dados
Quem cria o SGBD?
Não existe apenas 1 SGBD. Várias empresas dedicam equipes (e grandes) para construir um. Microsoft, IBM e Oracle são exemplos de fabricantes dos SGBDs mais populares do mercado.
Essas empresas dedicam profissionais para desenvolvedorem um SGBD, assim como qualquer outro software (tipo o Windows, o Hotmail, o Facebook, etc.) e estão constantemente oferecendo atualizações e melhorando as características, além de corrigir os problemas. Os SGBDs são programas de computadores complexos, que envolvem muitas técnicas avançadas. Não é qualquer grupo que consegue desenvolver sistemas como este. É preciso de gente experiente, pois irão desenvolver um software que irá atender a outros programas de computador do mundo inteiro, além de manipularem dados de outras pessoas.
Quem escolhe qual SGBD um determinado programa ou site irá usar?
Isso vai depender do responsável por um sistema. Ele é quem vai decidir, de acordo com preços e recursos necessários, qual escolher. Existem SGBDs de graça, porém os pagos oferecem mais recursos importantes para os sistema mais críticos. (Pode apostar que o sistema bancário da sua instituição financeira é muito mais crítico do que o programa da padaria da esquina).
Em boa parte dos casos, os sistemas que usamos hoje estão utilizando mais de um SGBD, devido a um série de fatores e decisões que são feitas pelas equipes que participam na construção destes sistemas. Tudo isso é transparente para você, usuários finais dos sistemas. O que importa é que o sistemas cumpra com o seu trabalho levando e trazendo suas informações com velocidade e segurança.
Comos os programas conversam com os SGBDS?
Os SGBD são construídos de forma que eles respondam a comandos chamados SQL. O programador de outros sistemas deve estudar e conhecer este comandos para que consiga integrar seu sistema com o SGBD e permitir que os dados sejam lidos ou gravados em um banco de dados.
Se o SGBD é um programa, onde ele fica instalado? E quem instala?
Os SGBD fica em um computador designado para receber este tipo de programa. Este servidor deverá ter acesso a discos onde os dados serão lidos e gravados por ele. Este tipo computador damos o nome de “servidor de banco de dados” pois ele irá servir para ler e gravar dados em bancos de dados, e isso será feito pelo SGBD.
É tarefa do DBA instalar o SGBD. Pois como ele é o profissional que conhece profundamente o produto, então poderá fazer os ajustes e configurações no momento da instalação que poderão melhorar o desempenho e segurança do SGBD.
Um SGBD, já que ele é um programa de computador, precisa de outro SGBD para guardar dados também?
Não é preciso. Pois o SGBD é a ponta final de um sistema inteiro. Ele é quem se preocupa em guardar os dados em algum lugar.
De forma bem grosseira, podemos dizer que um SGBD não depende de nenhum outro programa para guardar dados, porém outros programas dependem de um SGBD para guardar os dados. Eles apenas dependem do servidor com processadores e memória onde estão instalados e de um local para armazenar os dados (como discos, por exemplo). Na maioria dos casos, acesso a uma rede de computadores será necessário, pois geralmente os outros programas estão instalados em outros computadores.
Então é isso pessoal. Espero que esse assunto tenha esclarecido algo. De novo, aos mais experientes no assunto, eu não quis entrar em muitos detalhes técnicos. Muitos exemplos e conceitos foram utilizados para tentar ser o mais didático possível, assumindo que a maioria dos leitores não irão conhecer do assunto.
Perdoe os erros de português, e utilize os comentários para deixar críticas, dúvidas, sugestões, etc.
Muito obrigado! Até a próxima.
Rodrigo Ribeiro Gomes
[ ]’s
DBA Team Leader na Power Tuning