數(shù)據(jù)庫管理系統(tǒng),也稱為 DBMS,是一種允許管理員訪問、更改和分析數(shù)據(jù)庫的程序。在本文中,我將描述數(shù)據(jù)庫管理系統(tǒng)的功能并回顧不同類型的數(shù)據(jù)庫。雖然這不是所有 DBMS 類型的完整列表,但如果您正在尋找常見數(shù)據(jù)庫管理解決方案的快速指南,那么它是一個開始。
數(shù)據(jù)庫管理系統(tǒng)的目的是什么?
數(shù)據(jù)庫中需要執(zhí)行多項(xiàng)管理任務(wù),例如跟蹤更改或備份和恢復(fù)數(shù)據(jù),正確的軟件可讓您更輕松地進(jìn)行系統(tǒng)級更改,同時查明任何問題。通過 DBMS,管理員可以管理數(shù)據(jù)、數(shù)據(jù)庫引擎和設(shè)置邏輯結(jié)構(gòu)的數(shù)據(jù)庫模式。然而,確保您從所選的任何 DBMS 中獲得最大收益的一個關(guān)鍵部分是您監(jiān)控數(shù)據(jù)庫和調(diào)整數(shù)據(jù)庫性能以確保其保持高效的能力。
SolarWinds 數(shù)據(jù)庫性能分析器 (DPA)
我建議使用像SolarWinds ? Database Performance Analyzer (DPA)這樣的工具來監(jiān)控和優(yōu)化多種類型的 DBMS。我發(fā)現(xiàn)這是這些關(guān)系 DBMS 監(jiān)控工具中最強(qiáng)大的,提供了全面但易于使用的功能。通過單一安裝監(jiān)控 MySQL、Oracle、SAP ASE、DB2等數(shù)據(jù)庫。根據(jù)明確的診斷獲取優(yōu)化性能所需的工具。如果您需要一種直接、簡化的方式來監(jiān)控您的數(shù)據(jù)庫并通過精心設(shè)計的界面調(diào)整性能,請從 DPA 開始。
SolarWinds 數(shù)據(jù)庫性能監(jiān)視器 (DPM)
當(dāng)談到監(jiān)控不遵循關(guān)系模型的數(shù)據(jù)庫時,一個可行的選擇是使用數(shù)據(jù)庫性能監(jiān)視器(DPM),這是 SolarWinds 的另一項(xiàng)產(chǎn)品。DPM 是一個基于 SaaS 的監(jiān)控解決方案,專注于開源和 NoSQL 數(shù)據(jù)庫。它可以在本地、云端和24/7 實(shí)時監(jiān)控混合監(jiān)控數(shù)據(jù)庫。該工具可以監(jiān)控各種指標(biāo),并通過其用戶友好的儀表板顯示它們。它允許您放大和向下鉆取特定點(diǎn),以便您可以更早地診斷問題。DPM 可以跟蹤的指標(biāo)列表包括:
- MTTD
- 平均修復(fù)時間
- 部署頻率
- 可用性
- 減少部署失敗
DPM 還具有重要的安全功能,開箱即用,符合GDPR和 SOC2 標(biāo)準(zhǔn)。該工具還可以幫助您消除數(shù)據(jù)庫功能的過度配置。它使您可以輕松檢測數(shù)據(jù)庫的一部分工作負(fù)載何時消耗了過多的資源。有了這些信息,您就可以提高服務(wù)器的性能并減少數(shù)據(jù)中心的占用空間。
SolarWinds? SQL Sentry
SQL Sentry 旨在為 DBA 提供跨物理、虛擬和云 SQL Server 環(huán)境的更廣泛可見性。SQL Sentry 包括執(zhí)行計劃圖、查詢歷史等,因此您可以更輕松地解決問題并優(yōu)化數(shù)據(jù)庫管理系統(tǒng)的性能。
SQL Sentry旨在提供您需要的性能指標(biāo),通過支持您更快地識別和解決 SQL Server 問題:
- 查找并修復(fù)影響較大的 SQL 查詢 – 識別在短時間內(nèi)運(yùn)行數(shù)千次并使您的服務(wù)器遭受“千刀萬剮”的可疑語句,并在同一界面中調(diào)整它們
- 績效基線——設(shè)置個人基線以將發(fā)生的事情與預(yù)期行為進(jìn)行比較
- 性能計數(shù)器的歷史分析——回到過去或超過一個范圍以查看 SQL Server 中的變化
您可以下載 SQL Sentry 的 14 天免費(fèi)試用版。
DBMS 軟件的類型
有幾種不同的數(shù)據(jù)庫模式,每種模式都有自己的優(yōu)點(diǎn)和缺點(diǎn)。選擇數(shù)據(jù)庫類型可能是平衡因素的問題,例如組織、安全性、存儲空間和效率。首先,您對 DBMS 的選擇將取決于您使用的主要數(shù)據(jù)庫類型。
關(guān)系數(shù)據(jù)庫管理系統(tǒng)
這是一種基于數(shù)據(jù)關(guān)系模型的DBMS。關(guān)系數(shù)據(jù)庫有時被稱為 SQL 數(shù)據(jù)庫,以用于對大多數(shù)關(guān)系數(shù)據(jù)庫管理軟件進(jìn)行編程的編碼語言(結(jié)構(gòu)化查詢語言)命名。
關(guān)系數(shù)據(jù)庫本質(zhì)上是在數(shù)據(jù)庫內(nèi)的表或電子表格之間建立聯(lián)系。當(dāng)數(shù)據(jù)被添加到數(shù)據(jù)庫中時,簡單地向同一個表中添加列將創(chuàng)建一個靜態(tài)且不靈活的數(shù)據(jù)集;隨著時間的推移,您的數(shù)據(jù)庫將變得混亂和無用。但是在關(guān)系數(shù)據(jù)庫中,表必須有一個主鍵列,它唯一標(biāo)識行中的所有數(shù)據(jù)。然后表可以使用外鍵鏈接到另一個表的主鍵。
關(guān)系數(shù)據(jù)庫的一大優(yōu)勢是符合原子性、一致性、隔離性和持久性 (ACID)。ACID 一詞是 80 年代計算機(jī)科學(xué)家創(chuàng)造的,用于描述數(shù)據(jù)庫事務(wù)必須如何進(jìn)行以保持?jǐn)?shù)據(jù)完整性。ACID 合規(guī)性仍然被認(rèn)為是確保數(shù)據(jù)庫有效的標(biāo)準(zhǔn),即使在發(fā)生錯誤和電源故障等中斷時也是如此,并且對于包含敏感或受監(jiān)管信息的數(shù)據(jù)庫來說是必須的。
關(guān)系數(shù)據(jù)庫流行了幾十年,特別適合需要 ACID 合規(guī)性并具有一致結(jié)構(gòu)化數(shù)據(jù)的主要組織。這種類型的數(shù)據(jù)庫非常廣泛和通用,很難說它最適合哪種特定任務(wù)或組織,但關(guān)系數(shù)據(jù)庫管理系統(tǒng)是財務(wù)系統(tǒng)、人事數(shù)據(jù)和后勤信息的常見選擇。直到最近,NoSQL 數(shù)據(jù)庫才成為一種可行甚至常見的替代方案。
NoSQL數(shù)據(jù)庫管理系統(tǒng)
非關(guān)系數(shù)據(jù)庫稱為 NoSQL。它們的結(jié)構(gòu)遠(yuǎn)不如相關(guān)數(shù)據(jù)庫,并且以文檔為中心,而不是以表格為中心。NoSQL 數(shù)據(jù)庫中的數(shù)據(jù)不必適合定義明確的行和列。許多 NoSQL 數(shù)據(jù)庫類似于文件夾。這使得它更適合大量和不規(guī)則的數(shù)據(jù)集合,但也需要更多的時間和處理能力。
NoSQL 數(shù)據(jù)庫管理系統(tǒng)通常分為以下四種類型之一:
- 鍵值:顧名思義,鍵值數(shù)據(jù)庫存儲鍵和值的組合。它可能看起來像只有兩列的電子表格。Riak 和 Redis 是兩個常見的例子。
- 寬列存儲:寬列存儲數(shù)據(jù)庫是面向列的,與大多數(shù)面向行的數(shù)據(jù)庫(如關(guān)系數(shù)據(jù)庫)相反。這對數(shù)據(jù)組織具有重要意義。雖然寬列存儲可能像其他數(shù)據(jù)庫一樣通過鍵來組織數(shù)據(jù),但附加到該鍵的信息不必是結(jié)構(gòu)化或規(guī)則的。示例包括 Cassandra 和 HBase。
- 圖:圖數(shù)據(jù)庫將數(shù)據(jù)視為“節(jié)點(diǎn)”,將連接視為這些節(jié)點(diǎn)之間的“邊”。這些數(shù)據(jù)庫以(或可以)直觀地表示為圖形。大多數(shù)社交網(wǎng)絡(luò)和幾乎所有根據(jù)您的行為提供“推薦”的網(wǎng)站都使用圖形數(shù)據(jù)庫。例如,Netflix 的推薦來自圖形數(shù)據(jù)庫。HyperGraphDB 就是這種類型的一個例子。
- 文檔存儲:文檔存儲類似于鍵值對,因?yàn)樗鼈冇涉I組成,每個鍵對應(yīng)一個文檔。但是,這些文檔可能包含巨大的復(fù)雜性,并且不必與任何其他文檔中包含的數(shù)據(jù)結(jié)構(gòu)相對應(yīng)。MongoDB 就是一個例子。
內(nèi)存數(shù)據(jù)庫
在過去十年中,一種越來越流行的數(shù)據(jù)庫是內(nèi)存數(shù)據(jù)庫,縮寫為 IMDB 或 MMDB(主內(nèi)存數(shù)據(jù)庫系統(tǒng))。這些數(shù)據(jù)庫將數(shù)據(jù)存儲在 RAM 上,為壓縮的非結(jié)構(gòu)化數(shù)據(jù)提供極快的速度,但在中斷期間的安全性也有所降低(盡管進(jìn)步已經(jīng)解決了這個問題)。由于速度快,MMDB 在電信和移動廣告中很受歡迎。
其他數(shù)據(jù)庫管理系統(tǒng)類型
除了這些系統(tǒng)之外,列式或基于云的 DBMS 等選項(xiàng)可能與您的組織相關(guān)。Columnar 的設(shè)計速度快,壓縮級別高,因此這種類型的 DBMS 非常適合存在大量相似數(shù)據(jù)項(xiàng)的數(shù)據(jù)存儲情況。但是內(nèi)存分析讓這個因素變得不那么重要了。
同時,對于基于云的DBMS,云服務(wù)提供商接管了提供數(shù)據(jù)存儲和維護(hù)數(shù)據(jù)的任務(wù)。結(jié)合一定數(shù)量的云存儲顯然正在成為一個越來越受歡迎的選擇。但將管理系統(tǒng)保存在云端通常與擁有托管服務(wù)提供商的公司相關(guān)。
最佳數(shù)據(jù)庫管理系統(tǒng)
這只是一些流行的 DBMS 類型的簡短列表:
Oracle 12c:Oracle 是游戲中最著名和最古老的名字之一,是一種流行的 DBMS。他們的最新一代針對云計算進(jìn)行了優(yōu)化,以幫助客戶同時管理多個數(shù)據(jù)庫。作為關(guān)系數(shù)據(jù)庫,它具有強(qiáng)大的功能和一流的安全性(包括 ACID 合規(guī)性)。不利的一面是,甲骨文非常昂貴,尤其是在企業(yè)級。他們確實(shí)有針對小型企業(yè)的等級,但這可能還不夠。對于具有敏感、結(jié)構(gòu)清晰的數(shù)據(jù)的大型操作,Oracle 是一個不錯的選擇。
Microsoft SQL Server:另一個著名的名字,它提供高質(zhì)量的服務(wù),但可能很昂貴。但是,Microsoft 在這里不僅僅是一個名稱,它還是一個生態(tài)系統(tǒng)。因此,如果您的公司已經(jīng)在 Microsoft 上運(yùn)行,SQL Server 將與您的關(guān)系數(shù)據(jù)庫系統(tǒng)很好地集成,反之亦然。其他突出的功能包括用于額外安全性的動態(tài)數(shù)據(jù)屏蔽、臨時數(shù)據(jù)支持、Linux 支持和移動可視化。缺點(diǎn)包括上述成本。
MongoDB : NoSQL DBMS 中最知名的名字,MongoDB 是開源的,但商業(yè)版的功能更好。商業(yè)版包括高級安全性(這在本質(zhì)上不太安全的非關(guān)系數(shù)據(jù)庫中尤為重要)、管理、支持和培訓(xùn)。這些是您可能不會錯過的功能,除非您在關(guān)鍵時刻需要它們。正如前面提到的基于文檔的數(shù)據(jù)庫,MongoDB 非常適合復(fù)雜但非標(biāo)準(zhǔn)化的數(shù)據(jù)。
Neo4j:Neo4j 是一個圖數(shù)據(jù)庫工具,也是比較少見的支持 ACID 合規(guī)性的 NoSQL 平臺。如前所述,圖形數(shù)據(jù)庫非常適合連接和視覺表示,使它們成為推薦引擎的首選數(shù)據(jù)庫。我建議獲取企業(yè)版,它最適合管理和可擴(kuò)展性。
如何選擇數(shù)據(jù)庫管理系統(tǒng)
總之,您對 DBMS 的選擇部分取決于您需要的數(shù)據(jù)庫類型,這在很大程度上取決于您擁有的數(shù)據(jù)類型以及您希望如何使用它。一個好的 DBMS 是有用的,因?yàn)樗峁┝艘粋€集中的、統(tǒng)一的數(shù)據(jù)視圖,使您可以輕松了解數(shù)據(jù)的存儲位置及其當(dāng)前狀態(tài)。它還允許跨應(yīng)用程序使用數(shù)據(jù),而無需創(chuàng)建多個版本的數(shù)據(jù)。
與單獨(dú)的文件存儲相比,DBMS 確實(shí)會使用更多的內(nèi)存和 CPU 能力。然而,大多數(shù)企業(yè)發(fā)現(xiàn) DBMS 是值得的,尤其是對于大型或敏感數(shù)據(jù)集合。在為您的組織創(chuàng)建潛在解決方案的數(shù)據(jù)管理軟件列表時,您需要考慮如何組織數(shù)據(jù)庫基礎(chǔ)設(shè)施以及如何使用數(shù)據(jù)庫,并將其與每種類型的數(shù)據(jù)庫管理系統(tǒng)軟件進(jìn)行比較以找到最佳解決方案合身。