Jak RDBMS można uznać za modę?

11

Ukończywszy mój komputerowy poziom A w 2003 r. I uzyskując dyplom w dziedzinie informatyki w 2007 r. Oraz ucząc się swojej pracy w firmie z dużym wykorzystaniem języka SQL, wpadłem na pomysł wykorzystania relacyjnych baz danych do przechowywania danych.

Pomimo tego, że jestem stosunkowo nowy w rozwoju, byłem zaskoczony przeczytaniem komentarza (na https://softwareengineering.stackexchange.com/q/89994/12436 ), który powiedział:

[Niektórzy deweloperzy] gardzą [SQL] i myślą, że to i RDBMS to moda

Oczywiście kompetentny programista użyje odpowiedniego narzędzia do właściwego zadania i nie utworzy relacyjnej bazy danych, gdy np. Odpowiedni jest plik płaski lub inne rozwiązanie do przechowywania, ale RDBM są przydatne w wielu okolicznościach, więc jak mogą być uważany za modę?

StuperUser
źródło
1
Podaj kontekst - gdzie przeczytałeś ten komentarz?
Eran Galperin
8
Coś i wszystko jest gdzieś uważane za modę.
Péter Török,
Bardzo prawdziwy Péter, ciekawy, dlaczego?
StuperUser
5
Tacy ludzie zwykle mają inny paradygmat, który chcą promować, co jest sprzeczne z ideą relacyjnych baz danych. Dlatego relacyjne bazy danych są złe i muszą odejść. Spójrz na obiektowe bazy danych, które nie osiągnęły jeszcze masy krytycznej.

Odpowiedzi:

28

Klucz znajduje się w R w RDBMS, co oznacza relację. Wbrew powszechnemu przekonaniu nie oznacza to relacji między tabelami, ale raczej fakt, że każda tabela jest relacją w matematycznym znaczeniu tego słowa .

Model relacyjny ma dość znaczące implikacje. Musisz modelować swoje dane, aby dopasować relacje i znormalizować ten model . Jeśli aplikacja została zaprojektowana jako model obiektowy, model relacyjny nie jest dobrym dopasowaniem. Jest to powszechnie znane jako niedopasowanie impedancji obiektowo-relacyjnej .

Jednym z podejść do tego niedopasowania są ORM (mapery relacji obiektowych), które zyskały dużą popularność. Ale nie są prawdziwym rozwiązaniem, są raczej jak obejście problemu. Wciąż nie rozwiązują problemu mapowania dziedziczenia klas na model relacyjny.

Prawdziwym rozwiązaniem niedopasowania obiektowo-relacyjnego są OODBMS , które niestety nie zyskały dużej przyczepności. Popularnym silnikiem obsługującym natywnie OOBD jest PostgreSQL, czyli hybrydowy OO / RDBMS. Innym OODBMS jest Zope Object DB , który jest wbudowany w Pythona, aw typowej konfiguracji używa RDBMS jako silnika bazowego.

Alternatywnym podejściem jest zaimplementowanie większej logiki na poziomie aplikacji lub oprogramowania pośredniego i użycie rozwiązania NoSQL do przechowywania danych.

Ani OODBMS, ani NoSQL nie są „zwykłymi plikami”.

vartec
źródło
2
@Daniel: z pewnością nie powiedział, że model relacyjny jest problemem wymagającym rozwiązania; powiedział dokładnie to, co powiedziałeś - jeśli jesteś zaangażowany w modelowanie swojego oprogramowania na paradygmacie zorientowanym obiektowo, wtedy model relacyjny jest problemem.
Carson63000,
1
@Carson: Przepraszam, ale nie tak czytam odpowiedź. @vartec mówi: „Prawdziwym rozwiązaniem jest OODBMS (który niestety nie zyskał dużej przyczepności)”. Z szacunkiem się nie zgadzam: powiedziałbym, że prawdziwym rozwiązaniem jest zrozumienie modelu relacyjnego i efektywne jego wykorzystanie. OODBMS jest rozwiązaniem dla biednego człowieka, gdy trzeba stosować zasady OO w modelu danych, co z pewnością nie jest powszechnym przypadkiem.
Daniel Pryden
1
@Daniel: Myślałem, że miał na myśli, że OODBMS jest prawdziwym rozwiązaniem, jeśli jesteś zaangażowany w modelowanie swojego oprogramowania na paradygmacie zorientowanym obiektowo. Nie chodzi o to, że model relacyjny sam w sobie był problemem, a OODBMS był rozwiązaniem. Ale tak czy inaczej, nie ma sensu zastanawiać się, kto z nas poprawnie zrozumiał Varteca, skłonię się i pozwolę mu wyjaśnić, czy chce. :-)
Carson63000,
1
@Daniel: Kontekst jest ważny. Mówię celowo, że model relacyjny jest problemem w kontekście OOP. Teraz, jak uniwersalny jest OOP, czy nie, to jest poza zakresem tej odpowiedzi. I btw. OODBMS nie są „rozwiązaniem biedaka”, ORM są.
vartec
1
@vartec: OK, wycofuję swoje zdanie głosowe. (Nie mogę go właściwie usunąć, chyba że post jest edytowany.) Myślę, że najlepiej byłoby wyjaśnić, że istnieją rozwiązania, które nie wymagają OO. I tak, zgadzam się, że ORM jest gorszy niż OODBMS.
Daniel Pryden,
13

Złożyłem oświadczenie, które zacytowałeś w powyższym pytaniu. Jeśli chcesz cytować, aby zweryfikować moje przypuszczenia dotyczące programistów na tej stronie, przeczytaj moją odpowiedź na następujące pytanie i przejrzyj reakcję na komentarze i opinie, które wciąż uważam za akceptowalne.

Czy doświadczeni programiści powinni znać zapytania do bazy danych?

Stwierdziłem, że jeśli używana jest baza danych RDBMS, która pomimo Linq lub ORM, programista powinien mieć zaawansowaną znajomość SQL.

Było to bardzo niepopularne stwierdzenie, jak się wydaje, z powodu poważnych różnic opinii na temat znaczenia SQL, dla mniej szanowanego sposobu myślenia, że ​​RDBMS jest z natury gorszy od baz danych NoSQL, takich jak MongoDB.

EDYCJA: Aby dodatkowo dodać do mojego roszczenia, zacytuję użytkownika SK-logic:

pamiętaj tylko, że całe to szaleństwo RDBMS jest stosunkowo nowym trendem. Wcześniej mieliśmy wiele różnych podejść. Najwyraźniej pracujesz w młodej firmie wraz z programistami w twoim wieku, dlatego nie masz szans na kontakt ze starszymi i bardziej solidnymi metodami przechowywania. Na szczęście ten ostatni trend już maleje, a stare dobre sposoby powracają, przemianowane na „nosql”.

wałek klonowy
źródło
Całkowicie zgadzam się z Tobą, że programiści pracujący z bazami danych powinni rozumieć SQL, aby móc poprawnie konceptualizować zapytanie pod względem relacji. Mamy jednak nadzieję, że Linq / ORM nie optymalizują zapytań dotyczących abstrakcji w sposób, który wpływa na zapytania napisane z myślą o magazynie danych.
StuperUser
Jedynym powodem, dla którego ktoś mógłby powiedzieć „ten szał RDBMS jest stosunkowo nowy trend”, jest pokazanie, jak siwa jest jego broda. Najpierw pracowałem nad aplikacjami biznesowymi i biznesowymi, które opisałeś w 1995 r. - wtedy dominowały relacyjne bazy danych, dominują teraz, dominują wszędzie, gdzie pracowałem przez 16 lat. Teraz oczywiście nie jestem tak stary jak niektórzy, ale kiedy mówię „stosunkowo niedawno”, nie mam na myśli „w ciągu ostatnich dwudziestu lat”.
Carson63000,
Problem polega na tym, że wielu programistów błędnie utożsamia RDBMS z SQL. SQL jest naprawdę okropnym językiem według współczesnych standardów. Jest to wadliwa i niekompletna implementacja języka „relacyjnego” (SQL wcale nie jest tak naprawdę relacyjny i to część problemu), który nie rozwinął się znacznie w ciągu ostatnich 30 lat. Wiele osób korzystających z SQL ledwo rozumie model relacyjny - wszystko, co wiedzą, to SQL, więc zakładają, że model relacyjny jest przyczyną ich frustracji.
nvogel,
@dportas, Sure SQL nie jest doskonały, ale dla każdego zadania, które miałem, było tak ważne, że dowiedziałem się o ile łatwiejsze stało się życie, kiedy zacząłem MYŚLEĆ w SQL. Jeśli dasz mi model relacyjny i zadasz mi pytanie w prostym języku angielskim, wtedy mogę napisać Ci „odpowiedź” w języku SQL. Mówicie, że „wszystko, co znają, to SQL, a więc zakładają, że przyczyną ich frustracji jest model relacyjny”, a więc nie znają wystarczająco SQL. Dlaczego wszystko musi być pokrywane przez cały czas z najniższym wspólnym demoninatorem, takim jak indyjski programista zarabiający mniej niż 10 USD / godzinę przy słabym wykształceniu.
wałek klonowy
@maple_shaft, jeśli myślisz w SQL, to myślisz o pewnych rzeczach, które są bardzo błędne w kategoriach relacyjnych. Należy zachęcać programistów do zrozumienia podstawowych koncepcji, takich jak model relacyjny, zamiast skupiania się na językach takich jak SQL. Gdyby więcej osób rozumiało podstawowe założenia, być może SQL zostałby już zastąpiony lepszymi rzeczami.
nvogel
9

moda :

rzecz, która staje się bardzo popularna w krótkim czasie, a następnie zostaje zapomniana z mniej więcej taką samą prędkością ”.

RDBMS są dostępne od wieków (przynajmniej w kategoriach CS), więc ktokolwiek powiedział, że albo chciał powiedzieć coś innego, albo nie ma pojęcia.

l0b0
źródło
2
Chciałem powiedzieć coś jeszcze, zobacz moją odpowiedź poniżej.
wałek klonowy
Odpowiedź znajduje się na stronie programmers.stackexchange.com/questions/90024/...
3
Prawdopodobnie lepiej byłoby użyć prawdziwego słownika niż urbandictionary.
Aaronaught
Aaronaught - A co z Princeton? „Zainteresowanie nastąpiło z przesadną gorliwością”. wordnetweb.princeton.edu/perl/…
Shauna
3

Alternatywą dla RDBMS nie jest zwykły plik. Kiedy byłem w szkole, OODBMS było nową rzeczą, a mój profesor miał rację, kiedy nazwał to modą. Powinieneś spojrzeć na różne modele i zwrócić uwagę na trendy. Widziałem rosnącą zależność od OLAP i chciałbym postawić na nowy system wielowymiarowy, który może szybciej przetwarzać dane tuż za rogiem.

Christopher Bibbs
źródło
Czy „chętny do bycia nowym” => „chętny do postawienia nowego”?
Binary Worrier
Och, oczywiście, użyłem płaskiego pliku jako przykładu. To dobry link do modeli DB.
StuperUser
@Binary Tak i edytowane, aby to odzwierciedlić.
Christopher Bibbs,
3

Problem polega na tym, że wielu programistów błędnie utożsamia RDBMS z SQL. SQL jest naprawdę okropnym językiem według współczesnych standardów. Jest to wadliwa i niekompletna implementacja języka „relacyjnego” (SQL wcale nie jest naprawdę relacyjny i to część problemu), który nie rozwinął się znacznie w ciągu ostatnich 30 lat. Wiele osób korzystających z SQL ledwo rozumie model relacyjny - wszystko, co wiedzą, to SQL, więc zakładają, że model relacyjny jest przyczyną ich frustracji.

nvogel
źródło
1

Bez kontekstu trudno jest ustalić, kto / dlaczego stwierdzenie, że RDBM są uważane za modę.

W perspektywie krótko- i średnioterminowej (5–10 lat) pomyślałbym jeszcze dłużej, że nie zniknie. RDBM zapewnia wydajną i skuteczną metodę przechowywania, przetwarzania i wyszukiwania danych relacyjnych, którą mają większość firm: klienci / zamówienia, pasażerowie / bilety itp.

Istnieją inne alternatywy, takie jak NoSQL, które wydają się rosnąć popularnie dzięki projektowi open source.

Jako OLAP są to naprawdę (moim zdaniem) specjalistyczne bazy danych zaprojektowane, aby umożliwić firmie dostarczanie aktualnych i przydatnych informacji statystycznych o firmie i uruchamianie scenariuszy „co jeśli” na bieżących danych. Oczywiście w prawie wszystkich przypadkach te bieżące dane pochodziły z RDMB i zostały zmanipulowane, a następnie wstawione do bazy danych OLAP.

Armitage
źródło
1

Relacyjne bazy danych są modne w tym samym sensie, co mikrokomputery.

Jeremy
źródło
1

Prosta odpowiedź to nie. RDBMS nie są modne. Kiedy czytasz coś na stronie LinqPad, pamiętaj, że ich celem jest sprzedaż licencji na ich produkt.

Tundey
źródło
Pytanie dotyczy tego, dlaczego uznano by to za modę, a nie czy jest to promocyjna retoryka LinqPada. Standard LinqPad jest bezpłatny.
StuperUser
Pytanie przyszło od niego, czytając promocyjną retorykę LinqPada. Wskazując tylko, że powinien wziąć z odrobiną soli.
Tundey,
Nie, nie, to przyszło z komentarzem maple_shaft w sprawie programmers.stackexchange.com/questions/89994/... . Kopia LinqPada została zrobiona ze szczyptą soli, ale jestem ciekawy, czy deweloperzy zgadzają się z którymkolwiek stwierdzeniem.
StuperUser
Tak, promocyjna retoryka LinqPada polegała na tym, że pisanie SQL w celu zapytania do RDBMS było przestarzałe, a nie, że same RDBMS były przestarzałe. Sprzedają lepszy sposób korzystania z RDBMS, a nie alternatywę dla nich.
Carson63000,
@StuperUser i Carson63000: Rozumiem. Mój błąd.
Tundey,
0

Fad nie jest właściwym słowem, ponieważ są ze sobą od bardzo dawna. Myślę, że możesz zacząć argumentować, że technologia jest bardzo stara i być może nadszedł czas na wymyślenie następnej rzeczy - być może architektury NoSQL

bigtang
źródło
0

Wiki Def. Fad definiuje termin „moda” w następujący sposób: moda jest dowolną formą zachowania, która rozwija się wśród dużej populacji i jest przez pewien czas przyjmowana z entuzjazmem, ogólnie w wyniku postrzegania tego zachowania w pewien sposób jako nowego. Mówi się, że moda „łapie”, gdy liczba osób, które ją przyjmują, szybko rośnie. Zachowanie zwykle szybko zanika, gdy zniknie postrzeganie nowości.

Ponieważ obserwatorzy RDBMS nie zanikali szybko i nie zamierzają odejść za wiele lat (dzięki ogromnemu stosowi aplikacji produkcyjnych używających go) nie możemy powiedzieć, że to moda. W rzeczywistości podstawowe koncepcje RDBMS pozostały dość stabilne tam, gdzie tak wiele innych technologii zmieniło się (i wciąż się zmienia) dramatycznie.

Koncepcja RDBMS (i jej głównego pojazdu, SQL) stanowi krok w technologii, który, podobnie jak wiele innych, może zostać zastąpiony przez lepsze, czyli wszystko.

Bez szans
źródło