MyBatis的存在就是爲了簡化對關係數據庫的訪問。數據庫的確很是複雜,要正確地使用它們須要作不少的工做。數據庫負責管理數據和修改數據。咱們使用數據庫而不簡簡單單地使用一個 平板文件的緣由就在於數據庫爲咱們提供了許多好處,特別是在數據完整性、性能以及安全性方面。html
數據完整性算法
數據完整性多是數據庫提供的最重要的好處了,由於沒有數據完整性,其餘一切就沒有意義了。若是數據不是一致的、可靠的以及正確的,那它們又有多少價值呢。數據庫經過使用強數 據類型,強制約束,以及使用事務從而實現數據完整性的要求。數據庫
數據庫是強類型的,即一旦建立了一個數據庫表,那麼它的每一個列就被指定爲只能存儲某種特定類型的數據。數據庫管理系統保證了存儲在表中的數據的類型相對於列是正確的。舉個例子, 某個表可能將其某列定義爲VARCHAR(25> NOT NULL。這就保證了存儲在該列中的數據是字符且 長度不會超過25,另外定義中的NOT NULL部分保證了該數據是必需的,也即你必須爲該列提供 一個值。緩存
除了強數據類型,還能夠對數據庫表使用一些其餘約束。這些約束一般在範圍上更廣,由於 它們處理的每每不僅是某一列。約束一般涉及對錶中多條記錄(甚至是多個表)的驗證。例如 UNIQUE約束就要保證表中指定列的值不重複。再如外鍵(FOREIGN KEY)約束,這種約束保證 表中某列的取值必定來自於關聯表中的相關列。外鍵約束是用於描述表間關係的,所以它對於關 係數據庫設計以及數據完整性很是重要,不可或缺。安全
數據庫維護數據完整性最重要的方式之一就是使用事務。大多數業務功能都須要使用不少種類型的數據,它們每每來自不一樣的數據庫。一般這些數據會以某種方式相互關聯,所以須要一致 更新。使用事務,數據庫管理系統能夠保證全部的相關數據以一種一致的方式被更新。更重要的是,事務容許系統的多個用戶同時更新數據而不形成衝突。關於事務還有許多知識須要瞭解。服務器
性能網絡
關係數據庫能夠幫助咱們得到使用平板文件時很難得到的高性能。也就是說,數據庫性能並非免費的,要想得到高性能你須要大量的時間和專家經驗。數據庫性能可被分爲3個關鍵因素: 設計、軟件調整以及硬件。數據庫設計
要提升數據庫的性能,首先要考慮的因素就是設計。一個糟糕的關係數據庫設計帶來的低效 可能用再多的軟件調整和額外的硬件也沒法糾正。糟糕的設計可能形成死鎖、指數級的關係運算 或者是幾百萬條記錄的數據庫表掃描。正確的設計很是重要。性能
對大型數據庫來講,軟件調整是提升性能要考慮的第二重要的因素。調整關係數據庫系統需 要有相應的對咱們使用的特定RDBMS軟件有過專門訓練且富有經驗的專業人士。雖然RDBMS 軟件的某些特徵號稱是跨越各個不一樣的產品的,但一般每種產品都有其精妙而細微的差異,所以 須要針對該特定軟件的專業人士。性能調整能夠帶來某些巨大的好處。例如僅僅是數據庫索引的 調整就能夠將本來須要執行幾分鐘的複雜查詢變爲只需幾秒種。RDBMS中可調整的部分有不少, 如高速緩存、文件管理、各類索引算法,甚至還能夠考慮操做系統。同一個RDBMS軟件在不一樣 的操做系統上表現出的行爲可能也是不一樣的,所以計對不一樣的操做系統也要進行不一樣的調整。不 用多說了,反正調整數據庫軟件須要付出大量的努力。數據庫到底應該如何調整己經超出了本書 的討論範圍,可是知道軟件調整也是一種很是重要的提升數據庫性能的因素仍是很重要的。請與 DBA (即數據庫管理員)好好協調。加密
大型關係數據庫系統一般對計算機硬件的要求都比較高。也正是由於這個緣由,許多公司裏性能最強大的服務器每每都是數據庫服務器。在許多公司裏,數據庫就是他們的「宇宙中心」,所以 針對數據庫的硬件投入大量的資金也就不足爲奇了。快速磁盤陣列、I/O控制器、硬件高速緩存以 及網絡接口,全部這一切對於大型數據庫管理系統的性能來講都是相當重要的。有了這些,你就再 不能將硬件做爲糟糕的數據庫設計的藉口或者做爲RDBMS調整的替代了。硬件不該該拿來解決性 能問題——它應當用來知足性能需求。關於硬件更深刻的討論一樣也超出了本書的範圍,但當你使 用一個大型數據庫系統時,考慮到這個因素仍是很重要的。也還請你與DBA好好協調。
安全性
關係數據庫系統也提供了額外的安全性。咱們在平常工做中使用的大量數據都是保密的。近年來,我的隱私愈來愈受到關注,安全性已經成爲全部數據都需具有的一個基本要求。基於這個 緣由,甚至一我的的全名這樣的簡單信息也能夠被認爲是保密的,由於它是潛在的惟一標識信息。
其餘的信息(例如,社會保險號碼和信用卡帳號)須要像強加密這樣的更高級別的安全保護。大 多數商務性質的關係數據庫都包括許多先進的安全特性,容許更細粒度的安全性以及數據加密。 每一個數據庫都有其獨特的安全需求。最重要的是你要理解它們,由於應用程序代碼毫不能削弱數 據庫的安全策略。
不一樣的數據庫有不一樣級別的數據完整性、性能和安全性。一般來講,數據庫的大小、數據的價值以及數據庫相關人員的多少會決定這些級別。
系列文章: