Come possono gli RDBMS essere considerati una moda passeggera?


11

Completando il mio livello informatico nel 2003 e conseguendo una laurea in Informatica nel 2007 e apprendendo il mio mestiere in una società con molto utilizzo di SQL, mi è venuta l'idea di utilizzare database relazionali per l'archiviazione.

Quindi, nonostante sia relativamente nuovo allo sviluppo, sono rimasto sorpreso di leggere un commento (su /software//q/89994/12436 ) che diceva:

[Alcuni sviluppatori] disprezzano [SQL] e pensano che esso e RDBMS siano una mania

Ovviamente, uno sviluppatore competente utilizzerà lo strumento giusto per il lavoro giusto e non creerà un database relazionale quando, ad esempio, file flat o un'altra soluzione per l'archiviazione sono appropriati, ma gli RDBM sono utili in un numero enorme di circostanze, quindi come potrebbero essere considerato una moda passeggera?


1
Fornisci il contesto: dove hai letto quel commento?
Eran Galperin,

8
Qualunque cosa è considerata una moda da qualcuno da qualche parte.
Péter Török,

Molto vero Péter, solo curioso di sapere perché?
Stuper:

5
Queste persone di solito hanno un altro paradigma che vogliono promuovere, che va contro l'idea di database relazionali. Quindi i database relazionali sono cattivi e devono andare via. Guarda i database orientati agli oggetti, che non hanno ancora raggiunto la massa critica.

Risposte:


28

La chiave è nella R nell'RDBMS, che sta per relazionale. Contrariamente alla credenza popolare, ciò non significa relazioni tra le tabelle, ma piuttosto il fatto che ogni tabella è relazione in senso matematico della parola .

Il modello relazionale ha implicazioni piuttosto significative. Devi modellare i tuoi dati per adattarli alle relazioni e normalizzare quel modello . Se l'applicazione è progettata come modello orientato agli oggetti, il modello relazionale non è adatto. Questo è ampiamente noto come disadattamento dell'impedenza relazionale all'oggetto .

Un approccio a questa discrepanza sono gli ORM (mappatori di relazioni oggetto), che hanno guadagnato molta popolarità. Ma non sono la vera soluzione, sono più come aggirare il problema. Non risolvono davvero il problema della mappatura dell'ereditarietà delle classi sul modello relazionale.

La vera soluzione al disadattamento relazionale agli oggetti sono gli OODBMS , che purtroppo non hanno avuto molta trazione. Il motore popolare che supporta gli OOBD in modo nativo è PostgreSQL, che è OO / RDBMS ibrido. Un altro OODBMS è Zope Object DB , che è costruito in Python e nella configurazione tipica utilizza RDBMS come motore sottostante.

Un approccio alternativo consiste nell'implementare più logica a livello di applicazione o middleware e utilizzare la soluzione NoSQL per l'archiviazione sottostante.

Né OODBMS né NoSQL sono "solo un file flat".


2
@Daniel: certamente non ha detto che il modello relazionale era un problema che ha bisogno di una soluzione; ha detto esattamente quello che hai detto: se ti impegni a modellare il tuo software sul paradigma orientato agli oggetti, allora il modello relazionale è un problema.
Carson63000,

1
@Carson: le mie scuse, ma non è così che ho letto la risposta. @vartec dice: "La vera soluzione è OODBMS (che purtroppo non ha avuto molta trazione)". Non sono rispettosamente d'accordo: direi che la vera soluzione è comprendere il modello relazionale e usarlo in modo efficace. OODBMS è la soluzione di un uomo povero per quando è necessario utilizzare i principi OO per il proprio modello di dati, che certamente non è un caso universale.
Daniel Pryden,

1
@Daniel: pensavo che intendesse dire che un OODBMS era la vera soluzione, ancora una volta, se ti sei impegnato a modellare il tuo software sul paradigma orientato agli oggetti. Non che il modello relazionale fosse un problema in sé e per sé, e che OODBMS fosse la soluzione ad esso. Ma comunque, non c'è molto da discutere su chi di noi abbia capito correttamente Vartec, mi inchinerò e gli farò chiarire se vuole. :-)
Carson63000,

1
@Daniel: il contesto è importante. Dico celestamente, che il modello relazionale è un problema nel contesto di OOP. Ora, quanto sia universale o meno OOP, questo va oltre lo scopo di questa risposta. E a proposito. Gli OODBMS non sono "la soluzione dei poveri", gli ORM lo sono.
vartec,

1
@vartec: OK, ritiro il mio voto negativo. (Non posso effettivamente rimuoverlo a meno che il post non sia stato modificato.) Penso che sarebbe meglio chiarire che ci sono soluzioni che non coinvolgono OO. E sì, sono d'accordo che un ORM è peggio anche di un OODBMS.
Daniel Pryden,

13

Ho fatto la dichiarazione che hai citato nella domanda sopra. Se desideri una citazione per verificare la mia ipotesi sugli sviluppatori su questo sito, leggi la mia risposta alla seguente domanda e rivedi il contraccolpo di commenti e downvotes che ho ricevuto per quella che considero ancora una risposta accettabile.

I programmatori esperti dovrebbero conoscere le query del database?

Ho affermato che se si utilizza un database RDBMS che, nonostante Linq o un ORM, uno sviluppatore dovrebbe avere una conoscenza avanzata di SQL.

Questa era un'affermazione altamente impopolare a causa delle rispettabili differenze di opinione sull'importanza di SQL, con la mentalità meno rispettabile che RDBMS è intrinsecamente inferiore ai database NoSQL come MongoDB.

EDIT: Per aggiungere ulteriormente al mio reclamo, citerò la logica SK dell'utente:

basta ricordare che tutta questa mania RDBMS è una tendenza relativamente recente. Prima di allora avevamo un'ampia varietà di approcci. Apparentemente stai lavorando in un'azienda giovane, insieme a sviluppatori della tua età, e quindi non hai alcuna possibilità di essere esposto agli approcci di archiviazione più vecchi e più solidi. Fortunatamente, questa recente tendenza è già in declino e stanno tornando buoni vecchi modi, rinominati come "nosql".


Concordo pienamente con te sul fatto che gli sviluppatori che lavorano con i DB dovrebbero comprendere SQL per essere in grado di concettualizzare una query in termini di relazioni correttamente. Tuttavia, si spera, Linq / ORM non ottimizzano le query sull'astrazione in un modo che influisce su una query scritta pensando all'archivio dati.
Stuper:

L'unico motivo per cui qualcuno direbbe "questa mania RDBMS è una tendenza relativamente recente" è mostrare quanto grigia sia la barba. Ho lavorato per la prima volta sul tipo di applicazioni aziendali e di business che descrivi nel 1995 - i database relazionali hanno dominato allora, dominano ora, hanno dominato ovunque io abbia lavorato nei 16 anni successivi. Ora ovviamente non sono vecchio come alcuni, ma quando dico "relativamente recente", non intendo "negli ultimi vent'anni".
Carson63000,

Il problema è che molti sviluppatori identificano erroneamente RDBMS con SQL. SQL è un linguaggio davvero orribile secondo gli standard moderni. È un'implementazione errata e incompleta di un linguaggio "relazionale" (SQL non è affatto relazionale e fa parte del problema) che non si è evoluto molto negli ultimi 30 anni. Molte persone che usano SQL capiscono a malapena il modello relazionale - tutto ciò che sanno è SQL e quindi presumono che il modello relazionale sia la causa della loro frustrazione.
nvogel,

@dportas, Sicuramente SQL non è perfetto, ma era così importante per ogni lavoro che ho fatto che ho scoperto quanto è diventata più facile la vita quando ho iniziato a PENSARE in SQL. Se mi dai un modello relazionale e mi fai una domanda in un inglese semplice, allora posso scriverti una "risposta" in SQL. Dici che "tutto ciò che sanno è SQL e quindi presumono che il modello relazionale sia la causa della loro frustrazione", quindi non conoscono abbastanza bene SQL. Perché ogni cosa deve essere sempre soddisfatta dal più basso demoninatore comune, come un programmatore indiano che guadagna meno di $ 10 / ora con una scarsa istruzione.
maple_shaft

@maple_shaft, se stai pensando in SQL, allora stai pensando ad alcune cose che sono molto sbagliate in termini relazionali. Ciò che dovrebbe essere incoraggiato è che gli sviluppatori comprendano concetti di base come il modello relazionale invece di concentrarsi su linguaggi come SQL. Se più persone capissero i concetti di base, forse SQL sarebbe già stato sostituito da cose migliori.
nvogel,

9

moda :

una cosa che diventa molto popolare in breve tempo, e poi viene dimenticata alla stessa velocità ".

Gli RDBMS sono in circolazione da secoli (almeno in termini di CS), quindi chiunque abbia detto che significava dire qualcos'altro o è all'oscuro.


2
Volevo dire qualcos'altro, vedere la mia risposta di seguito.
maple_shaft


3
Probabilmente sarebbe stato meglio usare un dizionario reale invece di urbandictionary.
Aaronaught,

Aaronaught - Che ne dici di Princeton? "Un interesse seguito con zelo esagerato." wordnetweb.princeton.edu/perl/…
Shauna,

3

L'alternativa a RDBMS non è solo un file flat. Quando ero a scuola, OODBMS era la novità e il mio professore aveva ragione quando l'ha etichettata come una moda passeggera. Dovresti dare un'occhiata ai diversi modelli e prendere nota delle tendenze. Ho visto una crescente dipendenza da OLAP e sarei disposto a scommettere che un nuovo sistema multidimensionale in grado di elaborare i dati più velocemente è proprio dietro l'angolo.


"Disposti a essere un nuovo" => "disposti a scommettere un nuovo"?
Binary Worrier

Oh, certo, ho usato un file flat come esempio. Questo è un buon collegamento ai modelli DB.
Stuper:

@Binary Sì e modificato per riflettere.
Christopher Bibbs,

3

Il problema è che molti sviluppatori identificano erroneamente RDBMS con SQL. SQL è un linguaggio davvero orribile secondo gli standard moderni. È un'implementazione errata e incompleta di un linguaggio "relazionale" (SQL non è affatto relazionale e fa parte del problema) che non si è evoluto molto negli ultimi 30 anni. Molte persone che usano SQL capiscono a malapena il modello relazionale - tutto ciò che sanno è SQL e quindi presumono che il modello relazionale sia la causa della loro frustrazione.


1

Senza contesto è difficile determinare chi / perché l'affermazione secondo cui gli RDBM sono considerati una mania.

Nel breve e medio termine (5-10 anni) e penserei ancora più a lungo che non se ne andrà. Un RDBM fornisce un metodo efficiente ed efficace per l'archiviazione, l'elaborazione e il recupero di dati relazionali che è ciò che la maggior parte delle aziende ha clienti / ordini, passeggeri / biglietti ecc.

Esistono altre alternative come NoSQL che sembrano crescere in popoularità con il progetto open source.

Come OLAP si tratta in realtà di database specialistici (nella mia mente) progettati per consentire a un'azienda di fornire informazioni statisticamente utili e tempestive su un'azienda ed eseguire scenari "what if" sui dati attuali. Naturalmente in quasi tutti i casi questi dati attuali provengono da un RDMB e sono stati manipolati e quindi inseriti nel database OLAP.


1

I database relazionali sono una mania nello stesso senso in cui il microcomputer è una mania.


1

La risposta semplice è no. RDBMS non è una moda passeggera. Quando leggi qualcosa su un sito Web per LinqPad, tieni presente che il loro scopo è vendere licenze per il loro prodotto.


La domanda è perché sarebbe considerata una moda, non se lo sia o la retorica promozionale di LinqPad. Lo standard LinqPad è gratuito.
Stuper:

La domanda gli è venuta leggendo la retorica promozionale di LinqPad. Basta sottolineare che dovrebbe prendere con un granello di sale.
Tundey,

No, non lo è, è venuto dal commento di maple_shaft su programmers.stackexchange.com/questions/89994/… . La copia di LinqPad è stata presa con un pizzico di sale, ma sono curioso di sapere se gli sviluppatori concordano con entrambe le affermazioni.
Stuper:

Sì, la retorica promozionale di LinqPad era che scrivere SQL per interrogare un RDBMS fosse antiquato, non che gli stessi RDBMS fossero antiquati. Stanno vendendo un modo migliore per usare un RDBMS, non un'alternativa a loro.
Carson63000,

@StuperUser e Carson63000: capito. Errore mio.
Tundey,

0

Fad non è la parola giusta in quanto sono stati per molto, molto tempo. Penso che potresti iniziare a sostenere che la tecnologia è molto vecchia e potrebbe essere il momento di inventare la prossima cosa successiva - forse le architetture NoSQL


0

The Wiki Def. di moda, definisce il termine "moda" come segue: Una moda è qualsiasi forma di comportamento che si sviluppa in una vasta popolazione e viene seguita collettivamente con entusiasmo per un certo periodo, generalmente a causa del modo in cui il comportamento viene percepito come romanzo in qualche modo. Si dice che una moda "afferrare" quando il numero di persone che lo adottano inizia ad aumentare rapidamente. Il comportamento normalmente svanisce rapidamente una volta che la percezione della novità è scomparsa.

Dato che i follower di RDBMS non sono svaniti rapidamente e non sta per scomparire negli anni a venire (grazie all'enorme quantità di applicazioni di produzione che lo utilizzano) non possiamo dire che sia una mania. In effetti i concetti chiave di RDBMS sono rimasti abbastanza stabili laddove molte delle altre tecnologie sono cambiate (e continuano a cambiare) in modo drammatico.

Il concetto di RDBMS (e il suo veicolo principale, SQL) rappresenta un passo nella tecnologia che, come molti altri, può essere sostituito da quelli migliori, tutto qui.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.