Що таке "база даних"?


14

У цьому питанні було багато дискусій: Які технології баз даних використовують великі пошукові системи?

Стільки дискусій, що мене збентежило. Отже ... що таке база даних у будь-якому випадку? Чи є лише реляційні бази даних "бази даних"? Чи є об'єктно-орієнтовані бази даних "базами даних"? Чи є якась система, яка дозволяє мені зберігати та отримувати інформацію (наприклад, карту, список тощо), базу даних?

Або база даних повинна зберігати / отримувати інформацію, а також має деякі функції адміністрування, такі як користувачі та привілеї? Чи був dBase III плюс база даних, оскільки він насправді не був реляційним?


@ypercube: "Його здатність одночасно відкривати та маніпулювати декількома файлами, що містять пов'язані дані, призвела до того, що Ештон-Тейт мітить dBase" реляційною базою даних ", хоча вона не відповідала критеріям, визначеним реляційною моделлю доктора Едгара Ф. Кодда; вона могла би більш точно називатися мовою розробки додатків та інтегрованою системою управління навігаційними базами даних, на яку впливають реляційні концепції ". з wikipedia
woliveirajr

3
Я не вірю, що базу даних потрібно «адмініструвати», щоб стати базою даних.
Аарон Бертран

Відповіді:


9

Це чудове запитання і набір чудових відповідей. Я думаю, що одне, чого не вистачає в обговоренні, - це відповідь, яка заглиблюється у відмінність між базою даних та системою управління базами даних (СУБД). Мені подобається визначення бази даних, яку Shark надав із Dictionary.com. Я думаю, що це дійсно свідчить про необхідність розрізнення бази даних та СУБД. База даних - це "всебічний збір пов'язаних даних, організований для зручного доступу". Друга частина цього визначення, в якій сказано "загалом у комп'ютері", полягає в тому, де лежить розмежування. Якщо він зберігається в комп'ютері, він може бути, а може і не зберігатися в СУБД. Він може зберігатися у файловій системі ОС. Він може зберігатися у фірмовій файловій системі. Таким чином, я погоджуюся з FrustratedWithFormsDesigner, що каталог картки - це "база даних" (ну можливо - це всеохоплююче та пов’язане з цим? Детальніше про це пізніше). Це, як правило, зберігається у файловому кабінеті. У сучасному світі найбільш "всебічні колекції супутніх даних організовані для зручного доступує зберігаються на комп'ютері, так що я НЕ згоден з акулою , що це шкода Dictionary.com додав , що частина. Я думаю, що це абсолютно правильно - як визначення поняття "база даних".

Тож як ми визначаємо СУБД? Я повернувся до Dictionary.com і знайшов це :

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

Визначення продовжується і є досить довгим. Він описує загальні риси, що надаються СУБД, такі як безпека, цілісність даних, управління транзакціями, контроль сумісності, а головне - незалежність даних. СУБД забезпечує зовнішній вигляд даних, абстрагованих від їх фізичного зберігання.

Використовуючи це визначення, я думаю, що зрозуміло, що СУБД повинна надавати модель даних, саме так організовуються дані для представлення користувачеві. Три поширені моделі - це ієрархічна (IMS), мережа (IDMS) та реляційна (DB2, Oracle, SQL-сервер тощо). Існує також модель OO (OODBMS). Лише реляційна модель сьогодні має широке застосування. Інші моделі все ще використовуються, але лише в нішевих ситуаціях. СУБД повинна також надавати інші згадані функції. Я б назвав це в сукупності як функції чи можливості управління даними.

Отже, програмні продукти, що надають функції управління даними, є СУБД, тоді як продукти, які не надають їх, не є СУБД '. Продукти NoSQL не є СУБД '. Це не так означає, що вони не корисні, і нісказати, що вони не зберігають "бази даних". Мені подобається думати, що СУБД, як говорить визначення, вирішує клас проблем, пов’язаних з такими бізнес-програмами, як бухгалтерський облік, нарахування заробітної плати, виставлення рахунків, управління відносинами з клієнтами, продажі тощо. Продукти NoSQL, хоча і не СУБД, є відмінними для вирішення Клас проблем, які не пов'язані з традиційними бізнес-додатками, але зараз існують через величезну кількість пам'яті та обчислювальну здатність пропускної здатності, здатні сьогодні. Це такі додатки, як пошук в Інтернеті, як онлайн-аукціон, як щебетати і як facebook. СУБД не дуже підходить для вирішення цих проблем, оскільки СУБД містить функції управління даними, які, хоча абсолютно необхідні для бізнес-додатків, не корисні для вирішення зберігання та пошуку Craig ' Перелік оголошень або канали щебетати (ну, як правило, все одно - це інша дискусія в інший час :-)). Ці проблеми вимагають масштабного масштабування та надзвичайно швидкого реагування, і СУБД, з її функцією, не дуже підходить.

Спеціаліст з даних повинен зрозуміти всі ці інструменти для зберігання даних та те, який клас проблем вони підходять для вирішення, щоб вибрати правильний інструмент для роботи, як і генеральний підрядник повинен знати, який з його будівельних інструментів є правильний інструмент для роботи. Жоден інструмент не є хорошим чи поганим у своєму самому. Це добре, якщо це добре підходить для вирішення важливої ​​проблеми.

Я закінчу, зазначивши два інших ключових відмінності у визначенні як бази даних, так і СУБД, які, можливо, були не помічені в обговоренні поки що. Визначення бази даних включає " всебічний збір пов'язаних даних". Визначення СУБД включає "управління великими структурованимиБуде краще використовувати MS Access або якісь інші реляційні СУБД. Тож, можливо, каталог картки все-таки не є базою даних, оскільки поки вичерпний (у ньому є запис про всі книги в бібліотеці), він не пов'язаний, оскільки він містить лише інформацію про книги, не повну пов’язану інформацію про авторів, видавців, тощо.

По-друге, СУБД досконало допомагає зберігати "структуровані" дані. Він повністю базується на визначеній схемі дискретних елементів даних із структурованими типами. Продукт NoSQL, скажімо, зберігання ключових значень, позбавлений схеми, є кращим при зберіганні неструктурованих даних. Тому продукт NoSQL не відповідає визначенню СУБД. Але якщо проблема, яку ви намагаєтеся вирішити, - це зберігання неструктурованих даних (те, що ми навіть не намагалися зробити, коли вперше були розроблені СУБД), і вам не потрібні функції управління даними незалежно від програми, в яку ви будете писати. Обробляючи неструктуровані дані, продукт NoSQL - це ідеальний інструмент.

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


1
Гарний пост. Що стосується списку Крейга, я думаю, що є більше шарів, які слід розглянути. Зберігання та завантаження не повинно відбуватися безпосередньо над СУБД. Ви, звичайно, можете масштабувати дані, які зберігаються, скажімо, на SQL Server, не роблячи SQL Server безпосередньо відповідальним за відповідь на запити користувачів. Є всі види рішень середнього рівня та кешування даних, які можуть допомогти СУБД, не потребуючи заміни СУБД. У своєму попередньому завданні я використовував десятки екземплярів Express на веб-серверах, щоб зменшити навантаження на основний SQL Server - часті натискання, а не тягнення працювали.
Аарон Бертран

Спасибі Аарон Моя відсутність досвіду роботи із програмами поза традиційними бізнес-додатками. Я бачив кілька повідомлень, наприклад, Брент Озар, про рішення кешування даних, але жодного разу не бачив. Дякуємо за Ваш приклад на попередньому досвіді. Я обов'язково додам цю концепцію шару над СУБД, щоб увімкнути масштаб без втрати переваг СУБД до панелі інструментів!
Тодд Еверетт

Отже, IMS DB - це СУБД, але Кассандра - ні. Вибачте, але з повагою не згоден.
Майкл Грін

9

Я цитую Dictionary.com , оскільки я сприймаю це як значення бази даних:

всебічний збір пов'язаних даних, організований для зручного доступу, як правило, на комп'ютері.

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

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

Варто відзначити коментар @ FrustratedWithFormsDesigner:

Картки-каталоги також будуть враховані, якщо ви видалили "... взагалі в комп'ютері".

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


8

Для мене база даних - це річ, яка існує для зберігання та отримання даних. Ми називаємо Access до бази даних, хоча це справді просто гарний передній кінець колекції файлів. Outlook (принаймні на Mac) називає свою базу даних зберігання повідомлень. Деякі люди навіть називають Excel базою даних (але такий вид змушує мене хмурити - значить, десь є рядок).

Я думаю, що визначення змінилося з часом, і порівняння словника з Wiki, wiki, документами різних професіоналів баз даних протягом останніх 30 років дасть різноманітні визначення. І визначення також продовжуватиме змінюватися.

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

Деякі люди отримують неабияку стурбованість, мабуть, якщо ви навіть на периферію припускаєте, що BigTable (або NoSQL або hadoop) - це "база даних", і стверджують, що виклик її як такої дасть - особливо новачкам - велику обіцянку безмежної продуктивності, безсмертя і Єдинороги. Тоді як правило, ви просто маєте на увазі, що це місце, де зберігаються та витягуються дані, без жодних гарантій того, що робить реальна реалізація, будь то реляційна чи ні, чи ви могли самі зробити таке, коли нудно в неділю вдень.

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


5

Це може бути дуже загальним, просто набір даних та структур. Система управління базою даних може бути такою ж простою, як файлова система, або такою ж складною, як і об'єднана система, як DNS.

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

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

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


2

Я працював у Ashton-Tate під час розробки dBASE Direct / 36 та dBASE IV, використовуючи свої знання dBASE III Plus, щоб кодувати невелику програму, яка допоможе в тестуванні dBASE Direct / 36 (інтерфейс до комп'ютера IBM System / 36 Mini). Нам довелося робити бінарні заяви про навантаження та виклики до таблиць SQL System / 36, для яких потрібно було повторно вводити одні й ті самі заяви "завантаження" та "виклик", змінюючи назви таблиць та назви полів при поданні, щоб отримати дані з кожного запису або група декількох записів залежно від обсягу запиту. dBASE III Plus, мова програмування баз даних, дозволив мені створити "dbldot.prg", який змінив запит на одну крапку на подвійну крапку, оскільки я розраховував на показник того, що система перебуває в режимі пошуку SQL, а також текст під командним рядком, який сказав: "

Ще в той час dBASE була мовою програмування баз даних, а точніше, мовою програми, яка дозволяла маніпулювати записами даних. Запис являв собою групу полів, що містять дані для одного окремого елемента, такі як особи LAST_NAME, FIRST_NAME, ADDRESS, CITY, ST, ZIP, PLUS_FOUR, SSN тощо. Ці структури пізніше були представлені в таблицях і впорядковані в рядки та стовпці, рядок - це окремий запис, а стовпець - дані у серії записів для кожного імені поля. Таким чином, користувач може легко сортувати за назвою поля для сортування та групування записів за конкретними загальними полями, такими як CITY, ST, ZIP тощо.

Мова dBASE дозволив користувачеві або програмісту маніпулювати даними, виконувати сортування, відображати таблиці, записи та проводити обчислення (Y2K було далеко, але дати потрібно було перетворити на YYYYMMDD, щоб сортувати дані MM-DD-YYYY, які були введені, що можна зробити за допомогою DtoC та CtoD (дата до символу, символ до дати)). Без мови dBASE файли даних просто були б рядів записів (рядків) із загальними полями (стовпцями).

Реляційна база даних - це термін, використовуваний для перехрещення посилань на більше ніж одну базу даних (таблицю) з іншою, яка містила різну інформацію, але містила одне або більше загальних полів. Наприклад, база даних під назвою "Адреси" містить "LNAME", "FNAME", "ADDRESS", "CITY", "ST", "ZIP", "SSN". Інша база даних під назвою "ПЕРЕВІРКА" містить "ACCOUNT_NO", "ROUTING_NO", "CUSTLAST", "CUSTFIRST", "DOB", "SSNO", "CUST_NO". Хоча назви полів різні, декілька з них містять ту саму інформацію, яку можна пов’язати між собою, щоб зв'язати дані однієї бази даних, що іншої, щоб, скажімо, надсилати виписки клієнтам банку, використовуючи поля імені та прізвища та номери SS для відновлення даних, витягуючи адресу клієнта з однієї бази даних та інформацію про акаунт, яку слід помістити у виписку з іншої. Тоді в більш масштабному масштабі може відбуватися функція злиття пошти для виконання цих дій над кожним окремим клієнтом у базі даних АДРЕС, витягуючи відповідну інформацію облікового запису кожного клієнта, персоналізуючи виписку, друкуючи та звертаючись до кожного, перш ніж перейти до наступного запис або клієнт у базі даних.

Так, щось на зразок MS ACCESS могло бути більше СУБД, але на базовому рівні dBASE - це мова для створення інтерфейсів інтерфейсу користувача та проведення всіх маніпуляцій з даними між базами даних, щоб створити відношення між ними та повернути отримані дані для ми просто люди для використання.

Відтоді багато що змінилося, але фундамент залишається тим самим. Дані все ще містяться в записах, що містять ряд полів різних типів даних, і повинні бути перехресними посиланнями та об'єднані з іншими базами даних за допомогою однієї або декількох загальних точок даних, що дозволяє нам користуватися кредитними картками, налаштовувати рахунки в Інтернеті за допомогою ідентифікаторів Google, Facebook, Twitter, відстежуйте історію придбань тощо. Наше життя - це лише низка безлічі перекриваючих реляційних баз даних, які ми обходимо щодня, не замислюючись про всі біти та байти, які взаємодіють, щоб принести нам задоволення та продовження еволюції легкості у нашому житті сьогодні.

В оренді саме так я завжди розумів це протягом багатьох років тестування програмного та апаратного забезпечення, яке почалося з dBASE II ще в 1984 році.


2

Насіннєвий документ Кодда під назвою "Реляційна модель даних для великих банків спільних даних" . Те, що він називав "банком даних", ми б називали базою даних.

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


1

З основ дизайну баз даних 7-е вид. (стор. 5),

База даних - це сукупність пов’язаних даних.

Вони продовжують говорити, що загальне використання більш обмежене,

База даних має такі неявні властивості:

  • База даних представляє деякий аспект реального світу, який іноді називають мінісвітом або Всесвітом дискурсу (UoD). Зміни в мінісвіті відображаються в базі даних.
  • База даних - це логічно узгоджена сукупність даних з деяким притаманним значенням. Випадковий асортимент даних не може бути правильно названий базою даних.
  • База даних розробляється, створюється та заповнюється даними для певної мети. Вона має цільову групу користувачів та деякі заздалегідь створені програми, в яких ці користувачі зацікавлені.

У жодному визначенні база даних не є явно "реляційною" в будь-якому сенсі, проте, як правило, це передбачається, оскільки галузь насичена DBA одного конкретного типу і, мабуть, найсучасніше програмне забезпечення СУБД є реляційним. Із словника реляційних баз даних

Суворо значення бази даних, qv; Частіше в цьому словнику використовується, зокрема, для посилання на те, що більш точно називатиметься змінною бази даних, qv. У цьому словнику ми припускаємо, що бази даних завжди є реляційними, забороняючи явні твердження протилежного. Примітка: Термін база даних також використовується в нереляційних контекстах для позначення різноманітних речей: наприклад, збір фізично збережених даних. Він також використовується занадто часто, щоб означати СУБД, але саме це використання сильно застаріло. (Якщо ми називаємо СУБД базами даних, що ми називаємо базою даних?)

Цей останній момент є дещо важливим, і мені також подобається відмінність між СУБД / RDBMS і самою базою даних.

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