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.