Domanda

Lo so, il database relazionale è un database in cui i campi di una tabella si collegano alle righe delle altre, qualcosa del genere.

Ma non riesco a capire cosa significhi per me come sviluppatore web!

Come so, una query con join e selezione annidata può ridurre le prestazioni (in particolare le query in stile drupal con dozzine di join).Inoltre, qualsiasi query al DB rappresenta un collo di bottiglia e quindi hai molti utenti che devi memorizzare nella cache ogni richiesta di selezione.

Se memorizzi nella cache ogni richiesta selezionata, è meglio memorizzare nella cache le richieste semplici piuttosto che quelle complicate.Puoi memorizzare nella cache "select * from tbl1 where id = 123" e "select * from tbl2 where id = 456" o "select * from tbl1, tbl2 where ...", ma se scegli il secondo modo, lo farai è necessario memorizzare nella cache ogni combinazione di oggetti: non è bello.

Ok, ora utilizziamo solo query molto semplici come "select * from tbl1 where id = 123" o "select id from tbl1 order by id limit 0, 30" e le mettiamo nella cache (oppure possiamo memorizzare nella cache solo il primo tipo di query, qualunque sia ).Queste query e non meno semplici INSERT, DELETE e UPDATE sono tutto ciò di cui abbiamo bisogno e tutto ciò che usiamo!

Come possiamo vedere, tutta la logica relazionale è nel linguaggio principale dell'applicazione, non in SQL.Quindi, perché abbiamo bisogno di tutte queste cose relazionali?Cosa vogliono dire?Cosa ha il tipo "relazionale" che un altro tipo non ha ma è necessario?Se non utilizziamo funzionalità relazionali, perché tutti continuano a utilizzare MySQL o qualsiasi altro database relazionale, anche se hanno a cuore le prestazioni?

Questo tipo di database è diventato uno standard.Perché?Non ho idea.Non ho quasi mai sentito parlare di qualcuno che utilizza database non relazionali, ad eccezione di GAE.

Mi sto perdendo qualcosa?

È stato utile?

Soluzione

Se vuoi conoscere cosa significa relazionali, vi consiglio il libro " SQL e Relational Theory " di CJ Data.

Relazionale in questo contesto non si riferiscono a rapporti. Si riferisce a rapporti , che sono fondamentalmente ciò che le tabelle sono chiamati nelle teorie matematiche che hanno portato alla modello relazionale .

La ragione per cui i database relazionali sono diventati onnipresenti è che essi sono la soluzione più generale per l'organizzazione dei dati con ridondanza minima.

Ci sono validi motivi per utilizzare soluzioni non-relazionali. Spesso risolvere specifici compiti di gestione dei dati molto bene, ma sono deboli in altri settori. Mentre SQL e database relazionali colpire un compromesso, risolvendo un insieme più ampio di problemi in modo adeguato, con un minor numero di aree di debolezza.

Altre tecnologie attualmente disponibili che non sono basati sul modello relazionale sono elencati in " Il Next-Gen database ".

Altri suggerimenti

Sono confuso per la tua domanda. In quale altro modo proponete di tenere traccia di come le varie tabelle in relazione tra loro?

per esempio, ho un elenco di vetture, e una lista di persone, e ho bisogno di collegarsi quale persona possiede ogni auto, quindi ho una colonna car_ID nel database persona. Come avrebbe proposto di tenere traccia di questi rapporti

Inoltre, si dice che si desidera memorizzare nella cache 'tutte le query sono i colli di bottiglia' e si desidera solo per mettere in cache le query 'semplici'. Tuttavia, sono sicuro al 90% che, per rendere più piccole query sarà più risorse rispetto rendendo diverse query più piccoli. Inoltre non c'è bisogno di memorizzare nella cache ogni combinazione, solo quelle che in realtà esistono. nel mio esempio, cosa c'è di sbagliato con una query come questa?

SELECT person.*, car.* from person left join on car where person.car_ID = car.ID

I database relazionali sono diventati il ​​database di fatto per una serie di motivi.

  1. L'impostazione di vincoli primari, esterni e univoci impone determinate regole aziendali ai livelli più bassi, aiuta a garantire l'integrità dei dati e rende le relazioni del database facilmente comprensibili a qualsiasi livello di professionista IT.

  2. Un database relazionale progettato correttamente è infatti più veloce dietro le quinte per molti processi (non tutti).

  3. L'interrogazione del database relazionale è abbastanza veloce da apprendere e facile da eseguire.

  4. I database relazionali aiutano a limitare la duplicazione dei dati e, dal punto di vista dell'ingegneria dei dati, questa è una cosa meravigliosa.

e molti altri, ma questi sono alcuni.

Se non si utilizza le relazioni, è necessario memorizzare tutto in una tabella gigante con numerosi numero di colonne. Oppure si può utilizzare un DataCube (credo?)

E 'consente di normalizzare i dati e rimuovere redanancy. Invece di memorizzare tutti i dati in una tabella piatta (come un foglio di calcolo Excel), si memorizzano i dati disparati in tabelle separate e poi metterli in relazione tra di loro.

Ad esempio, è possibile memorizzare gli utenti in una tabella Utenti e prodotti in una tabella Prodotti e quindi utilizzare una tabella di relazione di mettere in relazione l'utente che ha ordinato che i prodotti.

  

UserA -> ProductA

     

UserA -> ProductB

     

UserB -> ProductA

     

UtenteC -> ProductB

Con dati normalizzati, significa che se le modifiche dei dati, ha solo bisogno di essere aggiornato in un unico luogo. Se un utente cambia il loro nome, solo che i cambiamenti record utente. Se un prezzo del prodotto deve essere sollevato, solo che i cambiamenti di registrazione del prodotto. Non c'è bisogno di setacciare la vostra tavola piatta in cerca di dati duplicati da sostituire.

Valya, se non verranno aggiunti, aggiornati o cancellati i dati nell'applicazione, quindi una cache è il modo più veloce per la ricerca e lo visualizza. Sono curioso di sapere che cosa questi dati è che tutti sono in tanta fretta di vedere, ma non sarò aggiornamento? Forse alcuni dettagli aiuterebbero. Conosco qualcuno che conservato tutto il suo database in memoria con una cache write-through, e sì, è volato! Egli è l'unico sviluppatore che conosco che potrebbe tirare fuori questo. Forse avete bisogno di reinventare il motore a razzo, e forse non lo fai.

Relazione è la parola matematica per la tavola. Le colonne sono in relazione tra loro, altrimenti non fossero nella stessa tabella.

Ad esempio, due numeri sono in relazione con l'altro se differiscono un multiplo di 3. Scriviamo alcuni di loro giù: (0,0), (1,4), (2, -1), ecc . si vede una collezione di righe appaiono, che è un tavolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top