什么是面向?qū)ο蟮臄?shù)據(jù)庫(kù)?

面向?qū)ο蟮臄?shù)據(jù)庫(kù)是一種數(shù)據(jù)庫(kù)管理系統(tǒng)。不同的數(shù)據(jù)庫(kù)管理系統(tǒng)提供額外的功能。面向?qū)ο蟮臄?shù)據(jù)庫(kù)將數(shù)據(jù)庫(kù)功能添加到對(duì)象編程語(yǔ)言中,創(chuàng)建更易于管理的代碼庫(kù)。
曉林電腦服務(wù)公司通過(guò)示例深入概述了面向?qū)ο蟮臄?shù)據(jù)庫(kù)。

對(duì)象數(shù)據(jù)庫(kù)定義
對(duì)象數(shù)據(jù)庫(kù)由面向?qū)ο蟮臄?shù)據(jù)庫(kù)管理系統(tǒng)( OODBMS )管理。該數(shù)據(jù)庫(kù)將面向?qū)ο蟮木幊谈拍钆c關(guān)系數(shù)據(jù)庫(kù)原則相結(jié)合。
對(duì)象是基本的構(gòu)建塊和類的實(shí)例,其中類型是內(nèi)置的或用戶定義的。
類為對(duì)象提供模式或藍(lán)圖,定義行為。
方法決定了一個(gè)類的行為。
指針有助于訪問(wèn)對(duì)象數(shù)據(jù)庫(kù)的元素并建立對(duì)象之間的關(guān)系。

OODBMS 中對(duì)象的主要特征是用戶構(gòu)造類型的可能性。在項(xiàng)目或應(yīng)用程序中創(chuàng)建的對(duì)象按原樣保存到數(shù)據(jù)庫(kù)中。
面向?qū)ο蟮臄?shù)據(jù)庫(kù)直接將數(shù)據(jù)作為完整的對(duì)象來(lái)處理。所有信息都在一個(gè)即時(shí)可用的對(duì)象包中,而不是多個(gè)表。
相比之下,關(guān)系數(shù)據(jù)庫(kù)的基本構(gòu)建塊,例如PostgreSQL 或 MySQL,是具有基于表數(shù)據(jù)之間邏輯連接的操作的表。

這些特性使對(duì)象數(shù)據(jù)庫(kù)適用于具有復(fù)雜數(shù)據(jù)的項(xiàng)目,這些項(xiàng)目需要面向?qū)ο蟮木幊谭椒?。面向?qū)ο蟮墓芾硐到y(tǒng)提供支持的功能,以迎合以復(fù)雜對(duì)象為中心的面向?qū)ο缶幊?。這種方法將數(shù)據(jù)的屬性和行為統(tǒng)一到一個(gè)實(shí)體中。
面向?qū)ο蟮木幊谈拍?/h1>
面向?qū)ο蟮臄?shù)據(jù)庫(kù)與面向?qū)ο蟮木幊谈拍蠲芮邢嚓P(guān)。面向?qū)ο缶幊痰乃膫€(gè)主要思想是:
多態(tài)性
遺產(chǎn)
封裝
抽象
這四個(gè)屬性描述了面向?qū)ο蠊芾硐到y(tǒng)的關(guān)鍵特征。
多態(tài)性
多態(tài)性是對(duì)象具有多種形式的能力。這種能力允許相同的程序代碼處理不同的數(shù)據(jù)類型。汽車和自行車都可以打破,但機(jī)制不同。在這個(gè)例子中,動(dòng)作中斷是一個(gè)多態(tài)性。定義的動(dòng)作是多態(tài)的——結(jié)果會(huì)根據(jù)執(zhí)行的車輛而變化。
遺產(chǎn)
繼承在相關(guān)類之間創(chuàng)建層次關(guān)系,同時(shí)使部分代碼可重用。定義新類型會(huì)繼承所有現(xiàn)有的類字段和方法,并進(jìn)一步擴(kuò)展它們?,F(xiàn)有類是父類,而子類擴(kuò)展父類。
例如,名為Vehicle的父類將具有子類Car和Bike。兩個(gè)子類都從父類繼承信息,并根據(jù)車輛類型使用新信息擴(kuò)展父類。
封裝
封裝是將數(shù)據(jù)和機(jī)制分組到單個(gè)對(duì)象中以提供訪問(wèn)保護(hù)的能力。通過(guò)這個(gè)過(guò)程,對(duì)象如何工作的信息和細(xì)節(jié)被隱藏,從而導(dǎo)致數(shù)據(jù)和功能安全。類通過(guò)方法相互交互,而不需要知道特定方法是如何工作的。

例如,汽車具有描述性特征和動(dòng)作。您可以更改汽車的顏色,但型號(hào)或品牌是無(wú)法更改的屬性示例。一個(gè)類將所有汽車信息封裝到一個(gè)實(shí)體中,其中一些元素是可修改的,而有些則不是。
抽象
抽象是僅表示所需功能的基本數(shù)據(jù)特征的過(guò)程。該過(guò)程選擇重要信息,同時(shí)隱藏不必要的信息。抽象有助于降低建模數(shù)據(jù)的復(fù)雜性并允許可重用性。
例如,計(jì)算機(jī)有不同的方式連接到網(wǎng)絡(luò)。網(wǎng)絡(luò)瀏覽器需要互聯(lián)網(wǎng)連接。但是,連接類型無(wú)關(guān)緊要。與 Internet 建立的連接代表一個(gè)抽象,而各種類型的連接代表該抽象的不同實(shí)現(xiàn)。
面向?qū)ο蟮臄?shù)據(jù)庫(kù)示例
對(duì)象數(shù)據(jù)庫(kù)有不同類型的實(shí)現(xiàn)。大多數(shù)包含以下功能:
特征描述查詢語(yǔ)言用于從數(shù)據(jù)庫(kù)中查找對(duì)象和檢索數(shù)據(jù)的語(yǔ)言。透明的持久性能夠使用面向?qū)ο蟮木幊陶Z(yǔ)言進(jìn)行數(shù)據(jù)操作。酸交易ACID事務(wù)保證所有事務(wù)都是完整的,沒(méi)有發(fā)生沖突的更改。數(shù)據(jù)庫(kù)緩存創(chuàng)建數(shù)據(jù)庫(kù)的部分副本。允許從程序存儲(chǔ)器而不是磁盤訪問(wèn)數(shù)據(jù)庫(kù)?;謴?fù)應(yīng)用程序或系統(tǒng)故障時(shí)的災(zāi)難恢復(fù)。
寶石/S
GemStone/S是一個(gè)基于 Smalltalk 的對(duì)象數(shù)據(jù)庫(kù)系統(tǒng)——一種受 Java 影響的面向?qū)ο蟮木幊陶Z(yǔ)言。用 Smalltalk 編寫應(yīng)用程序的開發(fā)人員很容易適應(yīng)這個(gè)數(shù)據(jù)庫(kù)。GemStone/S 與現(xiàn)有的 Smalltalk 應(yīng)用程序無(wú)縫集成,提高了速度和生產(chǎn)力。
Gemstone/S 最適合高可用性項(xiàng)目。根據(jù)項(xiàng)目大小,有多種許可選項(xiàng)。數(shù)據(jù)庫(kù)服務(wù)器可用于各種平臺(tái),包括 Linux、Windows、macOS、Solaris、AIX 以及 Raspberry Pi。
對(duì)象數(shù)據(jù)庫(kù)
ObjectDB是用于 Java 編程語(yǔ)言的NoSQL對(duì)象數(shù)據(jù)庫(kù)與其他 NoSQL 數(shù)據(jù)庫(kù)相比,ObjectDB 符合 ACID。ObjectDB 不提供 API,需要使用兩個(gè)內(nèi)置 Java 數(shù)據(jù)庫(kù) API 之一:
JPA與基于 Java 語(yǔ)法的JPA 查詢語(yǔ)言(JPQL)。
JDO與基于 SQL 語(yǔ)法的JDO 查詢語(yǔ)言(JDQL)。
ObjectDB 包括 Java 中的所有基本數(shù)據(jù)類型、用戶定義的類和標(biāo)準(zhǔn) Java 集合。每個(gè)對(duì)象都有一個(gè)唯一的 ID。元素的數(shù)量?jī)H受最大數(shù)據(jù)庫(kù)大小 (128 TB) 的限制。ObjectDB 可跨平臺(tái)使用,并且基準(zhǔn)性能非常出色。
對(duì)象數(shù)據(jù)庫(kù)++
ObjectDatabase++是為服務(wù)器端應(yīng)用程序設(shè)計(jì)的實(shí)時(shí)可嵌入對(duì)象數(shù)據(jù)庫(kù)。所需的外部維護(hù)很少。
ObjectDatabase++ 支持:
具有多線程服務(wù)器應(yīng)用程序的多進(jìn)程。
完全的交易控制。
實(shí)時(shí)恢復(fù)。
C++ 相關(guān)語(yǔ)言、http://VB.NET?以及 C#。
對(duì)象數(shù)據(jù)庫(kù)是基于 C++ 的。主要功能之一是在不影響數(shù)據(jù)庫(kù)完整性的情況下從系統(tǒng)崩潰中進(jìn)行高級(jí)自動(dòng)恢復(fù)。
客觀性/數(shù)據(jù)庫(kù)
Objectivity/DB利用對(duì)象的力量并滿足大數(shù)據(jù)中的復(fù)雜要求。對(duì)象數(shù)據(jù)庫(kù)通過(guò)支持多種語(yǔ)言非常靈活:
C++
C#
Python
爪哇
架構(gòu)更改是動(dòng)態(tài)發(fā)生的,無(wú)需停機(jī),允許對(duì)任何數(shù)據(jù)類型進(jìn)行實(shí)時(shí)查詢。Objective/DB 可用于多種平臺(tái),包括 macOS、Linux、Windows 或 Unix。
對(duì)象存儲(chǔ)
ObjectStore與 C++ 或 Java 集成并提供內(nèi)存持久性以提高應(yīng)用程序邏輯的性能。對(duì)象數(shù)據(jù)庫(kù)符合 ACID。響應(yīng)能力允許開發(fā)人員跨平臺(tái)構(gòu)建分布式應(yīng)用程序,無(wú)論是在本地還是在云中。
主要特點(diǎn)是云可擴(kuò)展性,它允許從任何地方訪問(wèn)數(shù)據(jù)庫(kù)。ObjectStore 無(wú)縫地簡(jiǎn)化了數(shù)據(jù)創(chuàng)建和交換過(guò)程。
范思哲
Versant提供來(lái)自 C++、Java 和 .NET 的主要透明對(duì)象持久性。但是,也支持 Smalltalk 和 Python。Versant 根據(jù)所使用的語(yǔ)言支持不同的 API。標(biāo)準(zhǔn) SQL 查詢也可用,使 Versant 成為 NoSQL 數(shù)據(jù)庫(kù)。
對(duì)象數(shù)據(jù)庫(kù)是一個(gè)多用戶客戶端-服務(wù)器數(shù)據(jù)庫(kù)。Versant 在用于具有大量數(shù)據(jù)和并發(fā)用戶的在線交易系統(tǒng)時(shí)表現(xiàn)最佳。
面向?qū)ο髷?shù)據(jù)庫(kù)的優(yōu)缺點(diǎn)
每種數(shù)據(jù)庫(kù)建模技術(shù)都有優(yōu)點(diǎn)和缺點(diǎn)。在選擇使用面向?qū)ο蟮臄?shù)據(jù)庫(kù)之前,除了應(yīng)用程序意圖之外,您還必須了解可用的語(yǔ)言。
好處
主要優(yōu)點(diǎn)是:
與MySQL數(shù)據(jù)類型相比,復(fù)雜數(shù)據(jù)和更廣泛的數(shù)據(jù)類型。
易于快速保存和檢索數(shù)據(jù)。
與面向?qū)ο蟮木幊陶Z(yǔ)言無(wú)縫集成。
更容易對(duì)高級(jí)現(xiàn)實(shí)世界問(wèn)題進(jìn)行建模。
可使用自定義數(shù)據(jù)類型進(jìn)行擴(kuò)展。
缺點(diǎn)
一些缺點(diǎn)包括:
不像關(guān)系數(shù)據(jù)庫(kù)那樣被廣泛采用。
沒(méi)有通用數(shù)據(jù)模型。缺乏理論基礎(chǔ)和標(biāo)準(zhǔn)。
不支持視圖。
高復(fù)雜性會(huì)導(dǎo)致性能問(wèn)題。
不存在足夠的安全機(jī)制和對(duì)對(duì)象的訪問(wèn)權(quán)限。
結(jié)論
對(duì)象數(shù)據(jù)庫(kù)提供了一種現(xiàn)代的數(shù)據(jù)庫(kù)建模方法,反映了面向?qū)ο缶幊讨惺褂玫姆椒ā?/p>