更新時間:2021-08-25 10:34:12 來源:動力節點 瀏覽995次
簡要說明
面向對象的數據庫 (OOD) 是一種數據庫系統,它可以處理復雜的數據對象,即反映面向對象編程語言中使用的對象的對象。
在面向對象編程中,一切都是對象,很多對象都相當復雜,具有不同的屬性和方法。面向對象的數據庫管理系統與面向對象的編程語言協同工作,以促進面向對象數據的存儲和檢索。
你可能會想,“等等,我一直在我的編程中使用對象。我使用數據庫。那么,這是否意味著我使用的數據庫是OOD?” 可能不會,原因與 OOD 的主要特性之一有關:對象數據持久性。
當你的程序運行時,你可能有一個對象——例如,一個task. 該對象具有類似 aname和 的屬性status。它可能還有一些方法,例如update_task()或get_task_history()。在程序早期的某個地方,您初始化了該task對象,現在您可以訪問它,因為它存儲在內存中。
當您的程序終止執行時會發生什么?你的對象……不見了。該數據對象是瞬態的,而不是持久的。下次程序啟動時,您需要重新從數據庫中檢索這些數據值(如name和status)以初始化新的 task對象實例。
使用 OOD,數據對象及其所有屬性都存儲在數據庫中。當您的程序終止時,對象將繼續存在,并存儲在 OOD 中。當您的程序再次啟動時,它可以從數據庫中檢索具有屬性的對象。使用 OOD 存儲和檢索復雜數據對象的過程對數據庫用戶是透明的。
這與關系數據庫(如 MySQL 或 SQLite)有很大不同,但與文檔數據庫(如 MongoDB)沒有太大區別。在關系數據庫中,開發人員需要從一組查詢的結果中組合一個對象,而在文檔數據庫中,文檔字段到類屬性的映射應該幾乎是透明的。
OOD 已經存在了幾十年。MongoDB Realm是該領域最有前途的新軟件之一。
MongoDB 確實提供了一個名為 Realm Mobile Database 的 OOD,其中查詢語言通過您使用的 SDK 構建本機對象。例如,在 javascript SDK 中,對象獲取類似于:
const myTask = realm.objectForPrimaryKey("Task", 12345);
OOD 最常用于面向對象的編程語言,如 Java、Kotlin、C#、Node JS (React) 和 Swift。使用 OOD 的行業通常是那些建立在面向對象的語言上并且希望在處理復雜數據結構的同時提高生產力的行業。
OOD 的一個很好的例子是在線 IT 培訓提供商 CBT Nuggets。CBT Nuggets使用 Realm 提供 5,000 多門課程,從基本的計算機技能到復雜的網絡管理(請參閱此案例研究)。CBT Nuggets 致力于確保訂閱者可以隨時隨地查看內容。為實現這一承諾,課程通過 10 到 20 分鐘“金塊”的流媒體視頻提供。內容可在桌面和移動應用程序上使用。
借助 Realm 移動數據庫和 MongoDB Realm Sync,CBT 能夠使用適用于 Android 和 iOS 設備的跨平臺 SDKS 進行開發,使用直接對象到業務類映射和與 MongoDB Atlas 的無縫同步。
OODM 的要素是:
對象:現實世界的實體,例如待辦事項列表中的特定生活任務—— “把垃圾拿出來”。
屬性和方法:對象具有狀態和行為。對象具有的屬性(其也可以被稱為屬性)等name,status和create_date。集合在一起的屬性集表示它的狀態。除此之外,對象還具有修改或操作其屬性的行為(也稱為方法、操作或函數),例如update_task()或get_task_history()。
類:具有相同屬性和行為的所有對象的分組形成一個類。在上面的示例中,我們討論了task對象。這些對象一起都屬于這個Task類。
class task
{
String name;
String status;
Date create_date;
public void update_task(String status)
{
...
}
}
面向對象的設計模式:面向對象的數據建模還暗示了某些原則,如繼承、多態、覆蓋和關聯。面向對象的數據庫系統將支持這些相同的概念。
流行的 NoSQL 數據庫(如 MongoDB 和 AWS DynamoDB)是面向文檔的數據庫,而其他(如 Casadra)則是鍵值存儲。文檔數據庫,如 OOD,在表、行和列方面不起作用;但是某些語言可能需要 ODM 才能更好地處理對象。
每個“記錄”都被視為一個文檔,它可以根據它為給定實體存儲的屬性縮小和增長。有時,文檔之間的關系可能是首選方法。
例如,您可以認為一個BlogPost文檔與多個Comment文檔和Like文檔有關聯。在其他時候,關系可以直接嵌入到文檔中。在這種情況下,您可以想象一個BlogPost文檔的Comments屬性是一個文本字符串和用戶名數組,然后另一個Likes屬性是一個用戶名和時間戳數組。
文檔數據庫提供靈活的結構,可以很好地水平擴展。它們在存儲非常復雜的文檔方面非常強大,從表面上看,它們似乎與對象相同——許多現代編程語言通過將這些文檔稱為“對象”來進一步混淆 MongoDB。然而,這些文檔并不是如上所述的面向對象編程的傳統意義上的對象。
文檔數據庫與面向對象的數據庫類似但又不一樣。
以上就是動力節點小編介紹的"面向對象數據庫系統的示例",希望對大家有幫助,想了解更多可查看Java教程。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習