database - relazionali - tipi di dbms




Qual è un esempio di un database non relazionale? Dove/come vengono utilizzati? (16)

  1. Database XML es. Xindice
  2. Database di oggetti, ad esempio db4o

Essere consapevoli del fatto che il concetto di database relazionali è altamente controverso. I puristi come CJ Date sostengono che molti database di uso comune (come Oracle e SQL Server) non rispettano sufficientemente il modello relazionale da definire "relazionale".

Ho lavorato con database relazionali per qualche tempo, ma mi è venuto in mente solo di recente che ci devono essere altri tipi di database non relazionali.

Quali sono alcuni esempi di database non relazionali e dove / come vengono utilizzati nel mondo reale? Perché dovresti scegliere di utilizzare un database non relazionale su database relazionali?

Modifica : due altre domande simili sono state citate nelle risposte:


  1. Nella mia azienda, www.smartsgroup.com, abbiamo un motore di database proprietario che chiamiamo un "database dei log delle transazioni". È costruito su file flat, ogni file contenente una sequenza di "eventi" o "messaggi", in formato binario, oltre a vari indici su questi dati e algoritmi per la riproduzione dello stato del portafoglio ordini di una borsa valori. È altamente ottimizzato per gli aggiornamenti sequenziali e l'accesso sequenziale.

  2. Nelle applicazioni scientifiche, è anche comune utilizzare motori di database proprietari piuttosto che RDBMS. Ho anche lavorato per una società che ha il più grande database al mondo di registrazioni cerebrali EEG: www.brainresource.com. Lì usiamo un database di file flat, e ha funzionato bene per noi.

  3. SmartsGroup utilizza anche un database temporaneo, che è come una tabella di database non relazionale, tranne per il fatto che memorizziamo una cronologia di tutte le modifiche a tutti i campi in modo da poter riprodurre lo stato di una particolare riga in una data specifica.


Ci sono molte risposte, ma tutte finiscono per essere in una delle due principali categorie:

  1. Navigazione. Include i database Albero / Gerarchia e i database Graph.

  2. Database che interrompono la prima forma normale (più valori). Include i database Pick e Lotus Notes e la sua progenie come CouchDB.

EDIT: E ovviamente i negozi di valore / chiave come BDB non sono relazionali, ma ciò non fa altro che dire? Voglio dire, sono solo negozi chiave / valore.


Come database OO, viene in mente Intersystems Caché. Alcuni sistemi medici e bibliografici sono costruiti su questo.


I database orientati agli oggetti sono un tipo interessante di database non relazionale.

Il settore del trading a volte utilizza i database OO poiché ogni accordo / contratto può sembrare un po 'come gli altri in quella categoria, ma ha anche attributi univoci. MOLTO difficile da rappresentare in relazione.


Il database storico PI di OSIsoft non è relazionale. È fatto solo per archiviare dati con data e ora. È usato molto dall'industria, specialmente come database di back-end per tutti quei 'cruscotti'.

Non c'è bisogno di essere relazionali, poiché non ci sono join.



Penso che un database di file flat in Excel sia non relazionale e utilizzato da un bel po 'di persone.

In realtà è solo una tabella di database che non può essere unita ad altre tabelle.


Qualsiasi database che asserisce di essere un "Database Berkley style" o "Key / Value" Database non è relazionale.

Questi database sono solitamente basati su complessi algoritmi di hash e forniscono una ricerca O (1) molto veloce basata su una chiave, ma lasciano qualsiasi forma di bontà relazionale all'utente finale.

Ad esempio, in un database relazionale, si normalizzerebbe la struttura e si uniranno più tabelle per creare un set di risultati singolo.

In un database di chiavi / valori, si denormalizza il più possibile e quindi si utilizza una chiave univoca per cercare i dati.

Se hai bisogno di estrarre dati da due fonti, dovresti unire il set risultante a mano.


Qualsiasi file o gruppo di file che contiene dati ma non esprime relazioni all'interno di tali dati è un database non relazionale.


Un database orientato ai documenti non relazionale che abbiamo esaminato è Apache CouchDB .

Apache CouchDB è un database orientato ai documenti distribuito, fault-tolerant e privo di schemi accessibile tramite un'API HTTP / JSON RESTful. Tra le altre caratteristiche, fornisce una replica incrementale e robusta con rilevamento e risoluzione di conflitti bidirezionali ed è interrogabile e indicizzabile utilizzando un motore di visualizzazione orientato alla tabella con JavaScript che funge da linguaggio di definizione della vista predefinito.

Il nostro interesse era nel fornire un archivio di preferenze per gli utenti di accesso distribuito che fosse immune alla modificazione delle modifiche a cui potremmo serializzare gli oggetti di preferenza da Java e accedere a quelli con la stessa facilità con Javascript da un'applicazione client basata su XULRunner.


Un'alternativa oscura ma interessante ai tipi di database menzionati qui è il database associativo , come Sentences, di LazySoft Technology . C'è una versione personale gratuita che puoi scaricare e provare da solo. Anche l'Enterprise Edition è gratuita, ma richiede una richiesta alla società.

In sostanza, un database associativo consente di archiviare le informazioni più o meno allo stesso modo dei nostri cervelli: come cose e associazioni tra queste cose. Il nome "Sentenze" deriva dal modo in cui questa informazione può essere rappresentata in una sintassi soggetto-verbo-oggetto :

  • Tom è fratello di Laura
  • San Francisco si trova in California
  • Mike ha un limite di credito di $ 10.000

Una frase può essere il soggetto o l'oggetto di un'altra frase:

  • (L'autobus 570 arriva alle 8:15) la domenica
  • Mary dice (la torta è stata preparata da William)

Quindi, tutto può essere ridotto a entità e associazioni .

C'è, ovviamente, molto di più per le Sentenze rispetto a ciò che può essere espresso qui. Vi raccomando di dedicare un po 'di tempo a leggere di più su di esso in un white paper di LazySoft.

"Il modello associativo di dati" è un libro disponibile in formato PDF da Simon Williams, uno dei creatori di Sentences.


Datastore del Google App Engine :

Il datastore App Engine non è un database relazionale. Mentre l'interfaccia del datastore ha molte delle stesse caratteristiche dei database tradizionali, le caratteristiche uniche del datastore implicano un modo diverso di progettare e gestire i dati per sfruttare la capacità di scalare automaticamente.


eXist-db è un database xml che è in circolazione da molto tempo. È particolarmente utile per xquery su tonnellate di documenti xml.


I database non relazionali non soddisfano i requisiti di Codd. Intersystems Caché crea una riscrittura / riprogettazione totale del database del vecchio sistema operativo Pick. Da quel poco che ho letto su Caché sembra che sia una riprogettazione ben fatta. Permette ai programmi .net di accedere al database proprio come se fosse SQL. Caché esegue i programmi Pick OS senza richiedere modifiche. Importando i tuoi file Pick in Caché puoi ancora eseguire le tue vecchie applicazioni con schermo verde, ma anche scrivere nuovi programmi usando .net in modo da poter migrare alle applicazioni Windows senza abbandonare gli anni di progettazione dei dati in cui hai già investito. Ecco qui qualche background sul modello Pick DB. Un database Pick utilizza record e campi di lunghezza totalmente variabile. Tutte le tabelle sono codificate da un'unica chiave univoca e sono accessibili senza la lettura di un indice. Pick ha progettato il sistema per utilizzare un algoritmo di hash che legge l'elemento dal disco generalmente in 1a lettura fisica (supponendo che la manutenzione del sistema sia stata eseguita correttamente). I campi in Pick non sono tipizzati. Tutti i dati sono memorizzati come stringa e la trasmissione è fino al programmatore. I null vengono memorizzati come una stringa vuota, quindi un null non occupa spazio su disco come in SQL. Non è necessario per le chiavi esterne. Nel "mondo relazionale" il DBA deve creare e ordinare la tabella di intestazione e una tabella di articoli di ordine. Nel "Pick Model" c'è una singola tabella. Un esempio potrebbe essere: "Data ordine" è un campo che memorizzerebbe un numero di giorni dal "Dec 13, 1967" (il sistema di selezione dati selezionato è stato attivato per la prima volta). I programmatori scelti non avevano problemi con Y2k. Una seconda colonna sarebbe il numero cliente. La grande differenza è quando arrivi alla colonna Numero prodotto, sarebbe "Multivalore" (la non conformità del codd). In altre parole, il database può gestire 1-32000 codice prodotto in quella colonna. Altre colonne come Quantità ordinata si troverebbero in una relazione di controllo / dipendente con il Numero prodotto e sarebbero anche multivalore. Quando si arriva alla quantità spedita, Pick andrà a una terza dimensione e avrà un campo a più valori. Si dispone di una colonna del numero di spedizione e sarà multivalore per l'elemento pubblicitario e per il sotto-multivalore contenente la quantità di spedizione per tale linea per quel numero di spedizione. Non ci sono Necessari. Tutti i dati per quell'ordine sono memorizzati in una tabella e in un singolo record. Nessun file orfano mai! In secondo luogo, la definizione dei dati è leggermente diversa. I nostri dizionari possono contenere definizioni di dati che non sono in questa tabella o sono manipolati. Un paio di esempi sono, Nome cliente. Sarebbe definito come 'Usa la colonna Numero cliente e restituire il campo Nome dalla Tabella clienti. Un altro esempio è che l'estensione dell'elemento pubblicitario sarà definita come un calcolo di Quantità * Prezzo / Prezzo. Credo di aver letto da qualche parte che Caché afferma di avere oltre 100.000 installazioni.


  • Archivio base
    • CSV o altri dati delimitati
    • fogli di calcolo
    • / Etc / passwd
    • file di posta di mbox
  • Hierarchical
    • Registro di Windows
    • Subversion che utilizza il file system, FSFS, anziché Berkley DB




non-relational-database