Dokumentově orientovaná databáze - Document-oriented database - Wikipedia
![]() | tento článek příliš spoléhá na Reference na primární zdroje.Květen 2012) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
A dokumentově orientovaná databázenebo obchod s dokumenty, je počítačový program a systém pro ukládání dat navržený pro ukládání, načítání a správu informací orientovaných na dokumenty, také známý jako polostrukturovaná data.[1]
Dokumentově orientované databáze jsou jednou z hlavních kategorií NoSQL databáze a popularita výrazu „dokumentově orientovaná databáze“ vzrostla[2] s použitím samotného termínu NoSQL. XML databáze jsou podtřídou databází orientovaných na dokumenty, které jsou optimalizovány pro práci XML dokumenty. Grafové databáze jsou podobné, ale přidat další vrstvu, vztah, což jim umožňuje propojovat dokumenty pro rychlé procházení.
Databáze orientované na dokumenty jsou ze své podstaty podtřídou úložiště klíč – hodnota, další koncept databáze NoSQL. Rozdíl spočívá ve způsobu zpracování údajů; v úložišti klíč – hodnota jsou data považována za inherentně neprůhledná pro databázi, zatímco systém orientovaný na dokumenty spoléhá na vnitřní strukturu v dokument za účelem extrakce metadata které databázový stroj používá pro další optimalizaci. I když je rozdíl kvůli nástrojům v systémech často zanedbatelný,[A] koncepčně je dokumentový obchod navržen tak, aby nabízel bohatší zkušenosti s moderními programovacími technikami.
Databáze dokumentů[b] silně kontrastuje s tradičním relační databáze (RDB). Relační databáze obvykle ukládají data v samostatných tabulky které jsou definovány programátorem a jeden objekt může být rozložen do několika tabulek. Databáze dokumentů ukládají všechny informace o daném objektu v jedné instanci v databázi a každý uložený objekt se může lišit od ostatních. To eliminuje potřebu objektově-relační mapování při načítání dat do databáze.
Dokumenty
Ústředním konceptem databáze orientované na dokumenty je pojem a dokument. I když se každá implementace databáze orientované na dokumenty liší v podrobnostech této definice, obecně předpokládají, že dokumenty zapouzdřují a kódují data (nebo informace) v nějakém standardním formátu nebo kódování. Používané kódování zahrnuje XML, YAML, JSON, stejně jako binární formy jako BSON.
Dokumenty v úložišti dokumentů jsou zhruba ekvivalentní konceptu programování objektu. Nepožaduje se od nich dodržování standardního schématu, ani nebudou mít stejné sekce, sloty, části nebo klíče. Obecně platí, že programy používající objekty mají mnoho různých typů objektů a tyto objekty mají často mnoho volitelných polí. Každý objekt, dokonce i objekty stejné třídy, mohou vypadat velmi odlišně. Úložiště dokumentů jsou podobné v tom, že umožňují různé typy dokumentů v jednom obchodě, umožňují volitelnost polí v nich a často umožňují jejich kódování pomocí různých kódovacích systémů. Například následující je dokument zakódovaný v JSON:
{ "Jméno": „Bob“, "Adresa": „5 Oak St.“, "Hobby": "plachtění"}
Druhý dokument může být kódován v XML jako:
<contact> <firstname>Bob</firstname> <lastname>Kovář</lastname> zadejte ="Buňka">(123) 555-0178</phone> zadejte ="Práce">(890) 555-0133</phone> <address> <type>Domov</type> <street1>123 Back St.</street1> <city>Chlapci</city> <state>AR</state> <zip>32225</zip> <country>NÁS</country> </address> </contact>
Tyto dva dokumenty sdílejí některé konstrukční prvky navzájem, ale každý má také jedinečné prvky. Struktura, text a další data uvnitř dokumentu se obvykle označují jako dokumenty obsah a lze na ně odkazovat pomocí metod vyhledávání nebo úpravy (viz níže). Na rozdíl od relační databáze, kde každý záznam obsahuje stejná pole, takže nevyužitá pole jsou prázdná; ve výše uvedeném příkladu nejsou v žádném dokumentu (záznamu) žádná prázdná „pole“. Tento přístup umožňuje přidávat nové informace k některým záznamům, aniž by bylo nutné, aby každý další záznam v databázi sdílel stejnou strukturu.
Databáze dokumentů obvykle poskytují další metadata být přidružen a uložen spolu s obsahem dokumentu. Tato metadata mohou souviset s vybavením, které datové úložiště poskytuje pro organizaci dokumentů, zajišťování zabezpečení nebo jiné funkce specifické pro implementaci.
Operace CRUD
Základní operace, které dokumentově orientovaná databáze pro dokumenty podporuje, jsou podobné ostatním databázím, a přestože terminologie není dokonale standardizovaná, většina odborníků je rozpozná jako CRUD:
- Vytvoření (nebo vložení)
- Načítání (nebo dotaz, vyhledávání, čtení nebo hledání)
- Aktualizovat (nebo upravit)
- Odstranění (nebo odstranění)
Klíče
Dokumenty jsou v databázi adresovány prostřednictvím jedinečného klíč který představuje daný dokument. Tento klíč je jednoduchý identifikátor (nebo ID), obvykle a tětiva, a URI nebo cesta. Klíč lze použít k načtení dokumentu z databáze. Databáze si obvykle zachovává index na klíči k urychlení načítání dokumentu a v některých případech je klíč nutný k vytvoření nebo vložení dokumentu do databáze.
Načítání
Další definující charakteristikou databáze orientované na dokumenty je, že kromě jednoduchého vyhledávání klíčů k dokumentům, které lze použít k načtení dokumentu, nabízí databáze rozhraní API nebo dotazovací jazyk, který uživateli umožňuje načítat dokumenty na základě obsahu (nebo metadata). Můžete například chtít dotaz, který načte všechny dokumenty s určitým polem nastaveným na určitou hodnotu. Sada dotazovacích API nebo dostupných jazykových funkcí dotazu, stejně jako očekávaný výkon dotazů, se u jednotlivých implementací výrazně liší. Podobně se specifická sada možností indexování a konfigurace, které jsou k dispozici, značně liší podle implementace.
Právě zde se úložiště dokumentů liší od úložiště klíč – hodnota. Teoreticky jsou hodnoty v úložišti klíč – hodnota pro obchod neprůhledné, jedná se v podstatě o černé skříňky. Mohou nabízet vyhledávací systémy podobné těm v obchodě s dokumenty, ale mohou mít menší pochopení pro organizaci obsahu. Úložiště dokumentů používají ke klasifikaci obsahu metadata v dokumentu a umožňují jim například pochopit, že jedna řada číslic je telefonní číslo a další je poštovní směrovací číslo. To jim umožňuje vyhledávat na těchto typech dat, například na všech telefonních číslech obsahujících 555, která by ignorovala PSČ 55555.
Úpravy
Databáze dokumentů obvykle poskytují určitý mechanismus pro aktualizaci nebo úpravy obsahu (nebo jiných metadat) dokumentu, a to buď tak, že umožňuje nahrazení celého dokumentu nebo jednotlivých strukturálních částí dokumentu.
Organizace
Implementace databáze dokumentů nabízejí celou řadu způsobů uspořádání dokumentů, včetně pojmů
- Kolekce: skupiny dokumentů, kde v závislosti na implementaci může být dokument vynucen, aby žil v jedné kolekci, nebo může být povoleno žít ve více kolekcích
- Značky a neviditelná metadata: další data mimo obsah dokumentu
- Hierarchie adresářů: skupiny dokumentů uspořádané do stromové struktury, obvykle založené na cestě nebo identifikátoru URI
Někdy se tyto organizační představy liší v tom, do jaké míry jsou logické a fyzické (např. Na disku nebo v paměti) reprezentace.
Vztah k jiným databázím
Vztah k obchodům klíč – hodnota
Dokumentově orientovaná databáze je specializovaná úložiště klíč – hodnota, což je samo o sobě další kategorií databází NoSQL. V jednoduchém úložišti klíč – hodnota je obsah dokumentu neprůhledný. Databáze orientovaná na dokumenty poskytuje rozhraní API nebo jazyk dotazu / aktualizace, který odhaluje schopnost dotazovat se nebo aktualizovat na základě vnitřní struktury v dokument. Tento rozdíl může být menší pro uživatele, kteří nepotřebují bohatší dotaz, načítání nebo úpravy API, které obvykle poskytují databáze dokumentů. Moderní úložiště klíč – hodnota často obsahují funkce pro práci s metadaty, které stírají čáry mezi úložišti dokumentů.
Vztah k vyhledávačům
Některé vyhledávače (aka vyhledávání informací ) systémy jako Elasticsearch poskytnout dostatek základních operací s dokumenty tak, aby odpovídaly definici databáze orientované na dokumenty.
Vztah k relačním databázím
![]() | Tato část může vyžadovat vyčištění setkat se s Wikipedií standardy kvality. Specifický problém je: „Vyžaduje vyčištění“Červenec 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
V relační databázi jsou data nejprve kategorizována do několika předdefinovaných typů a tabulky jsou vytvořeny pro uložení jednotlivých záznamů, nebo evidence, každého typu. Tabulky definují data v každém záznamu pole, což znamená, že každý záznam v tabulce má stejnou celkovou podobu. Správce také definuje vztahy mezi tabulkami a vybere některá pole, o nichž se domnívají, že budou nejčastěji používána pro vyhledávání a definuje indexy na ně. Klíčovým konceptem v relačním návrhu je, že všechna data, která se mohou opakovat, se obvykle umisťují do vlastní tabulky, a pokud tyto instance spolu souvisejí, je vybrán sloupec, který je seskupí, cizí klíč. Tento design je znám jako normalizace databáze.[3]
Například aplikace adresáře bude obvykle muset ukládat jméno kontaktu, volitelný obrázek, jedno nebo více telefonních čísel, jednu nebo více poštovních adres a jednu nebo více e-mailových adres. V kanonické relační databázi by byly vytvořeny tabulky pro každý z těchto řádků s předdefinovanými poli pro každý bit dat: tabulka CONTACT může obsahovat sloupce FIRST_NAME, LAST_NAME a IMAGE, zatímco tabulka PHONE_NUMBER může obsahovat COUNTRY_CODE, AREA_CODE, PHONE_NUMBER a TYPE ( doma, v práci atd.). Tabulka PHONE_NUMBER také obsahuje sloupec cizího klíče „CONTACT_ID“, který obsahuje jedinečné identifikační číslo přidělené kontaktu při jeho vytvoření. Aby bylo možné znovu vytvořit původní kontakt, použije databázový stroj cizí klíče k vyhledání souvisejících položek ve skupině tabulek a k rekonstrukci původních dat.
Naproti tomu v dokumentově orientované databázi nemusí existovat žádná vnitřní struktura, která se mapuje přímo na koncept tabulky, a pole a vztahy obecně neexistují jako předdefinované koncepty. Místo toho jsou všechna data objektu umístěna do jednoho dokumentu a uložena v databázi jako jedna položka. V příkladu adresáře by dokument obsahoval jméno kontaktu, obrázek a veškeré kontaktní informace, vše v jednom záznamu. K této položce se přistupuje prostřednictvím jejího klíče, který umožňuje databázi načíst a vrátit dokument do aplikace. K načtení souvisejících dat není potřeba žádná další práce; to vše se vrací v jednom objektu.
Klíčovým rozdílem mezi dokumentově orientovanými a relačními modely je, že datové formáty nejsou v případě dokumentu předdefinovány. Ve většině případů lze jakýkoli druh dokumentu uložit do jakékoli databáze a tyto dokumenty se mohou kdykoli změnit v typu a formě. Pokud si přejete přidat COUNTRY_FLAG ke KONTAKTU, lze toto pole přidat do nových dokumentů při jejich vkládání, nebude to mít žádný vliv na databázi nebo existující dokumenty, které jsou již uloženy. Na pomoc při získávání informací z databáze systémy založené na dokumentech obecně umožňují poskytovateli rady do databáze hledat určité typy informací. Ty fungují podobným způsobem jako indexy v relačním případě. Většina také nabízí možnost přidávat další metadata mimo obsah samotného dokumentu, například označovat položky jako součást adresáře, což umožňuje programátorovi načítat související typy informací, například „všechny položky adresáře“ . To poskytuje funkce podobné tabulce, ale odděluje koncept (kategorie dat) od jeho fyzické implementace (tabulky).
V klasickém normalizovaném relačním modelu jsou objekty v databázi reprezentovány jako samostatné řádky dat bez vlastní struktury nad rámec, který jim byl dán při načítání. To vede k problémům při pokusu o překlad programovacích objektů do az jejich přidružených databázových řádků, což je problém známý jako nesoulad objektově-relační impedance.[4] Dokument ukládá těsněji nebo v některých případech přímo mapuje programovací objekty do úložiště. Ty jsou často uváděny na trh pomocí tohoto výrazu NoSQL.
Implementace
název | Vydavatel | Licence | Podporované jazyky | Poznámky | Klidný API |
---|---|---|---|---|---|
AllegroGraph | Franz, Inc. | Proprietární | Jáva, Krajta, Společný Lisp, Rubín, Scala, .SÍŤ, Perl | Databázová platforma podporuje datové modely pro ukládání dokumentů a grafů v jedné databázi. Podporuje JSON, JSON-LD, RDF, fulltextové vyhledávání, KYSELINA, dvoufázové potvrzení, Multi-Master replikace, Prolog a SPARQL. | Ano[5] |
ArangoDB | ArangoDB | Licence Apache | C, .SÍŤ, Jáva, Krajta, Node.js, PHP, Scala, Jít, Rubín, Elixír | Databázový systém podporuje ukládání dokumentů i datové modely klíč / hodnota a graf s jedním jádrem databáze a jednotným dotazovacím jazykem AQL (ArangoDB Query Language). | Ano[6] |
BaseX | Tým BaseX | Licence BSD | Jáva, XQuery | Podpora XML, JSON a binárních formátů; architektura klient / server; souběžné strukturální a fulltextové vyhledávání a aktualizace. | Ano |
Mezipaměti | InterSystems Korporace | Proprietární | Jáva, C#, Node.js | Běžně se používá ve zdravotnických, obchodních a vládních aplikacích. | Ano |
Zataženo | Cloudant, Inc. | Proprietární | Erlang, Jáva, Scala, a C | Distribuovaná databázová služba založená na BigCouch, společnost otevřený zdroj vidlice Apache - couval CouchDB projekt. Používá model JSON. | Ano |
Databáze klastrových bodů | Clusterpoint Ltd. | Proprietární s bezplatným stahováním | JavaScript, SQL, PHP, .SÍŤ, Jáva, Krajta, Node.js, C, C ++, | Distribuovaná databázová platforma XML / JSON orientovaná na dokumenty s KYSELINA -v souladu transakce; vysoká dostupnost replikace dat a střep; vestavěný fulltextové vyhledávání motor s relevantnost hodnocení; JS / SQL dotazovací jazyk; GIS; K dispozici jako platba za použití databáze jako služba nebo jako on-premise bezplatný software ke stažení. | Ano |
Couchbase Server | Couchbase, Inc. | Licence Apache | C, .SÍŤ, Jáva, Krajta, Node.js, PHP, SQL, Jít, Jarní rámec, LINQ | Distribuovaná databáze dokumentů NoSQL, model JSON a dotazovací jazyk založený na SQL. | Ano[7] |
CouchDB | Softwarová nadace Apache | Licence Apache | Libovolný jazyk, který umožňuje zadávání požadavků HTTP | JSON přes REST / HTTP s Řízení více verzí souběžnosti a omezené KYSELINA vlastnosti. Použití mapa a snížit pro zobrazení a dotazy.[8] | Ano[9] |
CrateIO | CRATE Technology GmbH | Licence Apache | Jáva | Použijte známou syntaxi SQL pro distribuované dotazy v reálném čase napříč klastrem. Založeno na ekosystému Lucene / Elasticsearch se zabudovanou podporou pro binární objekty (BLOBs). | Ano[10] |
Kosmos DB | Microsoft | Proprietární | .SÍŤ, Jáva, Krajta, Node.js, JavaScript, SQL | Nabídka platformy jako služby, součást Microsoft Azure plošina. Navazuje a rozšiřuje dřívější Azure DocumentDB. | Ano |
DocumentDB | Webové služby Amazon | Proprietární online služba | rozličný, ZBYTEK | plně spravovaná databázová služba kompatibilní s MongoDB v3.6 | Ano |
Elasticsearch | Shay Banon | Licence Apache | Jáva | JSON, Vyhledávač. | Ano |
existovat | existovat | LGPL | XQuery, Jáva | XML přes REST / HTTP, WebDAV, Lucene Fulltextové vyhledávání, podpora binárních dat, ověřování, správa verzí, shlukování, spouštěče, přepisování adres URL, kolekce, ACLS, aktualizace XQuery | Ano[11] |
Informix | IBM | Proprietární, s bezplatnými vydáními[12] | Různé (kompatibilní s MongoDB API) | RDBMS s JSON, replikace, dělení a shoda s ACID. | Ano |
Jackrabbit | Apache Foundation | Licence Apache | Jáva | Repozitář obsahu Java implementace | ? |
Poznámky HCL (HCL Domino ) | HCL | Proprietární | LotusScript, Jáva, Poznámky Formula Language | MultiValue | Ano |
MarkLogic | MarkLogic Corporation | Licence pro vývojáře zdarma nebo komerční[13] | Jáva, JavaScript, Node.js, XQuery, SPARQL, XSLT, C ++ | Distribuovaná dokumentově orientovaná databáze pro JSON, XML a Trojnásobek RDF. Vestavěný fulltextové vyhledávání, KYSELINA transakce, vysoká dostupnost a zotavení po havárii, certifikované zabezpečení. | Ano |
MongoDB | MongoDB, Inc. | Veřejná licence na straně serveru pro DBMS, Licence Apache 2 pro klientské ovladače[14] | C, C ++, C#, Jáva, Perl, PHP, Krajta, Jít, Node.js, Rubín, Rez,[15] Scala[16] | Databáze dokumentů s replikací a shardováním, BSON obchod (binární formát JSON ). | Ano[17][18] |
PŘÍUŠNICE Databáze | ? | Proprietární a Affero GPL[19] | PŘÍUŠNICE | Běžně se používá ve zdravotnických aplikacích. | ? |
ObjectDatabase ++ | Ekky Software | Proprietární | C ++, C#, TScript | Binární nativní struktury třídy C ++ | ? |
OpenLink Virtuoso | Software OpenLink | GPLv2 [1] a proprietární | C ++, C#, Jáva, SPARQL | Middleware a databázový stroj hybridní | Ano |
OrientDB | Orient Technologies | Licence Apache | Jáva | JSON přes HTTP, podpora SQL, KYSELINA transakce | Ano |
Databáze Oracle NoSQL | Oracle Corp | Apache a proprietární | C, C #, Java, Python, node.js, Go | Sdíleno nic, horizontálně škálovatelná databáze s podporou JSON bez schématu, tabulky pevných schémat a páry klíč / hodnota. Podporuje také ACID transakce. | Ano |
PostgreSQL | PostgreSQL | Licence PostgreSQL zdarma[20] | C | HStore, úložiště JSON (9,2+), funkce JSON (9,3+), HStore2 (9,4+), JSONB (9,4+) | Ne |
Qizx | Qualcomm | Proprietární | ZBYTEK, Jáva, XQuery, XSLT, C, C ++, Krajta | Distribuováno na dokumenty XML databáze s integrovaným fulltextové vyhledávání; podpora pro JSON, text a binární soubory. | Ano |
ReJSON[21] | Redis Labs | Licence Redis Source Available | Node.js, Jáva, Krajta, Jít a všechno Redis klienty.[22] | Nativní datový typ v paměti zabalený jako modul Redis. | ? |
Přehodnotit DB | ? | Licence Apache[23] | C ++, Krajta, JavaScript, Rubín, Jáva | Distribuováno na dokumenty JSON databáze s replikací a shardováním. | Ne |
SAP HANA | MÍZA | Proprietární | SQL -jako jazyk | KYSELINA transakce podporována, JSON pouze | Ano |
Sedna | sedna.org | Licence Apache | C ++, XQuery | XML databáze | Ne |
SimpleDB | Webové služby Amazon | Proprietární online služba | Erlang | ? | |
Solr | Apache | Licence Apache | Jáva | Vyhledávač | Ano |
TokuMX | Tokutek | GNU Affero General Public License | C ++, C#, Jít | MongoDB s Indexování fraktálního stromu | ? |
Implementace XML databáze
Většina databází XML jsou databáze orientované na dokumenty.
Viz také
- Teorie databáze
- Datová hierarchie
- Analýza dat
- Fulltextové vyhledávání
- Paměťová databáze
- Protokol pro přístup k internetovým zprávám (IMAP)
- Strojově čitelné dokumenty
- Databáze více modelů
- NoSQL
- Objektová databáze
- Online databáze
- Databáze v reálném čase
- Relační databáze
Poznámky
Reference
- ^ Drake, Mark (9. srpna 2019). „Srovnání systémů a modelů pro správu databází NoSQL“. DigitalOcean. Archivovány od originál dne 13. srpna 2019. Citováno 23. srpna 2019.
Dokumentově orientované databáze nebo úložiště dokumentů jsou NoSQL databáze, které ukládají data ve formě dokumentů. Úložiště dokumentů jsou typem úložiště klíč – hodnota: každý dokument má jedinečný identifikátor - svůj klíč - a jako hodnota slouží samotný dokument.
- ^ „Hodnocení DB-Engines podle kategorie modelu databáze“.
- ^ "Popis základů normalizace databáze". Microsoft.
- ^ Wambler, Scott. „Neshoda objektově-relační impedance“. Agilní data.
- ^ „HTTP Protocol for AllegroGraph“.
- ^ „Multi-model vysoce dostupná databáze NoSQL“. ArangoDB.
- ^ Dokumentace Archivováno 2012-08-20 na Wayback Machine. Couchbase. Citováno 2013-09-18.
- ^ "Apache CouchDB". Apache Couchdb. Archivovány od originál 20. října 2011.
- ^ „HTTP_Document_API - Couchdb Wiki“. Archivovány od originál dne 01.03.2013. Citováno 2011-10-14.
- ^ "Přepravka SQL HTTP Endpoint (archivovaná kopie)". Archivovány od originál dne 22.06.2015. Citováno 2015-06-22.
- ^ Nativní databáze eXist-db s otevřeným zdrojovým kódem XML. Exist-db.org. Citováno 2013-09-18.
- ^ „Porovnejte vydání Informix verze 12“. 22. července 2016.
- ^ „Licence MarkLogic“. Archivovány od originál dne 2012-01-12. Citováno 2011-12-28.
- ^ „Licence MongoDB“.
- ^ „The New MongoDB Rust Driver“. MongoDB. Citováno 2018-02-01.
- ^ „Komunitní podpora ovladačů“.
- ^ „Rozhraní HTTP - ekosystém MongoDB“. Dokumenty MongoDB.
- ^ „GitHub - mongodb / docs-ecosystem: Dokumentace ekosystému MongoDB“. 27. června 2019 - přes GitHub.
- ^ „GT.M Špičkový databázový modul TP“.
- ^ "PostgreSQL: Licence". PostgreSQL.
- ^ Huang, Pengcheng; Wang, Zuofei (2018-02-28). Kuchařka Redis 4.x: více než 80 ručně vybraných receptů pro efektivní vývoj a správu Redis. 316–318. ISBN 9781783988174.
- ^ „RedisJSON - datový typ JSON pro Redis“. oss.redislabs.com. Citováno 18. července 2019.
- ^ „Převod autorských práv na The Linux Foundation, opětovné licencování RethinkDB pod ASLv2“. github.com. Citováno 27. ledna 2020.
Další čtení
- Assaf Arkin. (2007, 20. září). Konzistence čtení: Hloupé databáze, chytré služby.
externí odkazy
- Pořadí databázových obchodů DB-Engines podle popularity, aktualizováno měsíčně