一. 范式化與反范式化

范式是為了消除重復(fù)數(shù)據(jù)減少冗余數(shù)據(jù),從而讓數(shù)據(jù)庫內(nèi)的數(shù)據(jù)更好的組織,讓磁盤空間得到更有效利用的一種標(biāo)準(zhǔn)化標(biāo)準(zhǔn),滿足高等級的范式的先決條件是滿足低等級范式。在數(shù)據(jù)庫設(shè)計(jì)階段,明確集合的用途是對mongodb數(shù)據(jù)庫性能調(diào)優(yōu)非常重要的一步。根據(jù)集合中數(shù)據(jù)最常用的操作,對于頻繁更新和頻繁查詢的集合,我們最需要關(guān)注的重點(diǎn)是他們的范式化程度。

1.1 范式化

1.1.1 范式化的優(yōu)點(diǎn):

  1. 范式化的數(shù)據(jù)庫更新起來更加快;

  2. 范式化之后,只有很少的重復(fù)數(shù)據(jù),只需要修改更少的數(shù)據(jù);

  3. 范式化的表更小,可以在內(nèi)存中執(zhí)行;

  4. 很少的冗余數(shù)據(jù),在查詢的時(shí)候需要更少的distinct或者group by語句。

1.1.2 范式化的缺點(diǎn):

  1. 范式化的表,在查詢的時(shí)候經(jīng)常需要很多的關(guān)聯(lián),因?yàn)閱为?dú)一個(gè)表內(nèi)不存在冗余和重復(fù)數(shù)據(jù)。這導(dǎo)致,稍微復(fù)雜一些的查詢語句在查詢范式的schema上都可能需要較多次的關(guān)聯(lián)。這會(huì)增加讓查詢的代價(jià),也可能使一些索引策略無效。因?yàn)榉妒交瘜⒘写娣旁诓煌谋碇校@些列在一個(gè)表中本可以屬于同一個(gè)索引。

網(wǎng)友評論