A diferença essencial entre as duas teconologia é que uma é baseada em esquema (Relacional) e a outra não (Não relacional).
Para trabalhar com um banco SQL (Relacional) a primeira coisa que voce precisa fazer é projetar a estrutura do banco, isto é, voce não consegue inserir um dado se não tiver previamente definido os "esquemas" das tabelas, enquanto que na tecnologia NoSQL (Não relacional). isto não é necessário.
Vamos a um exemplo: Vamos supor que voce quisesse guardar nomes e telefones de clientes em um banco de dados.
Em um banco relacional, a primeira coisa que precisariamos fazer seria definir o esquema das tabelas no banco (definir sua estrutura), como sabemos que um cliente pode ter mais de um telefone e que cada um pode ter quantidades diferentes de números de telefones, o ideal seria definirmos 2 tabelas: Uma pra o registro do codigo e o nome do cliente e outra para os registros de seus telefones:
Tabela Cliente (Tabcli):
id, Integer
Nome, Character, 50
Tabela Telefones (Tabtel):
id_cliente, integer
Fone, Character, 15
Dessa forma cada cliente terá apenas um registro na tabela tabcli e, no mínimo um, ou quantos forem os números que ele possui na tabela Tabtel. A ligação (ou a relação, do termo "relacional") entre uma tabela e outra seria feita através dos campos Tablci.id -> Tabetel.id_cliente, dessa forma para apresentar as informações de um cliente seria preciso seleciona-lo na tabela Tabcli, e filtar todos os registros na Tabtel cujo id_cliente coresspondesse ao id da Tabcli.
Agora vejamos como o mesmo exemplo seria registrado em um banco no-sql como por exemplo o mongodb, em primeiro lugar voce não precisaria definir um esquema prévio para guardar as informaçẽos, voce precisaria somente fazer diretamente o registro em um formato que o banco "entenda", no caso do mongodb, json. No mongo, o correspondente a tabelas é chamado de collections, então bastaria:
db.clientes.save( {_id: 1, fones: ["123-4567", "456-7899"]})
Para acessar, basta localizar o _id do cliente e voce já terá acesso a todas as informações daquele cliente, sem a necessidade de acessar outra entidade do banco e/ou criação de filtros, etc.
A explanação acima é bem resumida, há inúmeros outros detalhes tanto no lado relacional quanto no não relacional, no primeiro por exemplo há vários elementos para garantir a integridade e a não redundancia dos dados, que não foram mencionados.
Uma outra caracterisca central dos bancos relacionais é uso exclusivo (Veja o tópico "É o fim do SQL?) da linguagem SQL para acesso aos dados enquanto que nos não relacionais isso não se aplica, porém é preciso atentar para o fato de que um banco não relacional não abomina o SQL, aliás o termo NoSQL pode induzir ao erro de supor que seja Não SQL, quando na verdade é "Not Only Structured Query Language"
Vantagens dos bancos não relacionais:
A vantagem número um dos bancos não relacionais é a escalabilidade, claro que o esquema rigido dos bancos relacionais torna dificil, por exemplo, aumentar um nó em um cluster de banco de dados, outra vantagem é a flexibilidade da estruturação que além de tornar a escalabilidade mais fácil facilita a inserção e acesso aos dados. Outra caracterisca que talvez possa ser vista como vantagem é a manipulação de dados por APIs orientadas a objetos enquanto no modelo relacional somente via SQL. Pode-se citar ainda, como desvantagem, a relativa imaturidade do Nosql.
Vantagens dos bancos Relacionais:
Enquanto que no modelo não relacional, a consistencia pode ser considerada fraca, no modelo relacional há uma forte consistencia de dados, um dos preços para isso é a estrutura menos flexivel. Outra vantagem é a confiabilididade, modelos relacionais suportam a propriedade ACID (Atomicidade, Consistência, Isolamento e Durabilidade), Outra vantagem do SQL é a padronização e normalização. Finalmente pode-se citar como vantagem a maturidade do SQL.
Responder...
A diferença essencial entre as duas teconologia é que uma é baseada em esquema (Relacional) e a outra não (Não relacional).
Para trabalhar com um banco SQL (Relacional) a primeira coisa que voce precisa fazer é projetar a estrutura do banco, isto é, voce não consegue inserir um dado se não tiver previamente definido os "esquemas" das tabelas, enquanto que na tecnologia NoSQL (Não relacional). isto não é necessário.
Vamos a um exemplo: Vamos supor que voce quisesse guardar nomes e telefones de clientes em um banco de dados.
Em um banco relacional, a primeira coisa que precisariamos fazer seria definir o esquema das tabelas no banco (definir sua estrutura), como sabemos que um cliente pode ter mais de um telefone e que cada um pode ter quantidades diferentes de números de telefones, o ideal seria definirmos 2 tabelas: Uma pra o registro do codigo e o nome do cliente e outra para os registros de seus telefones:
Tabela Cliente (Tabcli):
id, Integer
Nome, Character, 50
Tabela Telefones (Tabtel):
id_cliente, integer
Fone, Character, 15
Bancos de dados relacionais como MySQL, PostgreSQL e SQLite3 representam e armazenam dados em tabelas e linhas. Eles são baseados em um ramo da teoria dos conjuntos algébricos conhecido como álgebra relacional.
Enquanto isso, bancos de dados não relacionais, como o MongoDB, representam dados em coleções de documentos JSON. O utilitário de importação Mongo pode importar formatos de arquivo JSON, CSV e TSV. Os alvos de consulta de dados do Mongo são tecnicamente representados como BSON (binary JASON).
Para escrever sua resposta aqui, entre ou crie uma conta.
Administração de Banco de Dados
Bancos de Dados para Redes
•UFS
Compartilhar