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.