O que é um exemplo de um banco de dados não-relacional? Onde / como eles são usados?

StackOverflow https://stackoverflow.com/questions/202819

  •  03-07-2019
  •  | 
  •  

Pergunta

Tenho vindo a trabalhar com bancos de dados relacionais por algum tempo, mas só recentemente me ocorreu que deve haver outros tipos de bancos de dados que são não -relational.

Quais são alguns exemplos de bancos de dados não relacionais, e onde / como eles são usados ??no mundo real? Por que você optar por usar um banco de dados não-relacional sobre bancos de dados relacionais?

Editar : Duas outras questões semelhantes foram mencionados nas respostas:

Foi útil?

Solução

  • arquivo Plano
    • CSV ou outros dados delimitados
    • planilhas
    • / etc / passwd
    • arquivos de correio mbox
  • Hierarchical
    • Registro do Windows
    • Subversion usando o sistema de arquivos, FSFS, em vez de Berkley DB

Outras dicas

Um reconhecidamente obscuro, mas alternativa interessante para os tipos de bancos de dados mencionado aqui é o banco de dados associativa rel, como Sentenças, de LazySoft Tecnologia . Há uma versão pessoal gratuita que você pode baixar e experimentar em seu próprio país. O Enterprise Edition também é gratuito, mas requer um pedido para a empresa.

Essencialmente, um banco de dados associativa permite armazenar informações da mesma maneira como nossos cérebros fazer: como coisas e associações entre essas coisas. O nome "Sentences" vem da forma como esta informação pode ser representada em um sujeito-verbo-objeto sintaxe:

  • Tom é irmão Laura
  • San Francisco está localizado no Califórnia
  • Mike tem um limite de crédito de $ 10.000

A frase pode ser o sujeito ou objeto de uma outra frase:

  • (Bus 570 chega 8:15 am) em Domingos
  • Mary diz (a torta de foi cozido por William)

Então, tudo pode ser resumido a entidades e associações .

Há, é claro, muito mais para Sentenças do que o que pode ser expresso aqui. Eu recomendo que você levar algum tempo para ler mais sobre isso em um papel branco de LazySoft.

"O modelo associativo de dados" é um livro disponível em formato PDF por Simon Williams, um dos criadores de frases.

Um banco de dados de documentos não-relacional orientado temos sido olhando é Apache CouchDB .

Apache CouchDB é um distribuída, tolerante a falhas e banco de dados orientado a documentos sem esquema acessível através de um RESTful HTTP / JSON API. Entre outras características, proporciona replicação robusta, incremental com detecção de conflitos bi-direcional e resolução, e é queryable e indexável usando um motor de visão orientada a mesa com JavaScript atuando como linguagem de definição de exibição padrão.

Nosso interesse era no fornecimento de um acesso distribuído preferências do usuário armazenar que seria imune a mudanças de forma a que pudéssemos serializar objetos de preferências de Java e acesso aqueles com a mesma facilidade com Javascript de um aplicativo cliente baseado XULRunner.

Qualquer banco de dados que afirma ser um "banco de dados estilo Berkley" ou "Key / Value" banco de dados não é relacional.

Estas bases de dados são geralmente baseados off algoritmos de hash complexos e fornecer um muito rápido lookup O (1) baseado fora uma chave, mas deixar qualquer forma de bondade relacional para usuário final.

Por exemplo, em um banco de dados relacional, você iria normalizar sua estrutura e juntar muitas mesas em conjunto para criar um único conjunto de resultados.

Em um banco de dados chave / valor, você desnormalizar, tanto quanto possível e, em seguida, usar uma chave única para pesquisa de dados.

Se você precisa puxar os dados de duas fontes, você tem que juntar o conjunto resultante em conjunto com a mão.

Todos os bancos de dados foram originalmente não-relacional, foi apenas com a chegada do DB2 e Oracle, em meados de 1980 que se tornou comum. Antes que a maioria dos bancos de dados onde ou arquivos simples ou hierárquica.

Arquivos simples são inerentemente chato, mas banco de dados hierárquico são muito menos, em particular no DB2 foi realmente implementado em cima de uma implementação hierárquica (ou seja, VSAM), em primeira instância. VSAM é que eu ainda acredito em torno de sistemas de mainframe e é de alguma importância considerável.

DB / 1 (tão obscuro agora eu não posso mesmo encontrar um link wikipedia) era de banco de dados no horário nobre predecessor da IBM para DB2 (daí o nome). Este foi hierárquica - basicamente você tinha um arquivo que consistia em qualquer número ou registros de 'root', geralmente directamente acessíveis por uma chave. Cada registro de raiz poderia, então, ter qualquer número de registros filho fora dele, cada qual por sua vez poderia ter seu próprios filhos. O efeito líquido é um arquivo de índice ou registros raiz com cada raiz sendo o topo de uma potencial árvore-como estrutura. Acessando os registros filho poderia ser complicado - havia limitações de acesso directo de modo geral você acabou atravessando a árvore que olha para o registro que você precisava. A 'banco de dados' pode ter qualquer número desses arquivos nele, geralmente relacionados por chaves.

Isto teve grandes desvantagens - não menos que realmente fazendo nada exigiu um programa completo escrito - basicamente o equivalente a um dia de trabalho para o que agora pode fazer em SQL em poucos minutos. No entanto ele realmente fez pontuação na velocidade de execução, naqueles dias um mainframe tinha sobre o poder de processamento do seu iPhone (embora otimizado para dados de I / O) e consultas DB2 pobres poderia matar uma instalação multi-milionário morto. Isso nunca foi um problema com DB / 1 e em um mundo onde os programadores eram menos caro do que o tempo de CPU que fazia sentido.

Google App Engine Datastore :

O armazenamento de dados do App Engine não é um banco de dados relacional. Enquanto a interface de armazenamento de dados tem muitos dos mesmos recursos de bancos de dados tradicionais, características únicas do armazenamento de dados implica uma maneira diferente de concepção e gestão de dados para aproveitar a capacidade de dimensionar automaticamente.

O banco de dados histórico PI da OSIsoft é não-relacional. Ele só é feito para arquivar dados timestamped. É muito utilizada pela indústria, especialmente porque o banco de dados back-end para todos aqueles 'dashboards'.

Não há necessidade de ser relacional nele, já que não há nenhum junta-se.

Outros dois tipos de bancos de dados que não vêm-se ainda:

  1. Os repositórios de conteúdo são bancos de dados projetados para o conteúdo (ou seja, arquivos, documentos, imagens, etc). Eles normalmente têm additioan construções, como uma forma hierárquica para o conteúdo de navegação, busca, transformação entre formatos diferentes, controle de versão, e muitas outras coisas. Exemplos - Alfresco, Documentum, lebre, dia, OpenText, muitos outros fornecedores de ECM.

  2. Directories, ou seja, Active Directory ou diretórios LDAP. São bancos de dados projetados para baixo escrita / alta cenários de leitura e altamente distribuída entre grandes distâncias geográficas / conexões de alta latência. Embora usado principalmente para autenticação / autorização, eles não tem que ser se o seu caso de uso corresponde aos requisitos.

Bases de dados dimensionais são grandes exemplos de bancos de dados não relacionais. Eles são muito usados ??para 'Business Dashboards' / 'Business Intelligence' para KPIs e outros tipos de dados agregados ou estatísticos. Eles geralmente são preenchidos a partir de bancos de dados relacionais e podem oferecer melhor desempenho em determinadas situações.

http://en.wikipedia.org/wiki/Dimensional_database

  1. bancos de dados XML por exemplo xindice
  2. bancos de dados de objetos por exemplo db4o

Esteja ciente de que o conceito de bancos de dados relacionais é altamente controversa. Purists tais como C. J. Data argumentam que muitos bancos de dados de uso comum (tais como Oracle e SQL Server) não cumprem suficientemente com o modelo relacional a ser denominado 'relacional'.

bancos de dados não relacionais só não atender aos requisitos de Codd. InterSystems Caché costuras uma re-gravação / re-design total de base de dados do antigo sistema operacional Seleção. Do pouco que eu li de Caché parece ser uma reformulação bem feito. Ele permite que os programas .net para acessar o banco de dados apenas como ela seria SQL. run do Caché é os programas OS picareta sem exigir quaisquer alterações. Ao importar os arquivos de picareta em Caché você ainda pode executar seus aplicativos de tela verde velhos com ele, mas também escrever novos programas usando .net para que possa migrar para aplicativos do Windows sem abandonar os anos de dados de projeto que você já investiu. Aqui está algumas informações sobre o modelo DB Seleção. Um banco de dados picareta usa registros de comprimento totalmente variáveis ??e campos. Tudo tabela são introduzidos por uma única chave original e são acessíveis sem ler um índice. Picareta projetou o sistema para usar um algoritmo de hash que lê o item do disco em geral no 1º leitura física (assumindo a manutenção do sistema foi realizado corretamente). Campos em escolher são não tipificado. Todos os dados são armazenados como corda e Fundição é até o programador. Nulos são armazenados como uma cadeia vazia, assim, um nulo não ocupar espaço em disco como faz em SQL. Não há necessidade de chaves estrangeiras. No ‘mundo relacional’ o DBA tem que criar e tabela Order Header, e uma tabela de item da ordem Line. Na “Escolha Model’ há uma única tabela. Um exemplo seria, ‘Ordem Data’ é um campo que iria armazenar um número de dias desde ‘13 dez 1967’ (os dados Escolha OS foi ligado pela primeira vez). Escolha os programadores não têm problemas Y2K. A segunda coluna seria número do cliente. A grande diferença é quando você chegar à Coluna número do produto, seria ‘Multi-Valued’ (o Codd Não-Conformidade). Em outras palavras, o banco de dados pode lidar com 1-32000 produto # s nessa coluna. Outras colunas como quantidade encomendada seria em relação de domínio / dependente com o número do produto e também seria multi-valorizados. Quando você chegar à quantidade embarcada, Pick iria para uma terceira dimensão e têm campo Sub-Multi-valorizados. Você teria uma coluna de número de expedição, e seria com valores múltiplos, item de linha e Sub-Multi-Valued contendo a quantidade de embarque para essa linha para esse número de expedição. Não existem associações internas necessárias. Todos os dados para que a ordem é armazenado em uma tabela e em um único registro. Há órfãos linhas sempre! Em segundo lugar a definição de dados é um pouco diferente. Nossos dicionários podem conter definições de dados que não é nesta tabela ou está sendo manipulado. Um par de exemplos são, nome do cliente. Ele seria definido como ‘Use a coluna número de cliente e devolver o campo Nome da tabela de clientes. Outro exemplo é o item de linha de extensão seria definida como um cálculo de quantidade * Preço / PricePer. Eu acredito que eu li em algum lugar Caché alega ter mais de 100.000 instalações.

Eu acho que um banco de dados de arquivo simples em Excel é não-relacional e usado por algumas pessoas.

É realmente apenas uma tabela de banco de dados que não podem ser unidos com outras tabelas.

bancos de dados orientados a objetos são um tipo interessante de banco de dados não-relacional.

O setor de comércio às vezes usa OO Bancos de dados uma vez que cada negócio / contrato pode olhar mais ou menos como os outros nessa categoria, mas tem atributos únicos também. Muito difícil para representá-lo relacionalmente.

eXist-db é um banco de dados XML que tenha sido em torno de um longo tempo. É particularmente útil para xquery sobre toneladas de documentos XML.

Qualquer arquivo ou grupo de arquivos que contém dados, mas não expressam relações dentro que os dados é um banco de dados não-relacional.

RRDtool é projetado para armazenar e log agregado de dados. Você configura uma amostragem dados de intervalo e alimentos para animais dentro dele, então ele retorna resultados baseados no tempo. Ele é otimizado para armazenamento de tamanho fixo, e começa a agregar resultados passados ??após um tempo. Por exemplo, suponha que você tenha um banco de dados round-robin com um intervalo de tempo de 5 minutos. Mesmo se você enviá-lo dados de temperatura uma vez por segundo, ainda apenas armazena os resultados em incrementos de 5 minutos. Depois de uma semana, ela atinge esses resultados em valores horários. Depois de um mês, os resultados por hora são calculados em números diários, e assim por diante.

RRDtool é comumente usado como back-end para ferramentas como Cricket e MRTG para rastrear dados ambientais de rede e por meses e anos a fio.

Para um gráfico baseado dbms você tem Neo4j

Para um SGBD hierárquicos você tem qualquer sistema de arquivos padrão ou com o "esquema" apoiar qualquer implementação LDAP.

Existem muitas respostas, mas todos eles acabam sendo em uma das duas categorias principais:

  1. Navegação. Inclui Árvore / bancos de dados de hierarquia e bancos de dados Gráfico.

  2. Bases de dados que pausa primeira forma normal (vários valores). Inclui pick bases de dados e Lotus Notes e seus descendentes como CouchDB.

EDIT: E, claro, lojas de chave / valor como BDB não são relacionais, mas isso só é preciso dizer não? Quero dizer, eles são lojas apenas chave / valor.

dBase. Embora tenha sido comercializado como tal, não cumpre os requisitos.

Como um banco de dados OO, a InterSystems Caché vem à mente. Alguns sistemas médicos e de biblioteca são construídos sobre isso.

  1. Na minha empresa, www.smartsgroup.com, temos um motor de banco de dados proprietário que chamamos de um "banco de dados de log de transações". Ele é construído sobre arquivos simples, cada arquivo contendo uma seqüência de "eventos" ou "mensagens", em formato binário, além de vários índices sobre esses dados e algoritmos para reproduzir o estado da carteira de encomendas de uma bolsa de valores. Ele é altamente otimizado para atualizações seqüenciais e acesso sequencial.

  2. Em aplicações científicas, também é comum o uso de motores de banco de dados proprietário, em vez de RDBMS de. Eu também trabalhei para uma empresa que tem a maior base de dados mundial de gravações cerebrais EEG: www.brainresource.com. Não usamos um banco de dados de arquivo simples, e funcionou bem para nós.

  3. SmartsGroup também usa um banco de dados temporal, que é como uma tabela de banco de dados não-relacional, exceto que nós armazenar um histórico de todas as alterações em todos os campos para que possamos reproduzir o estado de uma linha específica em uma determinada data.

A página Wiki para bancos de dados dimensionais ligadas ao acima parece ter desaparecido.

Alguns OLAP sistemas têm são apoiados por Multidimensional bancos de dados (MOLAP) estes são usados ??frequentemente em Analise financeira. Eles pagar clientes interativos que permitem navegar através dos dados em diferentes níveis de agregação.

Na minha universidade há um grupo que pesquisas dedutivo bancos de dados .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top