Baza danych zorientowana na dokumenty - Document-oriented database

Bazie dokument zorientowanych lub przechowywać dokument , to program komputerowy System i przechowywania danych przeznaczone do przechowywania, pobierania i zarządzania informacjami dokument zorientowanych, znany również jako danych pół-strukturalnego .

Bazy danych zorientowane na dokumenty są jedną z głównych kategorii baz danych NoSQL , a popularność terminu „baza danych zorientowana na dokumenty” wzrosła wraz z użyciem samego terminu NoSQL. Bazy danych XML to podklasa baz danych zorientowanych na dokumenty, które są zoptymalizowane do pracy z dokumentami XML . Bazy danych grafów są podobne, ale dodają kolejną warstwę, relację , która umożliwia im łączenie dokumentów w celu szybkiego przechodzenia.

Bazy danych zorientowane na dokumenty są z natury podklasą magazynu klucz-wartość , kolejną koncepcją bazy danych NoSQL. Różnica polega na sposobie przetwarzania danych; w magazynie klucz-wartość dane są uważane za z natury nieprzejrzyste dla bazy danych, podczas gdy system zorientowany na dokument opiera się na wewnętrznej strukturze dokumentu w celu wyodrębnienia metadanych, które silnik bazy danych wykorzystuje do dalszej optymalizacji. Chociaż różnica jest często nieistotna ze względu na narzędzia w systemach, koncepcyjnie magazyn dokumentów jest zaprojektowany tak, aby oferować bogatsze doświadczenia z nowoczesnymi technikami programowania.

Bazy danych dokumentów silnie kontrastują z tradycyjną relacyjną bazą danych (RDB). Relacyjne bazy danych zazwyczaj przechowują dane w oddzielnych tabelach, które są zdefiniowane przez programistę, a pojedynczy obiekt może być rozłożony na kilka tabel. Bazy danych dokumentów przechowują wszystkie informacje dotyczące danego obiektu w jednym wystąpieniu w bazie danych, a każdy przechowywany obiekt może się różnić od siebie. Eliminuje to potrzebę mapowania obiektowo-relacyjnego podczas ładowania danych do bazy danych.

Dokumenty

Centralną koncepcją bazy danych zorientowanej na dokumenty jest pojęcie dokumentu . Chociaż każda implementacja bazy danych zorientowanej na dokumenty różni się w szczegółach tej definicji, ogólnie rzecz biorąc, wszystkie one zakładają, że dokumenty zawierają i kodują dane (lub informacje) w jakimś standardowym formacie lub kodowaniu. Stosowane kodowania obejmują XML , YAML , JSON , a także formy binarne, takie jak BSON .

Dokumenty w magazynie dokumentów są z grubsza równoważne koncepcji programistycznej obiektu. Nie muszą być zgodne ze standardowym schematem ani nie będą miały tych samych sekcji, gniazd, części lub kluczy. Ogólnie programy używające obiektów mają wiele różnych typów obiektów, a te obiekty często mają wiele opcjonalnych pól. Każdy przedmiot, nawet tej samej klasy, może wyglądać zupełnie inaczej. Magazyny dokumentów są podobne pod tym względem, że pozwalają na różne typy dokumentów w jednym sklepie, pozwalają na opcjonalne pola w nich i często umożliwiają ich kodowanie przy użyciu różnych systemów kodowania. Na przykład poniżej znajduje się dokument zakodowany w formacie JSON:

{
    "FirstName": "Bob", 
    "Address": "5 Oak St.", 
    "Hobby": "sailing"
}

Drugi dokument może być zakodowany w XML jako:

  <contact>
    <firstname>Bob</firstname>
    <lastname>Smith</lastname>
    <phone type="Cell">(123) 555-0178</phone>
    <phone type="Work">(890) 555-0133</phone>
    <address>
      <type>Home</type>
      <street1>123 Back St.</street1>
      <city>Boys</city>
      <state>AR</state>
      <zip>32225</zip>
      <country>US</country>
    </address>
  </contact>

Te dwa dokumenty mają ze sobą pewne elementy strukturalne, ale każdy z nich zawiera również unikalne elementy. Struktura i tekst i inne dane wewnątrz dokumentu są zwykle określane jako dokumentu treści i może być określany poprzez metod pobierania lub edycji (patrz niżej). W przeciwieństwie do relacyjnej bazy danych, w której każdy rekord zawiera te same pola, pozostawiając nieużywane pola puste; w powyższym przykładzie nie ma pustych „pól” w żadnym dokumencie (rekordu). Takie podejście umożliwia dodawanie nowych informacji do niektórych rekordów bez wymagania, aby każdy inny rekord w bazie danych miał tę samą strukturę.

Bazy danych dokumentów zazwyczaj zawierają dodatkowe metadane, które mają być skojarzone i przechowywane wraz z treścią dokumentu. Te metadane mogą być powiązane z obiektami, które magazyn danych zapewnia do organizowania dokumentów, zapewniania bezpieczeństwa lub innych cech charakterystycznych dla implementacji.

operacje CRUD

Podstawowe operacje obsługiwane przez bazę danych zorientowaną na dokumenty są podobne do innych baz danych i chociaż terminologia nie jest idealnie ustandaryzowana, większość praktyków rozpozna je jako CRUD :

  • Tworzenie (lub wstawianie)
  • Pobieranie (lub zapytanie, wyszukiwanie, czytanie lub znajdowanie)
  • Aktualizuj (lub edytuj)
  • Usunięcie (lub usunięcie)

Klucze

Dokumenty są adresowane w bazie danych za pomocą unikalnego klucza, który reprezentuje ten dokument. Ten klucz jest prostym identyfikatorem (lub identyfikatorem), zazwyczaj string , identyfikatorem URI lub ścieżką . Klucz może być użyty do pobrania dokumentu z bazy danych. Zazwyczaj baza danych przechowuje indeks w kluczu, aby przyspieszyć pobieranie dokumentu, aw niektórych przypadkach klucz jest wymagany do utworzenia lub wstawienia dokumentu do bazy danych.

Wyszukiwanie

Inną cechą charakterystyczną bazy danych zorientowanej na dokumenty jest to, że poza prostym wyszukiwaniem typu klucz-dokument, którego można użyć do pobrania dokumentu, baza danych oferuje interfejs API lub język zapytań, który umożliwia użytkownikowi pobieranie dokumentów na podstawie treści (lub metadane). Na przykład możesz potrzebować zapytania, które pobiera wszystkie dokumenty z określonym polem ustawionym na określoną wartość. Zestaw dostępnych interfejsów API zapytań lub funkcji języka zapytań, a także oczekiwana wydajność zapytań różni się znacznie w zależności od implementacji. Podobnie określony zestaw opcji indeksowania i dostępnych konfiguracji różni się znacznie w zależności od implementacji.

To tutaj magazyn dokumentów różni się najbardziej od magazynu klucz-wartość. Teoretycznie wartości w sklepie typu klucz-wartość są dla niego nieprzezroczyste, zasadniczo są czarnymi skrzynkami. Mogą oferować systemy wyszukiwania podobne do tych z magazynu dokumentów, ale mogą mieć mniejszą wiedzę na temat organizacji treści. Magazyny dokumentów wykorzystują metadane w dokumencie do klasyfikowania treści, pozwalając im na przykład zrozumieć, że jedna seria cyfr to numer telefonu, a druga to kod pocztowy. Dzięki temu mogą przeszukiwać tego typu dane, na przykład wszystkie numery telefonów zawierające 555, które zignorowałyby kod pocztowy 55555.

Redagowanie

Bazy danych dokumentów zazwyczaj zapewniają pewien mechanizm aktualizacji lub edycji zawartości (lub metadanych) dokumentu, umożliwiając zastąpienie całego dokumentu lub poszczególnych elementów strukturalnych dokumentu.

Organizacja

Implementacje baz danych dokumentów oferują różne sposoby organizowania dokumentów, w tym pojęcia

  • Kolekcje: grupy dokumentów, gdzie w zależności od implementacji, dokument może być zmuszony do zamieszkania w jednej kolekcji lub może być dopuszczony do zamieszkania w wielu kolekcjach
  • Tagi i niewidoczne metadane: dodatkowe dane poza treścią dokumentu
  • Hierarchie katalogów: grupy dokumentów zorganizowane w strukturę podobną do drzewa, zazwyczaj oparte na ścieżce lub identyfikatorze URI

Czasami te pojęcia organizacyjne różnią się tym, jak bardzo są logiczne i fizyczne (np. na dysku lub w pamięci), reprezentacje.

Związek z innymi bazami danych

Związek ze sklepami typu klucz-wartość

Zorientowana na dokumenty baza danych to wyspecjalizowany magazyn klucz-wartość , który sam w sobie jest kolejną kategorią baz danych NoSQL. W prostym magazynie klucz-wartość treść dokumentu jest nieprzezroczysta. Baza danych zorientowana na dokumenty udostępnia interfejsy API lub język zapytań/aktualizacji, który udostępnia możliwość wysyłania zapytań lub aktualizacji na podstawie wewnętrznej struktury dokumentu . Ta różnica może być niewielka w przypadku użytkowników, którzy nie potrzebują bogatszych interfejsów API zapytań, pobierania lub edytowania, które są zwykle dostarczane przez bazy danych dokumentów. Nowoczesne magazyny klucz-wartość często zawierają funkcje do pracy z metadanymi, zacierając granice między magazynami dokumentów.

Związek z wyszukiwarkami

Niektóre systemy wyszukiwarek (czyli odzyskiwanie informacji ), takie jak Elasticsearch, zapewniają wystarczającą liczbę podstawowych operacji na dokumentach, aby pasowały do ​​definicji bazy danych zorientowanej na dokumenty.

Związek z relacyjnymi bazami danych

W relacyjnej bazie danych dane są najpierw kategoryzowane na kilka predefiniowanych typów, a tabele są tworzone w celu przechowywania pojedynczych wpisów lub rekordów każdego typu. Tabele definiują dane w polach każdego rekordu , co oznacza, że ​​każdy rekord w tabeli ma taką samą ogólną formę. Administrator definiuje również relacje między tabelami i wybiera określone pola, które według niego będą najczęściej używane do wyszukiwania, oraz definiuje na nich indeksy . Kluczową koncepcją w projekcie relacyjnym jest to, że wszelkie dane, które mogą się powtarzać, są zwykle umieszczane we własnej tabeli, a jeśli te wystąpienia są ze sobą powiązane, wybierana jest kolumna, aby je pogrupować, klucz obcy . Ten projekt jest znany jako normalizacja bazy danych .

Na przykład, aplikacja książki adresowej będzie zazwyczaj musiała przechowywać nazwę kontaktu, opcjonalny obraz, jeden lub więcej numerów telefonów, jeden lub więcej adresów pocztowych i jeden lub więcej adresów e-mail. W kanonicznej relacyjnej bazie danych dla każdego z tych wierszy zostaną utworzone tabele z predefiniowanymi polami dla każdego bitu danych: tabela CONTACT może zawierać kolumny FIRST_NAME, LAST_NAME i IMAGE, natomiast tabela PHONE_NUMBER może zawierać COUNTRY_CODE, AREA_CODE, PHONE_NUMBER i TYPE ( dom, praca itp.). Tabela PHONE_NUMBER zawiera również kolumnę klucza obcego „CONTACT_ID”, która zawiera unikalny numer identyfikacyjny przypisany do kontaktu podczas jego tworzenia. W celu odtworzenia oryginalnego kontaktu silnik bazy danych używa kluczy obcych do wyszukiwania powiązanych elementów w grupie tabel i rekonstrukcji oryginalnych danych.

W przeciwieństwie do tego, w bazie danych zorientowanej na dokumenty może nie istnieć wewnętrzna struktura, która odwzorowuje się bezpośrednio na pojęcie tabeli, a pola i relacje na ogół nie istnieją jako wstępnie zdefiniowane pojęcia. Zamiast tego wszystkie dane obiektu są umieszczane w jednym dokumencie i przechowywane w bazie danych jako pojedynczy wpis. W przykładzie książki adresowej dokument zawierałby imię i nazwisko kontaktu, obraz i wszelkie informacje kontaktowe w jednym rekordzie. Dostęp do tego wpisu uzyskuje się poprzez jego klucz, który umożliwia bazie danych pobranie i zwrócenie dokumentu do aplikacji. Pobieranie powiązanych danych nie wymaga dodatkowej pracy; wszystko to zwracane jest w jednym obiekcie.

Kluczowa różnica między modelami zorientowanymi na dokument a modelami relacyjnymi polega na tym, że formaty danych nie są predefiniowane w przypadku dokumentów. W większości przypadków każdy rodzaj dokumentu może być przechowywany w dowolnej bazie danych, a dokumenty te mogą w dowolnym momencie zmienić rodzaj i formę. Jeśli ktoś chce dodać FLAGA_KRAJU do KONTAKTU, to pole można dodać do nowych dokumentów w miarę ich wstawiania, nie będzie to miało wpływu na bazę danych ani na istniejące już dokumenty. Aby ułatwić pobieranie informacji z bazy danych, systemy zorientowane na dokumenty zazwyczaj pozwalają administratorowi na dostarczanie do bazy danych wskazówek w celu wyszukania określonych typów informacji. Działają one podobnie do indeksów w przypadku relacyjnym. Większość oferuje również możliwość dodawania dodatkowych metadanych poza treścią samego dokumentu, na przykład oznaczanie wpisów jako części książki adresowej, co pozwala programiście na pobieranie powiązanych typów informacji, takich jak „wszystkie wpisy książki adresowej” . Zapewnia to funkcjonalność podobną do tabeli, ale oddziela pojęcie (kategorie danych) od jego fizycznej realizacji (tabele).

W klasycznym znormalizowanym modelu relacyjnym obiekty w bazie danych są reprezentowane jako oddzielne wiersze danych bez własnej struktury poza tą, która została im nadana podczas pobierania. Prowadzi to do problemów podczas próby tłumaczenia obiektów programistycznych do iz ich skojarzonych wierszy bazy danych, problem znany jako niezgodność impedancji obiektowo-relacyjnej . Magazyny dokumentów bliżej, lub w niektórych przypadkach bezpośrednio, mapują obiekty programistyczne do magazynu. Są one często sprzedawane pod nazwą NoSQL .

Realizacje

Nazwa Wydawca Licencja Obsługiwane języki Uwagi RESTful API
Aerospike Aerospike AGPL i własnościowe C , .NET , Java , Scala , Python , Node.js , PHP , Go , Rust , Spring Framework Aerospike to zoptymalizowana pod kątem pamięci flash i rozproszona w pamięci baza danych NoSQL, która obsługuje również model magazynu dokumentów. tak
AllegroWykres Franz, Inc. Prawnie zastrzeżony Java , Python , Common Lisp , Ruby , Scala , .NET , Perl Platforma bazodanowa obsługuje magazyny dokumentów i modele danych wykresów w jednej bazie danych. Obsługuje JSON , JSON-LD , RDF , wyszukiwanie pełnotekstowe , ACID , zatwierdzanie dwufazowe , Multi-Master Replication , Prolog i SPARQL . tak
ArangoDB ArangoDB Licencja Apache C , .NET , Java , Python , Node.js , PHP , Scala , Go , Ruby , Elixir System baz danych obsługuje magazyn dokumentów, a także modele danych typu klucz/wartość i wykresy z jednym rdzeniem bazy danych i zunifikowanym językiem zapytań AQL (ArangoDB Query Language). tak
BazaX Zespół BaseX Licencja BSD Java , XQuery Wsparcie dla formatów XML, JSON i binarnych; architektura oparta na kliencie/serwerze; jednoczesne wyszukiwanie i aktualizacje strukturalne i pełnotekstowe. tak
Pamięć podręczna InterSystems Corporation Prawnie zastrzeżony Java , C# , Node.js Powszechnie używany w aplikacjach zdrowotnych, biznesowych i rządowych. tak
Chmurnik Chmury, Inc. Prawnie zastrzeżony Erlang , Java , Scala i C Ukazuje usługi bazy danych na podstawie BigCouch , firmy open source widelec z Apache -backed couchdb projektu. Używa modelu JSON. tak
Baza danych Clusterpoint Clusterpoint Sp. Zastrzeżony z bezpłatnym pobieraniem JavaScript , SQL , PHP , .NET , Java , Python , Node.js , C , C++ , Rozproszona platforma bazodanowa XML/JSON zorientowana na dokumenty z transakcjami zgodnymi z ACID ; replikacja i sharding danych o wysokiej dostępności ; wbudowana wyszukiwarka pełnotekstowa z rankingiem trafności ; język zapytań JS/SQL ; GIS ; Dostępna jako baza danych pay-per-use jako usługa lub jako lokalne bezpłatne oprogramowanie do pobrania. tak
Serwer Couchbase Couchbase, Inc. Licencja Apache C , .NET , Java , Python , Node.js , PHP , SQL , Go , Spring Framework , LINQ Rozproszona baza danych dokumentów NoSQL, model JSON i język zapytań oparty na SQL. tak
CouchDB Apache Software Foundation Licencja Apache Dowolny język, który może wysyłać żądania HTTP JSON przez REST/HTTP z wielowersyjną kontrolą współbieżności i ograniczonymi właściwościami ACID . Używa map i redukcji dla widoków i zapytań. tak
CrateIO CRATE Technology GmbH Licencja Apache Jawa Używaj znanej składni SQL dla zapytań rozproszonych w czasie rzeczywistym w klastrze. Oparty na ekosystemie Lucene / Elasticsearch z wbudowaną obsługą obiektów binarnych (BLOB). tak
Kosmos DB Microsoft Prawnie zastrzeżony .NET , Java , Python , Node.js , JavaScript , SQL Oferta platformy jako usługi, wchodząca w skład platformy Microsoft Azure . Kompiluje i rozszerza wcześniejszą bazę Azure DocumentDB. tak
Baza dokumentów Usługi internetowe Amazon Zastrzeżona usługa online różne, ODPOCZYNEK w pełni zarządzana usługa bazy danych zgodna z MongoDB v3.6 tak
Elastyczne wyszukiwanie Shay Banon Podwójna licencja w ramach licencji publicznej po stronie serwera i licencji elastycznej. Jawa JSON , wyszukiwarka. tak
istnieć istnieć LGPL XQuery , Java XML przez REST/HTTP, WebDAV, wyszukiwanie pełnotekstowe Lucene, obsługa danych binarnych, walidacja, wersjonowanie, klastrowanie, wyzwalacze, przepisywanie adresów URL, kolekcje, ACLS, XQuery Update tak
Informix IBM Zastrzeżony, z bezpłatnymi wydaniami Różne (zgodne z MongoDB API) RDBMS z JSON, replikacją, shardingiem i zgodnością z ACID. tak
Jackrabbit Fundacja Apache Licencja Apache Jawa Implementacja repozytorium treści Java ?
Notatki HCL ( HCL Domino ) HCL Prawnie zastrzeżony LotusScript , Java , język formuły notatek Wielowartościowe tak
MarkLogic MarkLogic Corporation Bezpłatna licencja programisty lub komercyjna Java , JavaScript , Node.js , XQuery , SPARQL , XSLT , C++ Rozproszona baza danych zorientowana na dokumenty dla trójek JSON, XML i RDF . Wbudowane wyszukiwanie pełnotekstowe , transakcje ACID , wysoka dostępność i odzyskiwanie po awarii , certyfikowane zabezpieczenia. tak
MongoDB MongoDB, Inc Licencja publiczna po stronie serwera dla systemu DBMS, licencja Apache 2 dla sterowników klienckich C , C++ , C# , Java , Perl , PHP , Python , Go , Node.js , Ruby , Rust , Scala Baza dokumentów z replikacją i shardingiem, magazyn BSON (format binarny JSON ). tak
Baza danych świnki ? Zastrzeżone i Affero GPL ŚWINKA Powszechnie używany w zastosowaniach zdrowotnych. ?
ObjectDatabase++ Oprogramowanie Ekky Prawnie zastrzeżony C++ , C# , TScript Binarne struktury klas natywnych C++ ?
Wirtuoz OpenLink Oprogramowanie OpenLink GPLv2[1] i własnościowe C++ , C# , Java , SPARQL Hybryda oprogramowania pośredniego i silnika bazy danych tak
OrientDB Technologie Orientu Licencja Apache Jawa JSON przez HTTP, obsługa SQL, transakcje ACID tak
Baza danych Oracle NoSQL Wyrocznia Apache i zastrzeżone C, C#, Java, Python, node.js, Go Nic nie współużytkowana, poziomo skalowalna baza danych z obsługą formatu JSON bez schematu, stałych tabel schematów i par klucz/wartość. Obsługuje również transakcje ACID. tak
Qizx Qualcomm Prawnie zastrzeżony REST , Java , XQuery , XSLT , C , C++ , Python Rozproszona, zorientowana na dokumenty baza danych XML ze zintegrowanym wyszukiwaniem pełnotekstowym ; obsługa JSON , tekstu i plików binarnych. tak
Przemyśl DB ? Licencja Apache C++ , Python , JavaScript , Ruby , Java Rozproszona baza danych JSON zorientowana na dokumenty z replikacją i shardingiem. Nie
SAP HANA SOK ROŚLINNY Prawnie zastrzeżony Język podobny do SQL Obsługa transakcji ACID , tylko JSON tak
Sedna sedna.org Licencja Apache C++ , XQuery Baza danych XML Nie
SimpleDB Usługi internetowe Amazon Zastrzeżona usługa online Erlang ?
Solr Apache Licencja Apache Jawa Wyszukiwarka tak
TokuMX Tokutek Powszechna Licencja Publiczna GNU Affero C++ , C# , Idź MongoDB z indeksowaniem drzewa fraktalnego ?

Implementacje baz danych XML

Większość baz danych XML to bazy danych zorientowane na dokumenty.

Zobacz też

Uwagi

Bibliografia

Dalsza lektura


Zewnętrzne linki