Як RDBMS можна вважати пристрастю?


11

Завершивши рівень обчислювальної техніки в 2003 році та отримавши ступінь з обчислювальної техніки в 2007 році та вивчивши свою торгівлю в компанії з великим використанням SQL, я висунувся на ідею використання реляційних баз даних для зберігання.

Тож, не дивлячись на відносно нову розробку, я здивовано прочитав коментар (на https://softwareengineering.stackexchange.com/q/89994/12436 ), який сказав:

[Деякі розробники] зневажають [SQL] і думають, що це і RDBMS - привид

Очевидно, що грамотний розробник використовуватиме правильний інструмент для правильної роботи та не створить реляційну базу даних, коли напр. Плоский файл чи інше рішення для зберігання є відповідним, але RDBM корисні у величезній кількості обставин, тож як вони могли бути вважається примхом?


1
Будь ласка, вкажіть контекст - де ви читали цей коментар?
Еран Гальперін

8
Все, що завгодно, хтось десь вважає придуманим.
Péter Török

Дуже справжній Петер, просто цікаво, чому?
StuperUser

5
У таких людей зазвичай є інша парадигма, яку вони хочуть просувати, і це суперечить ідеї реляційних баз даних. Отже, реляційні бази даних погані, і їх потрібно пройти. Подивіться на об’єктно-орієнтовані бази даних, які ще не досягли критичної маси.

Відповіді:


28

Ключ знаходиться в R в RDBMS, що означає реляційні. Всупереч поширеній думці, це не означає відносини між таблицями, а скоріше факт, що кожна таблиця є співвідношенням у математичному сенсі цього слова .

Реляційна модель має досить значні наслідки. Ви повинні змоделювати свої дані відповідно до відносин та нормалізувати цю модель . Якщо ваша програма розроблена як об'єктно-орієнтована модель, реляційна модель не годиться. Це широко відоме як невідповідність об'єктно-реляційного імпедансу .

Одним із підходів до цієї невідповідності є ORM (картографічні відношення об'єктів), які здобули велику популярність. Але вони не є справжнім рішенням, вони більше схожі на вирішення проблеми. Вони досі не вирішують проблему зіставлення успадкування класів у реляційній моделі.

Справжнє рішення об'єктно-реляційної невідповідності - OODBMS , які, на жаль, не отримали особливої ​​тяги. Популярним двигуном, який підтримує OOBD, є PostgreSQL, який є гібридним OO / RDBMS. Інша OODBMS - Zope Object DB , яка вбудована в Python і в типових умовах використовує RDBMS як основний двигун.

Альтернативний підхід полягає в тому, щоб більше логіки було реалізовано на прикладному або середньому рівні обладнання та використовувати рішення NoSQL для базового сховища.

Ні OODBMS, ні NoSQL не є "просто плоским файлом".


2
@Daniel: він, звичайно, не сказав, що реляційна модель - це проблема, яка потребує вирішення; він сказав саме те, що ви сказали - якщо ви прагнете моделювати своє програмне забезпечення на об'єктно-орієнтованій парадигмі, то реляційна модель є проблемою.
Carson63000

1
@Carson: Мої вибачення, але я не читаю відповідь. @vartec каже: "Справжнє рішення - OODBMS (який, на жаль, не отримав особливої ​​тяги". Я з повагою не погоджуюся: я б сказав, що справжнє рішення - зрозуміти реляційну модель та ефективно її використовувати. OODBMS - це рішення для бідних людей, коли потрібно використовувати принципи ОО для своєї моделі даних, що, безумовно, не є універсальним.
Даніель Приден

1
@Daniel: Я подумав, що він мав на увазі, що OODBMS - це справжнє рішення, якщо ви знову прагнете моделювати програмне забезпечення на об'єктно-орієнтованій парадигмі. Не те, щоб реляційна модель була проблемою сама по собі, і що OODBMS була її вирішенням. Але все одно, не дуже суперечливо, хто з нас правильно зрозумів Вартека, я схиляюся і дам йому уточнити, чи хоче він. :-)
Carson63000

1
@Daniel: Контекст є важливим. Я відверто кажу, що реляційна модель є проблемою в контексті ООП. Тепер, наскільки універсальний чи не OOP, це виходить за рамки цієї відповіді. І btw. OODBMS не є "рішенням бідної людини", ORM.
vartec

1
@vartec: Гаразд, я відмовляюсь від свого голосу. (Я фактично не можу її видалити, якщо публікація не буде відредагована.) Я думаю, що було б найкраще уточнити, що є рішення, які не передбачають ОО. І так, я погоджуюся, що ОРМ гірший навіть від OODBMS.
Даніель Приден

13

Я зробив заяву, яку ви цитували у запитанні вище. Якщо ви хочете, щоб цитата перевірила моє припущення щодо розробників на цьому веб-сайті, тоді прочитайте мою відповідь на наступне запитання та перегляньте зворотний відгук коментарів та опромінювань, які я отримав, на що я вважаю прийнятною відповідь.

Чи повинні досвідчені програмісти знати запити до бази даних?

Я висловив твердження, що якщо використовується база даних RDBMS, що, незважаючи на Linq або ORM, розробник повинен володіти передовими знаннями SQL.

Це було дуже непопулярним твердженням, як видається, через поважні розбіжності щодо важливості SQL, до менш поважного мислення, що RDBMS по суті поступається базам даних NoSQL, як MongoDB.

РЕДАКТУВАННЯ: Щоб додатково додати свою претензію, я наводжу SK-логіку користувача:

просто пам’ятайте, що все це захоплення RDBMS є відносно недавньою тенденцією. До цього у нас були найрізноманітніші підходи. Ви, мабуть, працюєте в молодій компанії разом з розробниками вашого віку, і, таким чином, у вас немає шансів зазнати впливу старих і більш солідних підходів до зберігання. На щастя, ця остання тенденція вже зменшується, і старі добрі способи повернення, ребрендинг як "nosql".


Цілком погоджуюся з вами, що розробники, що працюють з БД, повинні розуміти SQL, щоб мати можливість правильно концептуалізувати запит з точки зору відносин. Однак, сподіваємось, Linq / ORM не оптимізують запити на абстракцію таким чином, що впливає на запити, написані з урахуванням сховища даних.
StuperUser

Єдина причина, за якою хтось скаже, що "цей манія RDBMS - відносно недавня тенденція", - це показати, наскільки сива їх борода. Я вперше працював над типом підприємств та бізнес-додатків, які ви описуєте в 1995 році - тоді реляційні бази даних домінували тоді, вони домінують зараз, вони домінували скрізь, де я працював протягом 16 років інтервенції. Зараз явно я не такий вже й старий, як дехто, але коли я кажу "відносно недавно", я не маю на увазі "за останні двадцять років".
Carson63000

Проблема полягає в тому, що багато розробників неправильно прирівнюють RDBMS до SQL. SQL - це справді жахлива мова за сучасними мірками. Це хибна і неповна реалізація "реляційної" мови (SQL взагалі не є справді реляційною, і це частина проблеми), яка за останні 30 років не розвинулася значно. Багато людей, що використовують SQL, ледь розуміють реляційну модель - все, що вони знають, є SQL, і тому вони припускають, що реляційна модель є причиною їх розладу.
nvogel

@dportas, звичайно, SQL не є ідеальним, але для кожної роботи це було так важливо, що я дізнався, наскільки простішим стало життя, коли я почав думати в SQL. Якщо ви дасте мені реляційну модель і задасте мені питання простою англійською мовою, я можу написати вам "відповідь" у SQL. Ви говорите, що "все, що вони знають, - це SQL, і тому вони вважають, що реляційна модель є причиною їх розладу", то тоді вони не знають SQL досить добре. Чому за весь час треба задовольняти найнижчого загального демонстратора, як індійський програміст, який заробляє менше 10 доларів / год із поганою освітою.
maple_shaft

@maple_shaft, якщо ви думаєте в SQL, то ви думаєте про деякі речі, які є дуже неправильними в реляційному плані. Слід заохочувати розробників розуміти такі основні поняття, як реляційна модель, а не орієнтуватися на такі мови, як SQL. Якби більше людей розуміли основні концепції, то, можливо, SQL вже були б замінені на кращі речі.
nvogel

9

примха :

річ, яка стає дуже популярною за короткий проміжок часу, а потім забувається приблизно з однаковою швидкістю ".

RDBMS існують протягом багатьох віків (принаймні, з точки зору CS), тому той, хто сказав, що або мав на увазі сказати щось інше, або не зрозумілий.


2
Я мав на увазі сказати щось інше, дивіться мою відповідь нижче.
maple_shaft


3
Напевно, було б краще використовувати справжній словник на відміну від урбандочного.
Aaronaught

Aaronaught - А як щодо Принстона? "Зацікавленість супроводжувалась перебільшеною старанністю". wordnetweb.princeton.edu/perl/…
Шауна

3

Альтернатива RDBMS - це не просто плоский файл. Коли я навчався в школі, OODBMS була новою річчю, і мій професор був правильний, коли він назвав це пристрастю. Вам слід поглянути на різні моделі та відзначити тенденції. Я бачив все більшу залежність від OLAP, і хотів би зробити ставку на нову багатовимірну систему, яка може швидше обробляти дані, знаходиться недалеко.


Чи повинен "готовий бути новим" => "готовий зробити ставку на новий"?
Бінарний страшник

Ну звичайно, використаний плоский файл як приклад. Це гарне посилання на моделі БД.
StuperUser

@Binary Так і відредаговано для відображення.
Крістофер Біббс

3

Проблема полягає в тому, що багато розробників неправильно прирівнюють RDBMS до SQL. SQL - це справді жахлива мова за сучасними мірками. Це хибна та неповна реалізація "реляційної" мови (SQL взагалі не є справді реляційною, і це частина проблеми), яка за останні 30 років не розвинулася значно. Багато людей, що використовують SQL, ледь розуміють реляційну модель - все, що вони знають, є SQL, і тому вони припускають, що реляційна модель є причиною їх розладу.


1

Без контексту важко визначити, хто / чому твердження про те, що RDBM вважаються придуманим.

У коротко- та середньостроковій перспективі (5 -10 років) я б подумав ще довше, що не збираюся йти. RDBM забезпечує ефективний та ефективний метод зберігання, обробки та отримання реляційних даних, які є більшістю компаній - клієнтами / замовленнями, пасажирами / квитками тощо.

Є й інші альтернативи, такі як NoSQL, які, схоже, зростають у популярності з проектом з відкритим кодом.

Оскільки OLAP - це справді (на мій погляд) спеціалізовані бази даних, створені для того, щоб бізнес міг своєчасно та корисно статистично надавати інформацію про компанію та запускати сценарії "що робити" на поточних даних. Звичайно, майже у всіх випадках ці поточні дані надходили з RDMB, маніпулювались, а потім вставлялися в базу даних OLAP.


1

Реляційні бази даних - це примха в тому ж сенсі, що мікрокомп'ютери - це примха.


1

Проста відповідь - ні. RDBMS - не примха. Коли ви читаєте щось на веб-сайті для LinqPad, майте на увазі, що їх мета - продати ліцензії на свій товар.


Питання полягає в тому, чому це вважатиметься пристрастю, а не тим, чи це рекламна риторика LinqPad. Стандарт LinqPad безкоштовний.
StuperUser

Питання виникло від нього, читаючи рекламну риторику LinqPad. Тільки вказуючи, що він повинен брати з собою зерно солі.
Тундей

Ні, цього не сталося, воно вийшло з коментаря maple_shaft щодо programmers.stackexchange.com/questions/89994/… . Копія LinqPad була зроблена із щіпкою солі, але мені цікаво, чи погоджуються розробники з будь-яким твердженням.
StuperUser

Так, рекламна риторика LinqPad полягала в тому, що написання SQL для запиту RDBMS було застарілим, а не те, що самі RDBMS були застарілими. Вони продають кращий спосіб використання RDBMS, а не альтернативу їм.
Carson63000

@StuperUser і Carson63000: Зрозумів. Моя помилка.
Тундей

0

Фад не є правильним словом, оскільки вони тривалий час тривалий час. Я думаю, ви можете почати робити аргумент, що технологія дуже стара і можливо, настав час придумати наступне наступне - можливо, архітектури NoSQL


0

Wiki Захист. Fad , визначає термін "примха" таким чином: примха - це будь-яка форма поведінки, яка розвивається серед великої кількості населення і колективно переслідується з ентузіазмом протягом певного періоду, як правило, внаслідок того, що поведінка певним чином сприймається як нове. Кажуть, що прихильність «наздоганяє», коли кількість людей, які її приймають, починає швидко збільшуватися. Поведінка, як правило, швидко згасає, коли відчуття новизни не зникне.

Оскільки прихильники RDBMS швидко не зникають і не збираються відходити через багато років (завдяки величезній купі виробничих додатків, що використовують його), ми не можемо сказати, що це прихильність. Насправді основні концепції RDBMS залишалися досить стабільними, коли стільки інших технологій кардинально змінилися (і досі змінюються).

Концепція RDBMS (і її основний засіб SQL) являє собою крок у технології, яка, як і багато інших, може бути замінена кращими, тобто все.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.