什么是數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)是一個(gè)程序,幫助管理數(shù)據(jù)用的。那么管理數(shù)據(jù)會(huì)面對(duì)哪些挑戰(zhàn)呢?

  • 數(shù)據(jù)在磁盤上可以高效管理的組織方式
  • 并發(fā)時(shí)能保證ACID(因?yàn)楹芏嘞到y(tǒng)對(duì)ACID的需求不那么嚴(yán)格,所以出現(xiàn)了某些NOSQL提出的最終一致性的調(diào)整)
  • 在程序運(yùn)行到任何一步發(fā)生斷電/系統(tǒng)崩潰后,能恢復(fù)且保證ACID
  • 分布式ACID
  • 使用內(nèi)存提高數(shù)據(jù)管理性能,但仍要保證ACID的前提
  • 方便使用

說(shuō)白了,就是在保證ACID(數(shù)據(jù)正確性)的前提下,對(duì)數(shù)據(jù)進(jìn)行管理的程序。我提到了很多次ACID,具體就不展開(kāi)來(lái)講,網(wǎng)上有很多相關(guān)資料。無(wú)論怎么解讀,其實(shí)就是在說(shuō)保證數(shù)據(jù)的正確性這個(gè)議題。

如果要展開(kāi)說(shuō),數(shù)據(jù)庫(kù)的內(nèi)容就很多了,我這里就簡(jiǎn)要地提幾個(gè)關(guān)鍵的地方,短短幾句話不可能面面俱到,請(qǐng)不要在意行文細(xì)節(jié)上的邏輯漏洞。

  • 行級(jí)別的約束,比如性別(男/女),如果一個(gè)叫“火車”的性別記錄到數(shù)據(jù)庫(kù)里,那這個(gè)記錄就失去了準(zhǔn)確性了。
  • 表級(jí)的約束,比如唯一約束uniq。
  • 跨表級(jí)的約束,比如外鍵,例如一個(gè)學(xué)校有Bob/Lob兩位班主任,那通過(guò)外鍵可以約束A班的班主任只能是Bob或是Lob。同時(shí)也能約束這個(gè)系統(tǒng)不能失去班主任Bob和Lob的信息,除非他們已經(jīng)不屬于任何一個(gè)班級(jí)了。
  • 所有針對(duì)數(shù)據(jù)的改變都要落到磁盤上,大部分?jǐn)?shù)據(jù)庫(kù)的做法都是所有的修改都追加寫(xiě)入日志文件而不是直接修改存放數(shù)據(jù)的文件。這樣就能做到回滾、斷電保護(hù)等效果。
  • 提高查詢速度的內(nèi)存緩存,數(shù)據(jù)庫(kù)會(huì)把磁盤上的數(shù)據(jù)放入內(nèi)存進(jìn)行緩存,如果已經(jīng)緩存好了,就不會(huì)再去磁盤上讀了。雖然是緩存,仍不能拋棄ACID,這比平時(shí)用的如memcache等的緩存要求要嚴(yán)格得多。
  • 提高查詢速度的索引,數(shù)據(jù)庫(kù)在進(jìn)行很多操作的時(shí)候,都可以藉由索引提高速度,比如查詢時(shí)select a where b = 1(b有索引),比如進(jìn)行uniq判斷時(shí)update a set b = 2(b要求唯一)。
  • 多臺(tái)數(shù)據(jù)庫(kù)組成的分布式系統(tǒng),需要保證整體上的ACID,一種設(shè)計(jì)就是一個(gè)全局的事務(wù)管理服務(wù)加上每個(gè)數(shù)據(jù)庫(kù)都使用兩階段提交機(jī)制進(jìn)行分段式事務(wù)管理。

每一個(gè)方面的展開(kāi),都有許許多多的細(xì)節(jié),高效合理地?cái)?shù)據(jù)管理是個(gè)大工程,所以就像操作系統(tǒng)一樣,數(shù)據(jù)庫(kù)這樣一個(gè)程序經(jīng)久不衰,一直被人關(guān)注著。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、數(shù)據(jù)庫(kù)定義 1、顧名思義,數(shù)據(jù)庫(kù)(DB,database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的“倉(cāng)庫(kù)”。 2...
    IvanHung閱讀 4,701評(píng)論 0 2
  • 1、狹義:存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù) 2、廣義:可以對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和管理的軟件以及數(shù)據(jù)本身統(tǒng)稱為數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)是由表、關(guān)系、操...
    fa54021d36e2閱讀 381評(píng)論 0 0
  • 需要原文的可以留下郵箱我給你發(fā),這里的文章少了很多圖,懶得網(wǎng)上粘啦 1數(shù)據(jù)庫(kù)基礎(chǔ) 1.1數(shù)據(jù)庫(kù)定義 1)數(shù)據(jù)庫(kù)(D...
    極簡(jiǎn)純粹_閱讀 7,895評(píng)論 0 46
  • MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎(第2版) 姜承堯 第1章 MySQL體系結(jié)構(gòu)和存儲(chǔ)引擎 >> 在上述例子...
    沉默劍士閱讀 7,636評(píng)論 0 16
  • 我想唱一首歌, 送給2016的那些糾結(jié), 但愿明早睜開(kāi)眼睛, 我醒在心想事成的2017。
    吳春年閱讀 386評(píng)論 3 3

友情鏈接更多精彩內(nèi)容