Dużo dyskusji dotyczyło tego pytania: z jakich technologii baz danych korzystają duże wyszukiwarki?
Tyle dyskusji, że wprawiło mnie to w zakłopotanie. Więc ... co to jest baza danych? Czy tylko relacyjne bazy danych są „bazami danych”? Czy obiektowe bazy danych są „bazami danych”? Czy jakikolwiek system, który pozwala mi przechowywać i pobierać informacje (np. Mapę, listę itp.), Jest bazą danych?
A może baza danych musi przechowywać / pobierać informacje, a także posiadać pewne funkcje administracyjne, takie jak Użytkownicy i uprawnienia? Czy dBase III plus baza danych, ponieważ nie była tak naprawdę relacyjna?
database-theory
terminology
woliveirajr
źródło
źródło
Odpowiedzi:
To świetne pytanie i zestaw świetnych odpowiedzi. Myślę, że jedną rzeczą, której brakuje w dyskusji, jest odpowiedź, która zagłębia się w rozróżnienie między bazą danych a systemem zarządzania bazą danych (DBMS). Podoba mi się definicja bazy danych, którą podał Shark ze Dictionary.com. Myślę, że to naprawdę pokazuje potrzebę rozróżnienia między bazą danych a DBMS. Baza danych jest „kompleksowym zbiorem powiązanych danych zorganizowanym dla wygodnego dostępu”. Druga część tej definicji, która mówi „ogólnie w komputerze”, dotyczy właśnie tego rozróżnienia. Jeśli jest przechowywany na komputerze, może, ale nie musi, być przechowywany w DBMS. Może być przechowywany w systemie plików OS. Może być przechowywany w zastrzeżonym systemie plików. Dlatego zgadzam się z FrustratedWithFormsDesigner, że katalog kart jest „bazą danych” (no może - czy jest kompleksowy i powiązany? Więcej na ten temat później). Tak się składa, że jest przechowywany w szafce na akta. W dzisiejszym świecie najbardziej „kompleksowe zbiory powiązanych danych zorganizowane dla wygodnego dostępusą przechowywane na komputerze, więc nie zgadzam się z Shark, że szkoda, że Dictionary.com dodał tę część. Myślę, że jest to absolutnie poprawne - jako definicja „bazy danych”.
Jak więc zdefiniować DBMS? Wróciłem do Dictionary.com i znalazłem to :
„Pakiet programów, które zazwyczaj zarządzają dużymi, strukturalnymi zestawami trwałych danych, oferując doraźne funkcje zapytań wielu użytkownikom. Są one szeroko stosowane w aplikacjach biznesowych”.
Definicja trwa i jest dość długa. Opisuje typowe funkcje oferowane przez DBMS, takie jak bezpieczeństwo, integralność danych, zarządzanie transakcjami, kontrola współbieżności, a co najważniejsze - niezależność danych. DBMS zapewnia zewnętrzny widok danych pozyskanych z fizycznego przechowywania.
Korzystając z tej definicji, myślę, że jest jasne, że DBMS musi zapewniać model danych , czyli sposób, w jaki dane są zorganizowane w celu prezentacji użytkownikowi. Trzy popularne modele to hierarchiczne (IMS), sieciowe (IDMS) i relacyjne (DB2, Oracle, SQL-Server itp.). Istnieje również model OO (OODBMS). Tylko model relacyjny ma dziś szerokie zastosowanie. Inne modele są nadal w użyciu, ale tylko w niszowych sytuacjach. DBMS musi również zapewniać inne wymienione funkcje. Odniosę się do nich zbiorczo jako do funkcji lub możliwości zarządzania danymi.
Dlatego produkty oprogramowania zapewniające funkcje zarządzania danymi to DBMS, natomiast produkty, które ich nie zapewniają, nie są DBMS. Produkty NoSQL nie są DBMS ”. Nie oznacza to, że nie są użyteczne i niepowiedzieć, że nie przechowują „baz danych”. Lubię myśleć, że DBMS, jak mówi definicja, rozwiązuje szereg problemów związanych z aplikacjami biznesowymi, takimi jak księgowość, płace, fakturowanie, zarządzanie relacjami z klientami, sprzedaż itp. Produkty NoSQL, choć nie DBMS, są doskonałe do rozwiązywania klasa problemów, które nie są związane z tradycyjnymi aplikacjami biznesowymi, ale teraz istnieją ze względu na ogromną ilość pamięci i technologię przetwarzania przepustowości, która jest w stanie dzisiaj. Są to aplikacje takie jak wyszukiwarka internetowa, aukcje internetowe, Twitter i Facebook. DBMS nie jest dobrym rozwiązaniem do rozwiązania tych problemów, ponieważ DBMS zawiera funkcje zarządzania danymi, które, choć absolutnie konieczne dla aplikacji biznesowych, nie są przydatne do rozwiązywania problemów z przechowywaniem i odzyskiwaniem Craiga ” s listuj reklamy lub twitterowe kanały (no cóż, zazwyczaj tak czy inaczej - to kolejna dyskusja na inny czas :-)). Problemy te wymagają ogromnej skalowalności i niezwykle szybkiej reakcji, a DBMS ze swą funkcją wzdęcia nie jest dobrym rozwiązaniem.
Specjalista od danych musi zrozumieć wszystkie te narzędzia do przechowywania danych oraz rodzaj problemów, które powinien rozwiązać, aby wybrać odpowiednie narzędzie do pracy, tak jak generalny wykonawca musi wiedzieć, które z jego narzędzi budowlanych jest odpowiednie narzędzie do pracy. Żadne narzędzie nie jest dobre ani złe samo w sobie. Dobrze jest, jeśli dobrze pasuje do rozwiązania ważnego problemu.
Kończę, zwracając uwagę na dwa inne kluczowe rozróżnienia w definicji bazy danych i DBMS, które do tej pory można pominąć w dyskusji. Definicja bazy danych obejmuje „ kompleksowe zbieranie powiązanych danych”. Definicja DBMS obejmuje „zarządzanie dużymi strukturamid lepiej będzie użyć MS Access lub jakiegoś innego relacyjnego DBMS. Być może katalog kart nie jest jednak bazą danych, ponieważ chociaż jest wyczerpujący (zawiera zapis wszystkich książek w bibliotece), nie jest powiązany, ponieważ zawiera tylko informacje o książkach, a nie pełne informacje o autorach, wydawcach, itp.
Po drugie, DBMS przoduje w przechowywaniu „ustrukturyzowanych” danych. Jest całkowicie oparty na zdefiniowanym schemacie dyskretnych elementów danych o typach strukturalnych. Produkt NoSQL, powiedzmy, magazyn wartości kluczowych pozbawiony schematu, wyróżnia się tym, że przechowuje nieustrukturyzowane dane. Ten produkt NoSQL nie spełnia zatem definicji DBMS. Ale jeśli problemem, który próbujesz rozwiązać, jest przechowywanie nieustrukturyzowanych danych (coś, czego nawet nie próbowaliśmy zrobić, kiedy DBMS został opracowany po raz pierwszy) i nie potrzebujesz funkcji zarządzania danymi niezależnych od aplikacji, do której napiszesz przetwarzając nieustrukturyzowane dane, produkt NoSQL jest idealnie dopasowany do narzędzia.
Mam nadzieję, że ta odpowiedź doda wartości innym świetnym odpowiedziom zamieszczonym tutaj. Z niecierpliwością czekam na wszelkie komentarze i punkty dyskusji, które mogą mieć wszyscy inni, które pomogą nam poszerzyć nasze zrozumienie baz danych i klas technologii, które rozwiązują problemy związane z danymi.
źródło
Cytuję Dictionary.com , ponieważ traktuję to jako znaczenie bazy danych:
Zgodnie z tą definicją można rozważyć dowolną bazę danych, od pełnoprawnego RDBMS (SQL Server, Oracle itp.) Do podstawowego pliku płaskiego. Jeśli przechowuje dane, technicznie można je uznać za bazę danych.
Teraz, podobnie jak większość rzeczy we współczesnym świecie, istnieje przyjęte znaczenie nazwy. W przypadku bazy danych będą się one różnić w zależności od osoby. Wiele osób myśli o bazie danych wyłącznie jako o jednostce zarządzanej przez system danych.
Warto zauważyć komentarz @ FrustratedWithFormsDesigner:
Zgadzam się z tym stwierdzeniem i niekoniecznie uważam, że baza danych musi żyć na „komputerze” lub innym urządzeniu elektronicznym. Katalog kart jest doskonałym przykładem nieskomputeryzowanej bazy danych.
źródło
Dla mnie baza danych to rzecz, która istnieje do przechowywania i pobierania danych. Nazywamy Access bazą danych, nawet jeśli jest to naprawdę ładny interfejs do zbioru plików. Program Outlook (przynajmniej na komputerze Mac) nazywa swój magazyn wiadomości bazą danych. Niektórzy nawet nazywają Excel bazą danych (ale tego rodzaju parskanie powoduje, że mam gdzieś linię).
Myślę, że definicja ta ewoluowała w czasie, a porównanie Dictionary.com, wiki, artykułów różnych specjalistów baz danych w ciągu ostatnich 30 lat, przyniesie wiele różnych definicji. Definicja będzie również ewoluować.
Jeśli mówisz o jakimś źródle danych, którego Ty lub Twoje aplikacje używacie do przechowywania lub pobierania danych, bez względu na to, czy są one relacyjne, czy nie, nie mam problemu z nazwaniem go bazą danych. Jeśli jest to plik tekstowy, możesz mieć uniesione brwi, ale nie jestem pewien, czy rozumiem potrzebę precyzyjnego określenia definicji w tak skończony sposób, że ludzie się na nią gniewają.
Wygląda na to, że niektórzy ludzie mają dość uprzejmości, jeśli nawet podejdziecie na margines do sugerowania, że BigTable (lub NoSQL lub hadoop) jest „bazą danych” i twierdzą, że nazwanie go jako takim da - szczególnie początkującym - wielką obietnicę nieskończonej wydajności, nieśmiertelności i jednorożce. Podczas gdy zwykle masz na myśli, że jest to miejsce, w którym dane są przechowywane i pobierane, bez żadnych gwarancji co do faktycznej realizacji, bez względu na to, czy jest relacyjna czy nie, lub czy możesz sam stworzyć taką rzecz, gdy się nudzisz w niedzielne popołudnie.
Przyznam, że kulę się, gdy ludzie mówią o relacyjnej bazie danych i nazywają pola wierszy „rekordami” lub kolumnami „polami”. Ale choć trochę mnie to denerwuje, nie denerwuję się i nie robię nic, aby je poprawić - o co chodzi? Zrozumiałem, co mieli na myśli, nawet jeśli nie są w 100% dokładne.
źródło
Może być bardzo ogólny, po prostu zbiór danych i struktur. System zarządzania bazą danych może być tak prosty jak system plików lub tak złożony jak system stowarzyszony, taki jak DNS.
Zasadniczo we współczesnym użyciu, gdy mówi się o bazie danych, sugeruje się zarówno przechowywanie danych, jak i struktury i towarzyszący mu system zarządzania bazami danych, a ponieważ tyle pracy teoretycznej wykonano na podstawach relacyjnych baz danych, są one nadal najbardziej popularne, więc że często, gdy mówi się o bazie danych, często sugeruje się relacyjną bazą danych.
Wraz z pojawieniem się NoSQL / nierelacyjnych baz danych termin baza danych wrócił do bardziej ogólnych i potencjalnie bardziej niejednoznacznych, ponieważ nie można założyć wspólnego modelu zrozumienia danych.
Przed założeniem teorii relacyjnej modelowanie danych w innych systemach różniło się w zależności od systemu i nie miało wspólnych zasad przewodnich, podobnie jak model relacyjny - zastosowano inne rodzaje baz danych, takie jak bazy hierarchiczne i sieciowe.
źródło
Pracowałem dla Ashton-Tate podczas opracowywania dBASE Direct / 36 i dBASE IV, wykorzystując swoją wiedzę na temat dBASE III Plus do kodowania małego programu, który pomaga w testowaniu dBASE Direct / 36 (interfejs do mini komputera IBM System / 36). Musieliśmy wykonać binarne instrukcje ładowania i wywoływania w tabelach SQL System / 36, co wymagało powtarzalnego wpisywania tych samych instrukcji „load” i „call” przy zmianie nazw tabel i nazw pól po przesłaniu, aby uzyskać dane z każdego rekordu lub grupa kilku rekordów w zależności od zakresu zapytania. dBASE III Plus, język programowania bazy danych, pozwolił mi utworzyć plik „dbldot.prg”, który zmienił monit pojedynczej kropki na podwójną kropkę, ponieważ zaprojektowałem, aby wskazywać, że system był w trybie pobierania SQL, a także tekst poniżej wiersza polecenia z napisem „
W tamtym czasie dBASE był językiem programowania baz danych, a ściślej językiem programu, który umożliwiał manipulowanie rekordami danych. Rekord był grupą pól zawierających dane dla pojedynczego elementu, na przykład osoby LAST_NAME, FIRST_NAME, ADRES, CITY, ST, ZIP, PLUS_FOUR, SSN itp. Struktury te zostały później przedstawione w tabelach i uporządkowane w wiersze i kolumny, wiersz jest pojedynczym rekordem, a kolumna stanowi dane w serii rekordów dla każdej nazwy pola. W ten sposób użytkownik może łatwo sortować według nazwy pola, aby sortować i grupować rekordy według określonych wspólnych pól, takich jak CITY, ST, ZIP itp.
Język dBASE pozwalał użytkownikowi lub programistom manipulować danymi, przeprowadzać sortowania, wyświetlać tabele, rekordy i wykonywać obliczenia (Y2K był daleko, ale daty musiały zostać przekonwertowane na RRRRMMDD w celu posortowania wprowadzonych danych MM-DD-RRRR, co można zrobić za pomocą DtoC i CtoD (data do postaci, postać do daty)). Bez języka dBASE pliki danych byłyby po prostu serią rekordów (wierszy) ze wspólnymi polami (kolumnami).
Relacyjna baza danych - był to termin używany do odsyłania do więcej niż jednej bazy danych (tabeli) z inną, która zawierała inne informacje, ale zawierała jedno lub więcej wspólnych pól. Na przykład baza danych zatytułowana „Adresy” zawiera „LNAME”, „FNAME”, „ADRES”, „CITY”, „ST”, „ZIP”, „SSN”. Inna baza danych zatytułowana „SPRAWDZANIE” zawiera „ACCOUNT_NO”, „ROUTING_NO”, „CUSTLAST”, „CUSTFIRST”, „DOB”, „SSNO”, „CUST_NO”. Chociaż nazwy pól są różne, kilka z nich zawiera te same informacje, które można połączyć ze sobą, aby powiązać dane z jednej bazy danych z danymi z drugiej, aby np. Wysłać wyciągi do klientów banku, używając pól imienia i nazwiska oraz numerów SS do powiązania danych, wyciągając adres klienta z jednej bazy danych i informacje o koncie, które mają zostać umieszczone w wyciągu z drugiej. Następnie na większą skalę może wystąpić funkcja korespondencji seryjnej, aby wykonać te czynności na każdym indywidualnym kliencie w bazie danych ADRES, wyciągając powiązane informacje o koncie każdego klienta, personalizując wyciąg, drukując i adresując każdego przed przejściem do następnego rekord lub klienta w bazie danych.
Tak więc coś w rodzaju MS ACCESS może być bardziej DBMS, ale na poziomie podstawowym dBASE był językiem do tworzenia interfejsów użytkownika frontonu i przeprowadzania wszystkich operacji na danych między bazami danych w celu utworzenia relacji między nimi i zwrócenia danych wynikowych dla my zwykli ludzie używamy.
Od tego czasu wiele się zmieniło, ale podstawa pozostaje ta sama. Dane są nadal zawarte w rekordach zawierających serię pól różnych typów danych i muszą być powiązane i połączone z danymi innych baz danych za pomocą jednego lub więcej wspólnych punktów danych, umożliwiając nam korzystanie z kart kredytowych, zakładanie kont w Internecie za pomocą naszych identyfikatorów Google, Facebook, Twitter, śledzenia historii zakupów i tak dalej. Nasze życie to tylko seria wielu nakładających się relacyjnych baz danych, które przeglądamy codziennie, nie myśląc o wszystkich bitach i bajtach, które oddziałują na nas, aby zapewnić nam przyjemności i ciągłą ewolucję łatwości w naszym dzisiejszym życiu.
W leasingu zawsze tak rozumiałem te wieloletnie testy oprogramowania i sprzętu, które rozpoczęły się od dBASE II w 1984 roku.
źródło
Artykuł Codala zatytułowany Relacyjny model danych dla dużych wspólnych banków danych . To, co nazwał „bankiem danych”, nazwalibyśmy bazą danych.
Lubię jednak jego zdjęcia. Oznacza miejsce, w którym można umieścić dane, wiedząc, że będą one bezpieczne, właściwie rozliczone i zwrócone tylko tym, którzy mogą wykazać, że mają prawo dostępu do nich. Jeśli nasz oddział zostanie okradziony, mamy pewność, że firma bankowa ma odpowiednie wsparcie, aby zapewnić, że nasze cenne zasoby nie zostaną nieodwracalnie utracone.
źródło
Z podstaw projektowania bazy danych, wydanie 7. (str. 5),
Mówią dalej, że wspólne użycie jest bardziej ograniczone,
W żadnej definicji baza danych nie jest wyraźnie „relacyjna” w żadnym sensie, jednak często się jej zakłada, ponieważ branża jest nasycona DBA jednego określonego typu i prawdopodobnie najbardziej zaawansowane oprogramowanie DBMS jest relacyjne. Ze słownika relacyjnych baz danych
Ta ostatnia kwestia jest nieco ważna i podoba mi się również rozróżnienie między DBMS / RDBMS a samą bazą danych.
źródło