Це чудове запитання і набір чудових відповідей. Я думаю, що одне, чого не вистачає в обговоренні, - це відповідь, яка заглиблюється у відмінність між базою даних та системою управління базами даних (СУБД). Мені подобається визначення бази даних, яку Shark надав із Dictionary.com. Я думаю, що це дійсно свідчить про необхідність розрізнення бази даних та СУБД. База даних - це "всебічний збір пов'язаних даних, організований для зручного доступу". Друга частина цього визначення, в якій сказано "загалом у комп'ютері", полягає в тому, де лежить розмежування. Якщо він зберігається в комп'ютері, він може бути, а може і не зберігатися в СУБД. Він може зберігатися у файловій системі ОС. Він може зберігатися у фірмовій файловій системі. Таким чином, я погоджуюся з FrustratedWithFormsDesigner, що каталог картки - це "база даних" (ну можливо - це всеохоплююче та пов’язане з цим? Детальніше про це пізніше). Це, як правило, зберігається у файловому кабінеті. У сучасному світі найбільш "всебічні колекції супутніх даних організовані для зручного доступує зберігаються на комп'ютері, так що я НЕ згоден з акулою , що це шкода Dictionary.com додав , що частина. Я думаю, що це абсолютно правильно - як визначення поняття "база даних".
Тож як ми визначаємо СУБД? Я повернувся до Dictionary.com і знайшов це :
"Набір програм, які, як правило, керують великими структурованими наборами постійних даних. Вони пропонують можливості спеціальних запитів для багатьох користувачів. Вони широко використовуються в бізнес-програмах."
Визначення продовжується і є досить довгим. Він описує загальні риси, що надаються СУБД, такі як безпека, цілісність даних, управління транзакціями, контроль сумісності, а головне - незалежність даних. СУБД забезпечує зовнішній вигляд даних, абстрагованих від їх фізичного зберігання.
Використовуючи це визначення, я думаю, що зрозуміло, що СУБД повинна надавати модель даних, саме так організовуються дані для представлення користувачеві. Три поширені моделі - це ієрархічна (IMS), мережа (IDMS) та реляційна (DB2, Oracle, SQL-сервер тощо). Існує також модель OO (OODBMS). Лише реляційна модель сьогодні має широке застосування. Інші моделі все ще використовуються, але лише в нішевих ситуаціях. СУБД повинна також надавати інші згадані функції. Я б назвав це в сукупності як функції чи можливості управління даними.
Отже, програмні продукти, що надають функції управління даними, є СУБД, тоді як продукти, які не надають їх, не є СУБД '. Продукти NoSQL не є СУБД '. Це не так означає, що вони не корисні, і нісказати, що вони не зберігають "бази даних". Мені подобається думати, що СУБД, як говорить визначення, вирішує клас проблем, пов’язаних з такими бізнес-програмами, як бухгалтерський облік, нарахування заробітної плати, виставлення рахунків, управління відносинами з клієнтами, продажі тощо. Продукти NoSQL, хоча і не СУБД, є відмінними для вирішення Клас проблем, які не пов'язані з традиційними бізнес-додатками, але зараз існують через величезну кількість пам'яті та обчислювальну здатність пропускної здатності, здатні сьогодні. Це такі додатки, як пошук в Інтернеті, як онлайн-аукціон, як щебетати і як facebook. СУБД не дуже підходить для вирішення цих проблем, оскільки СУБД містить функції управління даними, які, хоча абсолютно необхідні для бізнес-додатків, не корисні для вирішення зберігання та пошуку Craig ' Перелік оголошень або канали щебетати (ну, як правило, все одно - це інша дискусія в інший час :-)). Ці проблеми вимагають масштабного масштабування та надзвичайно швидкого реагування, і СУБД, з її функцією, не дуже підходить.
Спеціаліст з даних повинен зрозуміти всі ці інструменти для зберігання даних та те, який клас проблем вони підходять для вирішення, щоб вибрати правильний інструмент для роботи, як і генеральний підрядник повинен знати, який з його будівельних інструментів є правильний інструмент для роботи. Жоден інструмент не є хорошим чи поганим у своєму самому. Це добре, якщо це добре підходить для вирішення важливої проблеми.
Я закінчу, зазначивши два інших ключових відмінності у визначенні як бази даних, так і СУБД, які, можливо, були не помічені в обговоренні поки що. Визначення бази даних включає " всебічний збір пов'язаних даних". Визначення СУБД включає "управління великими структурованимиБуде краще використовувати MS Access або якісь інші реляційні СУБД. Тож, можливо, каталог картки все-таки не є базою даних, оскільки поки вичерпний (у ньому є запис про всі книги в бібліотеці), він не пов'язаний, оскільки він містить лише інформацію про книги, не повну пов’язану інформацію про авторів, видавців, тощо.
По-друге, СУБД досконало допомагає зберігати "структуровані" дані. Він повністю базується на визначеній схемі дискретних елементів даних із структурованими типами. Продукт NoSQL, скажімо, зберігання ключових значень, позбавлений схеми, є кращим при зберіганні неструктурованих даних. Тому продукт NoSQL не відповідає визначенню СУБД. Але якщо проблема, яку ви намагаєтеся вирішити, - це зберігання неструктурованих даних (те, що ми навіть не намагалися зробити, коли вперше були розроблені СУБД), і вам не потрібні функції управління даними незалежно від програми, в яку ви будете писати. Обробляючи неструктуровані дані, продукт NoSQL - це ідеальний інструмент.
Я сподіваюся, що ця відповідь додає значення іншим чудовим відповідям, розміщеним тут. Я з нетерпінням чекаю будь-яких коментарів та дискусійних пунктів у кого-небудь іншого, який допоможе нам розширити розуміння баз даних та класів технологій, які вирішують проблеми, пов'язані з даними.