O que é um "banco de dados"?

14

Houve muita discussão nesta pergunta: Quais tecnologias de banco de dados os grandes mecanismos de pesquisa usam?

Tanta discussão que me deixou confusa. Então ... o que é um banco de dados, afinal? Apenas os bancos de dados relacionais são "bancos de dados"? Os bancos de dados orientados a objetos são "bancos de dados"? Existe algum sistema que me permita armazenar e recuperar informações (como um mapa, lista etc.) em um banco de dados?

Ou um banco de dados precisa armazenar / recuperar informações e também possui alguns recursos de administração, como Usuários e Privilégios? O dBase III mais um banco de dados, pois não era realmente relacional?

woliveirajr
fonte
@ypercube: "Sua capacidade de abrir e manipular simultaneamente vários arquivos contendo dados relacionados levou a Ashton-Tate a rotular o dBase de" banco de dados relacional ", embora não atendesse aos critérios definidos pelo modelo relacional do Dr. Edgar F. Codd; ser chamado de linguagem de desenvolvimento de aplicativos e sistema integrado de gerenciamento de banco de dados de navegação que é influenciado por conceitos relacionais ". de wikipedia
woliveirajr
3
Não acredito que um banco de dados precise ser "administrado" para ser um banco de dados.
Aaron Bertrand

Respostas:

9

Essa é uma ótima pergunta e um conjunto de ótimas respostas. Acho que uma coisa que falta na discussão é uma resposta que investiga a distinção entre um banco de dados e um sistema de gerenciamento de banco de dados (DBMS). Gosto da definição de banco de dados que o Shark forneceu no dictionary.com. Eu acho que realmente mostra a necessidade da distinção entre o banco de dados e o DBMS. O banco de dados é "uma coleção abrangente de dados relacionados organizados para acesso conveniente". A segunda parte dessa definição, que diz "geralmente em um computador" é onde está a distinção. Se estiver armazenado em um computador, poderá ou não ser armazenado em um DBMS. Pode ser armazenado em um sistema de arquivos do SO. Pode ser armazenado em um sistema de arquivos proprietário. Portanto, eu concordo com FrustratedWithFormsDesigner que um catálogo de cartões é um "banco de dados" (bem, talvez - é abrangente e relacionado? Mais sobre isso mais tarde). Por acaso é armazenado em um arquivo. No mundo de hoje, a maioria das "coleções abrangentes de dados relacionados organizadas para acesso convenientesão armazenados em um computador, então não concordo com Shark que é uma pena que o Dictionary.com tenha adicionado essa parte. Eu acho que é absolutamente correto - como uma definição de "banco de dados".

Então, como definimos DBMS? Voltei ao dictionary.com e achei o seguinte :

"Um conjunto de programas que geralmente gerencia grandes conjuntos estruturados de dados persistentes, oferecendo facilidades de consulta ad hoc para muitos usuários. Eles são amplamente utilizados em aplicativos de negócios".

A definição continua e é bastante longa. Ele descreve os recursos comuns fornecidos por um DBMS, como segurança, integridade de dados, gerenciamento de transações, controle de concorrência e, o mais importante - independência de dados. Um DBMS fornece uma visão externa dos dados abstraídos de como eles são fisicamente armazenados.

Usando essa definição, acho claro que um DBMS deve fornecer um modelo de dados , que é como os dados são organizados para apresentação ao usuário. Os três modelos comuns são hierárquicos (IMS), rede (IDMS) e relacionais (DB2, Oracle, SQL-Server, etc). Há também o modelo OO (OODBMS). Somente o modelo relacional hoje tem ampla aplicabilidade. Os outros modelos ainda estão em uso, mas apenas em situações de nicho. O DBMS também deve fornecer os outros recursos mencionados. Eu me referiria a eles coletivamente como recursos ou recursos de gerenciamento de dados.

Portanto, produtos de software que fornecem recursos de gerenciamento de dados são DBMS ', enquanto produtos que não os fornecem não são DBMS'. Os produtos NoSQL não são DBMS '. Isso não quer dizer que eles não sejam úteis, e nãodizer que eles não armazenam "bancos de dados". Eu gosto de pensar que o DBMS ', como diz a definição, resolve uma classe de problemas relacionados a aplicativos de negócios como contabilidade, folha de pagamento, cobrança, gerenciamento de relacionamento com clientes, vendas, etc. Os produtos NoSQL, embora não sejam o DBMS', são excelentes para resolver um problema. Uma classe de problemas que não estão relacionados aos aplicativos de negócios tradicionais, mas agora existem devido à enorme quantidade de armazenamento e tecnologia de computação de largura de banda hoje em dia. São aplicativos como pesquisa na Internet, leilão on-line, twitter e facebook. O DBMS não é um bom ajuste para resolver esses problemas, pois o DBMS contém recursos de gerenciamento de dados que, embora sejam uma necessidade absoluta para um aplicativo de negócios, não servem para resolver o armazenamento e a recuperação de Craig '. s listam anúncios ou feeds do twitter (normalmente, de qualquer maneira - isso é outra discussão para outra hora :-)). Esses problemas exigem expansão massiva e resposta extremamente rápida, e o DBMS, com seu recurso inchado, não é um bom ajuste.

Um profissional de dados precisa entender todas essas ferramentas para armazenar dados e que tipo de problemas eles são adequados para resolver, a fim de escolher a ferramenta certa para o trabalho, assim como um empreiteiro geral precisa saber qual de suas ferramentas de construção é A ferramenta certa para o trabalho. Nenhuma ferramenta é boa ou ruim por si só. É bom se for um bom ajuste para resolver um problema importante.

Concluirei observando duas outras distinções importantes na definição de banco de dados e DBMS que podem ser negligenciadas na discussão até agora. A definição de banco de dados inclui " coleta abrangente de dados relacionados ". A definição de DBMS inclui "gerenciar grandes estruturasd seria melhor usar o MS Access ou algum outro DBMS relacional. Portanto, talvez um catálogo de cartões não seja um banco de dados, apesar de abrangente (ele possui um registro de todos os livros da biblioteca), não está relacionado, pois possui apenas informações sobre livros, informações completas sobre autores, editores, etc.

Segundo, um DBMS se destaca em armazenar dados "estruturados". É inteiramente baseado em um esquema definido de elementos de dados discretos com tipos estruturados. Um produto NoSQL, digamos, um armazenamento de valores-chave desprovido de um esquema, é excelente ao armazenar dados não estruturados. Portanto, esse produto NoSQL não atende à definição de DBMS. Mas se o problema que você está tentando resolver é o armazenamento de dados não estruturados (algo que nem tentamos fazer quando o DBMS foi desenvolvido), e você não precisa de recursos de gerenciamento de dados independentes do aplicativo para o qual escreverá Para processar dados não estruturados, o produto NoSQL é perfeito para a ferramenta.

Espero que esta resposta agregue valor às outras ótimas respostas postadas aqui. Estou ansioso por quaisquer comentários e pontos de discussão que qualquer pessoa possa ter que nos ajude a ampliar nosso entendimento de bancos de dados e classes de tecnologia que resolvem problemas relacionados a dados.

Todd Everett
fonte
1
Bom post. Na lista de Craig, acho que há mais camadas que você deve considerar. O armazenamento e a recuperação não precisam ocorrer diretamente acima do DBMS. Você certamente poderia escalar dados armazenados no SQL Server, por exemplo, sem tornar o SQL Server diretamente responsável por responder às solicitações do usuário. Existem todos os tipos de soluções de cache da camada intermediária e de dados que podem ajudar um DBMS sem precisar substituí - lo . No meu trabalho imediatamente anterior, usei dezenas de instâncias do Express nos servidores da Web para reduzir a carga no SQL Server primário - pressionamentos frequentes em vez de puxados.
Aaron Bertrand
Obrigado Aaron. Minha falta de experiência com aplicativos fora do aplicativo de negócios tradicional mostra. Eu vi alguns posts, Brent Ozar, por exemplo, sobre soluções de cache de dados, mas nunca vi um em uso. Obrigado pelo seu exemplo da sua experiência anterior. Definitivamente vou adicionar esse conceito de camadas acima do DBMS para permitir a expansão sem perder os benefícios do DBMS na caixa de ferramentas!
Todd Everett
Portanto, o IMS DB é um DBMS, mas Cassandra não. Desculpe, mas respeitosamente discordo.
Michael Green
9

Vou citar o Dictionary.com , pois entendo isso como o significado do banco de dados:

uma coleção abrangente de dados relacionados organizados para acesso conveniente, geralmente em um computador.

Sob essa definição, você pode considerar um banco de dados desde um RDBMS completo (SQL Server, Oracle etc.) até um arquivo simples básico. Se ele armazena dados, tecnicamente pode ser considerado um banco de dados.

Agora, como a maioria das coisas em nosso mundo moderno, existe o significado aceito de um nome. E no caso do banco de dados , isso varia de pessoa para pessoa. Muitas pessoas pensam em um banco de dados apenas como uma entidade gerenciada por um sistema de dados.

Vale ressaltar o comentário de @ FrustratedWithFormsDesigner:

catálogos de cartões também contariam se você removesse o "... geralmente em um computador".

Eu concordo com essa afirmação e não acho necessariamente que um banco de dados precise morar em um "computador" ou em qualquer dispositivo eletrônico. Um catálogo de cartões é um exemplo perfeito de um banco de dados não computadorizado.

Thomas Stringer
fonte
8

Para mim, um banco de dados é algo que existe para armazenar e recuperar dados. Chamamos Access de banco de dados, mesmo que seja realmente apenas um front end bonito para uma coleção de arquivos. O Outlook (pelo menos no Mac) chama seu armazenamento de mensagens de banco de dados. Algumas pessoas até chamam o Excel de banco de dados (mas isso me faz bufar - então há uma linha em algum lugar).

Penso que a definição evoluiu ao longo do tempo, e comparar o dictionary.com, o wiki e os documentos de vários profissionais de bancos de dados ao longo dos últimos 30 anos, produzirá uma variedade de definições. E a definição continuará a evoluir também.

Se você está falando sobre algum tipo de fonte de dados que você ou seus aplicativos usam para armazenar ou recuperar dados, sejam eles relacionais ou não, não tenho problema em chamá-lo de banco de dados. Se for um arquivo de texto, você pode ficar com uma sobrancelha levantada, mas não sei se entendi a necessidade de identificar a definição de maneira tão finita que as pessoas se zangam com isso.

Algumas pessoas ficam bastante entusiasmadas, aparentemente, se você se aproximar de sugerir que o BigTable (ou NoSQL ou hadoop) é um "banco de dados" e afirma que chamá-lo como tal dará, especialmente para iniciantes, uma grande promessa de desempenho infinito, imortalidade e unicórnios. Considerando que geralmente você quer dizer apenas que é um local onde os dados são armazenados e recuperados, sem garantias sobre o que a implementação real faz, seja relacional ou não, ou se você pode produzir uma coisa dessas quando estiver entediado na tarde de domingo.

Admito que me encolho quando as pessoas falam sobre um banco de dados relacional e chamam linhas "registros" ou colunas "campos". Mas, embora isso me chateie um pouco, não fico com raiva ou saio do meu caminho para corrigi-las - qual é o sentido? Entendi o que eles queriam dizer, mesmo que não sejam 100% precisos.

Aaron Bertrand
fonte
5

Pode ser muito geral, apenas uma coleção de dados e estruturas. O sistema para gerenciar um banco de dados pode ser tão simples quanto um sistema de arquivos ou tão complexo quanto um sistema federado como o DNS.

Geralmente, no uso moderno, quando se diz banco de dados, implica-se o armazenamento de dados e as estruturas e um sistema de gerenciamento de banco de dados que o acompanha, e, porque muito trabalho teórico foi feito sobre as bases dos bancos de dados relacionais, esses ainda são os mais populares. que frequentemente quando se diz banco de dados, geralmente está implicando um banco de dados relacional.

Com o surgimento de bancos de dados NoSQL / não relacionais, o termo banco de dados voltou a ser mais geral e potencialmente mais ambíguo, já que um modelo compartilhado para entender os dados não pode ser assumido.

Antes da fundação da teoria relacional, a modelagem de dados em outros sistemas variava de sistema para sistema e não tinha princípios orientadores compartilhados como o modelo relacional - outros tipos de bancos de dados, como bancos de dados hierárquicos e bancos de dados de rede, foram usados.

Cade Roux
fonte
2

Trabalhei para a Ashton-Tate durante o desenvolvimento do dBASE Direct / 36 e dBASE IV, usando meu conhecimento do dBASE III Plus para codificar um pequeno programa para ajudar nos testes do dBASE Direct / 36 (interface para um Mini-computador IBM System / 36). Tivemos que fazer instruções binárias de carregamento e chamada nas tabelas SQL do System / 36, que exigiam digitar repetidamente as mesmas instruções 'load' e 'call' enquanto alterava os nomes de tabelas e nomes de campos no envio para obter os dados de cada registro ou grupo de vários registros, dependendo do escopo da consulta. O dBASE III Plus, uma linguagem de programação de banco de dados, permitiu-me criar 'dbldot.prg', que alterou o prompt de ponto único para um ponto duplo, conforme eu projetei para ser um indicador de que o sistema estava no modo de recuperação SQL, bem como o texto abaixo da linha de comando que dizia "

Naquela época, o dBASE era uma linguagem de programação de banco de dados, ou mais precisamente, uma linguagem de programa que permitia a manipulação de registros de dados. Um registro era um grupo de campos contendo dados para um item individual, como pessoas LAST_NAME, FIRST_NAME, ADDRESS, CITY, ST, ZIP, PLUS_FOUR, SSN etc. Essas estruturas foram posteriormente representadas em tabelas e organizadas em linhas e colunas, uma linha sendo um registro individual e uma coluna sendo os dados em uma série de registros para cada nome de campo. Dessa forma, um usuário pode facilmente classificar por nome de campo para classificar e agrupar registros por campos comuns específicos, como CITY, ST, ZIP, etc.

O idioma do dBASE permitiu ao usuário ou programador manipular dados, classificar, exibir tabelas, registros e executar cálculos (o Y2K estava distante, mas as datas tinham que ser convertidas em AAAAMMDD para classificar os dados MM-DD-AAAA, o que pode ser feito com DtoC e CtoD (Data para caractere, Caractere para data)). Sem o idioma do dBASE, os arquivos de dados seriam simplesmente uma série de registros (linhas) com campos comuns (colunas).

Banco de dados relacional - esse foi o termo usado para fazer referência cruzada a mais de um banco de dados (tabela) com outro que continha informações diferentes, mas continha um ou mais campos comuns. Por exemplo, um banco de dados intitulado "Endereços" contém "LNAME", "FNAME", "ENDEREÇO", "CIDADE", "ST", "ZIP", "SSN". Outro banco de dados intitulado "CHECKING" contém "ACCOUNT_NO", "ROUTING_NO", "CUSTLAST", "CUSTFIRST", "DOB", "SSNO" e "CUST_NO". Embora os nomes dos campos sejam diferentes, vários deles contêm as mesmas informações que podem ser vinculadas entre si para vincular os dados de um banco de dados aos do outro para, por exemplo, enviar extratos aos clientes do banco, usando os campos de nome e sobrenome e números SS para relacionar os dados, puxando o endereço do cliente de um banco de dados e as informações da conta a serem inseridas no extrato do outro. Em uma escala maior, uma função de mala direta pode ocorrer para executar essas ações em cada cliente individual no banco de dados ADDRESS, puxando as informações da conta relacionada de cada cliente, personalizando o extrato, imprimindo e endereçando cada um antes de passar para o próximo registro ou cliente no banco de dados.

Portanto, algo como o MS ACCESS poderia ser mais um DBMS, mas em um nível básico, o dBASE era uma linguagem para criar interfaces de usuário front-end e conduzir toda a manipulação de dados entre bancos de dados para criar uma relação entre eles e retornar os dados resultantes para somos meros humanos para usar.

Muita coisa mudou desde então, mas a fundação continua a mesma. Os dados ainda estão contidos nos registros que contêm uma série de campos de vários tipos de dados e devem ser cruzados e mesclados com os de outros bancos de dados por meio de um ou mais pontos de dados comuns, permitindo o uso de cartões de crédito, a criação de contas na Web usando nosso Google, Facebook, Twitter IDs, acompanhe nosso histórico de compras e assim por diante. Nossas vidas são apenas uma série de muitos bancos de dados relacionais sobrepostos, que percorremos todos os dias sem pensar em todos os bits e bytes que estão interagindo para nos trazer os prazeres e a evolução contínua da facilidade em nossas vidas hoje.

Pelo menos é assim que sempre entendi esses muitos anos de testes de software e hardware que começaram com o dBASE II em 1984.

HoundCat
fonte
2

O artigo seminal de Codd foi intitulado Um modelo relacional de dados para grandes bancos de dados compartilhados . O que ele chamou de "banco de dados" chamaríamos de banco de dados.

Eu gosto das imagens dele, no entanto. Implica um local onde os dados podem ser colocados, sabendo que serão mantidos em segurança, devidamente contabilizados e devolvidos apenas àqueles que demonstrarem ter autoridade para acessá-los. Se nossa agência for assaltada, temos a garantia de que a empresa bancária possui um backup adequado para garantir que nossos preciosos recursos não sejam perdidos irrevogavelmente.

Michael Green
fonte
1

Dos Fundamentos do Design de Banco de Dados, 7a Ed. (página 5)

Um banco de dados é uma coleção de dados relacionados.

Eles continuam dizendo que o uso comum é mais restrito,

Um banco de dados tem as seguintes propriedades implícitas:

  • Um banco de dados representa algum aspecto do mundo real, às vezes chamado de mini-mundo ou universo do discurso (UoD). As alterações no mini-mundo são refletidas no banco de dados.
  • Um banco de dados é uma coleta de dados logicamente coerente com algum significado inerente. Uma variedade aleatória de dados não pode ser corretamente referida como banco de dados.
  • Um banco de dados é projetado, construído e preenchido com dados para uma finalidade específica. Possui um grupo de usuários pretendido e alguns aplicativos pré-concebidos nos quais esses usuários estão interessados.

Em nenhuma definição, um banco de dados é explicitamente "relacional" em qualquer sentido; no entanto, frequentemente é assumido porque o setor está saturado com DBAs de um tipo específico e, sem dúvida, o software DBMS mais avançado é relacional. Do dicionário do banco de dados relacional

Estritamente, um valor de banco de dados, qv; mais comumente usado, neste dicionário em particular, para se referir ao que seria mais precisamente chamado de variável de banco de dados, qv Assumimos ao longo deste dicionário que os bancos de dados são sempre relacionais, exceto declarações explícitas. Nota: O termo banco de dados também é usado em contextos não relacionais para significar uma variedade de outras coisas: por exemplo, uma coleção de dados armazenados fisicamente. Também é usado, com muita frequência, para significar um DBMS, mas esse uso específico é fortemente reprovado. (Se chamamos o DBMS de banco de dados, como chamamos o banco de dados?)

Esse último ponto é um pouco importante e também gosto da distinção entre o DBMS / RDBMS e o próprio banco de dados.

Evan Carroll
fonte