Úvod
Objektově orientované databáze jsou typem systému správy databází. Různé systémy správy databází poskytují další funkce. Objektově orientované databáze přidávají databázovou funkcionalitu do objektových programovacích jazyků a vytvářejí lépe spravovatelné kódové báze.
Tento článek poskytuje podrobný přehled objektově orientovaných databází s příklady.
Definice databáze objektů
Databázi objektů spravuje o bject-o riented d atab ase m řízení s systém (OODBMS). Databáze kombinuje koncepty objektově orientovaného programování s principy relační databáze.
- Objekty jsou základním stavebním blokem a instancí třídy, kde je typ vestavěný nebo definovaný uživatelem.
- Třídy poskytnout schéma nebo plán pro objekty, které definují chování.
- Metody určit chování třídy.
- Ukazatele pomáhají získat přístup k prvkům databáze objektů a navazovat vztahy mezi objekty.
Hlavní charakteristikou objektů v OODBMS je možnost uživatelsky vytvořených typů . Objekt vytvořený v projektu nebo aplikaci se uloží do databáze tak, jak je.
Objektově orientované databáze přímo pracují s daty jako s kompletními objekty. Všechny informace přicházejí v jednom okamžitě dostupném balíčku objektů namísto několika tabulek.
Naproti tomu základní stavební kameny relačních databází, jako je PostgreSQL nebo MySQL, jsou tabulky s akcemi založenými na logických spojeních mezi daty tabulky.
Díky těmto vlastnostem jsou objektové databáze vhodné pro projekty se složitými daty, které vyžadují objektově orientovaný přístup k programování. Objektově orientovaný systém správy poskytuje podporované funkce určené pro objektově orientované programování, kde jsou komplexní objekty ústřední. Tento přístup sjednocuje atributy a chování dat do jedné entity.
Koncepty objektově orientovaného programování
Objektově orientované databáze úzce souvisí s koncepty objektově orientovaného programování. Čtyři hlavní myšlenky objektově orientovaného programování jsou:
- Polymorfismus
- Dědičnost
- Zapouzdření
- Abstrakce
Tyto čtyři atributy popisují kritické charakteristiky objektově orientovaných systémů řízení.
Polymorfismus
Polymorfismus je schopnost objektu mít více podob. Tato schopnost umožňuje, aby stejný programový kód pracoval s různými datovými typy. Jak auto, tak kolo se mohou rozbít ale mechanismus je jiný. V tomto příkladu je akční přestávka polymorfismus. Definovaná akce je polymorfní — výsledek se mění v závislosti na výkonu vozidla.
Dědičnost
Dědičnost vytváří hierarchický vztah mezi souvisejícími třídami a zároveň činí části kódu znovupoužitelnými. Definování nových typů zdědí všechna existující pole tříd a metody a dále je rozšiřuje. Stávající třída je rodič třídy, zatímco dítě class rozšiřuje rodiče.
Například nadřazená třída s názvem Vehicle bude mít dětské třídy Auto a Na kole . Obě dětské třídy dědí informace z nadřazené třídy a extend nadřazenou třídu s novými informacemi v závislosti na typu vozidla.
Zapouzdření
Zapouzdření je schopnost seskupit data a mechanismy do jednoho objektu, aby byla zajištěna ochrana přístupu. Prostřednictvím tohoto procesu jsou skryty části informací a podrobnosti o tom, jak objekt funguje výsledkem je zabezpečení dat a funkcí. Třídy na sebe vzájemně působí prostřednictvím metod, aniž by bylo nutné vědět, jak konkrétní metody fungují.
Například automobil má popisné vlastnosti a akce. Můžete změnit barvu auta, ale model nebo značka jsou příklady vlastností, které se změnit nedají. Třída zapouzdřuje všechny informace o autě do jedné entity, kde některé prvky jsou modifikovatelné, zatímco některé ne.
Abstrakce
Abstrakce je postup reprezentace pouze základních datových funkcí pro potřebnou funkci . Proces vybírá důležité informace, zatímco nepotřebné informace zůstávají skryté. Abstrakce pomáhá snížit složitost modelovaných dat a umožňuje opětovné použití.
Například existují různé způsoby připojení počítače k síti. Webový prohlížeč vyžaduje připojení k internetu. Typ připojení je však irelevantní. Navázané připojení k internetu představuje abstrakce , zatímco různé typy připojení představují různé implementace abstrakce.
Příklady objektově orientované databáze
Existují různé druhy implementací objektových databází. Většina z nich obsahuje následující funkce:
Funkce | Popis |
Dotazovací jazyk | Jazyk pro vyhledání objektů a načtení dat z databáze. |
Transparentní vytrvalost | Schopnost používat objektově orientovaný programovací jazyk pro manipulaci s daty. |
ACID transakce | Transakce ACID zaručují, že všechny transakce proběhnou bez konfliktních změn. |
Ukládání do mezipaměti databáze | Vytváří částečnou repliku databáze. Umožňuje přístup k databázi z paměti programu místo z disku. |
Obnovení | Obnova po havárii v případě selhání aplikace nebo systému. |
Drahý kámen/S
GemStone/S je objektový databázový systém založený na Smalltalku – objektově orientovaném programovacím jazyku ovlivněném Javou. Vývojáři, kteří píší aplikace ve Smalltalku, se této databázi snadno přizpůsobí. GemStone/S se hladce integruje se stávajícími aplikacemi Smalltalk a zvyšuje rychlost a produktivitu.
Gemstone/S je nejlepší pro projekty s vysokou dostupností. Existuje několik možností licencování v závislosti na velikosti projektu. Databázový server je dostupný pro různé platformy, včetně Linuxu, Windows, macOS, Solaris, AIX a také Raspberry Pi.
ObjectDB
ObjectDB je NoSQL objektová databáze pro programovací jazyk Java. Ve srovnání s jinými databázemi NoSQL je ObjectDB kompatibilní s ACID. ObjectDB neposkytuje API a vyžaduje použití jednoho ze dvou vestavěných Java databázových API:
- JPA s JPA Query Language (JPQL) na základě syntaxe Java.
- JDO s JDO Query Language (JDQL) na základě syntaxe SQL.
ObjectDB zahrnuje všechny základní datové typy v Javě, uživatelsky definované třídy a standardní Java kolekce. Každý objekt má jedinečné ID. Počet prvků je omezen pouze maximální velikostí databáze (128 TB). ObjectDB je k dispozici napříč platformami a výkon benchmarku je výjimečný.
ObjectDatabase++
ObjectDatabase++ je objektová databáze v reálném čase určená pro aplikace na straně serveru. Požadovaná externí údržba je minimální.
ObjectDatabase++ podporuje:
- Víceprocesové s vícevláknovými serverovými aplikacemi.
- Úplná kontrola transakcí.
- Obnovení v reálném čase.
- Jazyky související s C++, VB.NET a také C#.
Objektová databáze je založena na C++. Jednou z hlavních funkcí je pokročilá automatická obnova po haváriích systému bez narušení integrity databáze.
Objektivita/DB
Objektivita/DB využívá sílu objektů a uspokojuje komplexní požadavky v rámci Big Data. Objektová databáze je flexibilní díky podpoře více jazyků:
- C++
- C#
- Python
- Java
Změny schématu probíhají dynamicky bez nutnosti prostojů, což umožňuje dotazy v reálném čase na jakýkoli typ dat. Objektivita/DB je k dispozici pro více platforem, včetně macOS, Linux, Windows nebo Unix.
ObjectStore
ObjectStore integruje se s C++ nebo Java a poskytuje perzistenci paměti pro zlepšení výkonu aplikační logiky. Databáze objektů je kompatibilní s ACID. Schopnost reagovat umožňuje vývojářům vytvářet distribuované aplikace napříč platformami, ať už on-premise nebo v cloudu.
Hlavní funkcí je cloudová škálovatelnost, která umožňuje přístup k databázi odkudkoli. ObjectStore bezproblémově zjednodušuje proces vytváření a výměny dat.
Versant
Versant poskytuje primární perzistenci transparentních objektů z C++, Java a .NET. Existuje však také podpora pro Smalltalk a Python. Versant podporuje různá rozhraní API v závislosti na použitém jazyce. K dispozici jsou také standardní SQL dotazy, díky nimž je Versant NoSQL databází.
Objektová databáze je víceuživatelská databáze klient-server. Versant funguje nejlépe při použití pro online transakční systémy s velkým množstvím dat a souběžnými uživateli.
Výhody a nevýhody objektově orientované databáze
Každá technika databázového modelování má své výhody a nevýhody. Než se rozhodnete pro objektově orientované databáze, musíte kromě záměru aplikace znát dostupné jazyky.
Výhody
Hlavní výhody jsou:
- Komplexní data a širší škála datových typů ve srovnání s datovými typy MySQL.
- Snadné ukládání a rychlé načítání dat.
- Bezproblémová integrace s objektově orientovanými programovacími jazyky.
- Snazší modelování pokročilých problémů reálného světa.
- Rozšiřitelné pomocí vlastních datových typů.
Nevýhody
Některé nevýhody zahrnují:
- Není tak rozšířené jako relační databáze.
- Žádný univerzální datový model. Chybí teoretické základy a standardy.
- Nepodporuje zobrazení.
- Vysoká složitost způsobuje problémy s výkonem.
- Neexistuje adekvátní bezpečnostní mechanismus a přístupová práva k objektům.