當前位置:首頁 » 操作系統 » 資料庫反範式

資料庫反範式

發布時間: 2022-05-26 10:27:05

1. 數據倉庫和傳統資料庫的區別和聯系是什麼

首先我們來了解數據倉庫和資料庫分別是什麼:
1、資料庫:是一種邏輯概念,用來存放數據的倉庫,通過資料庫軟體來實現。資料庫由很多表組成,表是二維的,一張表裡面有很多欄位。欄位一字排開,對數據就一行一行的寫入表中。資料庫的表,在於能夠用二維表現多維的關系。如:oracle、DB2、MySQL、Sybase、MSSQL Server等。
2、數據倉庫:是資料庫概念的升級。從邏輯上理解,資料庫和數據倉庫沒有區別,都是通過資料庫軟體實現存放數據的地方,只不過從數據量來說,數據倉庫要比資料庫更龐大德多。數據倉庫主要用於數據挖掘和數據分析,輔助領導做決策;


區別主要總結為以下幾點:

1.資料庫只存放在當前值,數據倉庫存放歷史值;
2.資料庫內數據是動態變化的,只要有業務發生,數據就會被更新,而數據倉庫則是靜態的歷史數據,只能定期添加、刷新;
3.資料庫中的數據結構比較復雜,有各種結構以適合業務處理系統的需要,而數據倉庫中的數據結構則相對簡單;
4.資料庫中數據訪問頻率較高,但訪問量較少,而數據倉庫的訪問頻率低但訪問量卻很高;
5.資料庫中數據的目標是面向業務處理人員的,為業務處理人員提供信息處理的支持,而數據倉庫則是面向高層管理人員的,為其提供決策支持;
6.資料庫在訪問數據時要求響應速度快,其響應時間一般在幾秒內,而數據倉庫的響應時間則可長達數幾小時

2. 數據倉庫與操作資料庫有何聯系和區別

資料庫是面向事務的設計,數據倉庫是面向主題設計的。資料庫一般存儲在線交易數據,數據倉庫存儲的一般是歷史數據。

資料庫設計是盡量避免冗餘,一般採用符合範式的規則來設計,數據倉庫在設計是有意引入冗餘,採用反範式的方式來設計。

資料庫是為捕獲數據而設計,數據倉庫是為分析數據而設計,它的兩個基本的元素是維表和事實表。(維是看問題的角度,比如時間,部門,維表放的就是這些東西的定義,事實表裡放著要查詢的數據,同時有維的ID)

數據倉庫,是在資料庫已經大量存在的情況下,為了進一步挖掘數據資源、為了決策需要而產生的,它決不是所謂的「大型資料庫」。那麼,數據倉庫與傳統資料庫比較,有哪些不同呢?讓我們先看看W.H.Inmon關於數據倉庫的定義:面向主題的、集成的、與時間相關且不可修改的數據集合。

「面向主題的」:傳統資料庫主要是為應用程序進行數據處理,未必按照同一主題存儲數據;數據倉庫側重於數據分析工作,是按照主題存儲的。這一點,類似於傳統農貿市場與超市的區別—市場裡面,白菜、蘿卜、香菜會在一個攤位上,如果它們是一個小販賣的;而超市裡,白菜、蘿卜、香菜則各自一塊。也就是說,市場里的菜(數據)是按照小販(應用程序)歸堆(存儲)的,超市裡面則是按照菜的類型(同主題)歸堆的。

「與時間相關」:資料庫保存信息的時候,並不強調一定有時間信息。數據倉庫則不同,出於決策的需要,數據倉庫中的數據都要標明時間屬性。決策中,時間屬性很重要。同樣都是累計購買過九車產品的顧客,一位是最近三個月購買九車,一位是最近一年從未買過,這對於決策者意義是不同的。

「不可修改」:數據倉庫中的數據並不是最新的,而是來源於其它數據源。數據倉庫反映的是歷史信息,並不是很多資料庫處理的那種日常事務數據(有的資料庫例如電信計費資料庫甚至處理實時信息)。因此,數據倉庫中的數據是極少或根本不修改的;當然,向數據倉庫添加數據是允許的。

數據倉庫的出現,並不是要取代資料庫。目前,大部分數據倉庫還是用關系資料庫管理系統來管理的。可以說,資料庫、數據倉庫相輔相成、各有千秋

補充一下,數據倉庫的方案建設的目的,是為前端查詢和分析作為基礎,由於有較大的冗餘,所以需要的存儲也較大。為了更好地為前端應用服務,數據倉庫必須有如下幾點優點,否則是失敗的數據倉庫方案。

1.效率足夠高。客戶要求的分析數據一般分為日、周、月、季、年等,可以看出,日為周期的數據要求的效率最高,要求24小時甚至12小時內,客戶能看到昨天的數據分析。由於有的企業每日的數據量很大,設計不好的數據倉庫經常會出問題,延遲1-3日才能給出數據,顯然不行的。

2.數據質量。客戶要看各種信息,肯定要准確的數據,但由於數據倉庫流程至少分為3步,2次ETL,復雜的架構會更多層次,那麼由於數據源有臟數據或者代碼不嚴謹,都可以導致數據失真,客戶看到錯誤的信息就可能導致分析出錯誤的決策,造成損失,而不是效益。

3.擴展性。之所以有的大型數據倉庫系統架構設計復雜,是因為考慮到了未來3-5年的擴展性,這樣的話,客戶不用太快花錢去重建數據倉庫系統,就能很穩定運行。主要體現在數據建模的合理性,數據倉庫方案中多出一些中間層,使海量數據流有足夠的緩沖,不至於數據量大很多,就運行不起來了.

3. 什麼是反範式

反範式是通過增加冗餘數據或數據分組來提高資料庫讀性能的過程。在某些情況下, 反範式有助於掩蓋關系型資料庫軟體的低效。關系型的範式資料庫即使做過優化, 也常常會帶來沉重的訪問負載。
資料庫的範式設計會存儲不同但相關的信息在不同的邏輯表, 如果這些表的存儲在物理上也是分離的,那麼從幾個表中完成資料庫的查詢可能就會很慢 (比如JOIN操作)。如果JOIN操作的表很多,那麼可能會慢得離譜。 有兩個辦法可以解決這個問題。首選的方法是使邏輯上的設計遵循範式, 但允許資料庫管理系統(DBMS)在磁碟上存儲額外的冗餘信息來加快查詢響應。 在這種情況下,DBMS還要保證冗餘副本與原始數據的一致性。 這種方法通常在SQL中以索引視圖(微軟的SQL Server)或物化視圖(Oracle)實現。 視圖將信息表示為方便查詢的格式,索引確保視圖上的查詢進行了優化。
更常見的做法是對數據做反範式設計。這種方法同樣能提高查詢響應速度, 但此時不再是DBMS而是資料庫設計者去保證數據的一致性。 資料庫設計者們通過在資料庫中創建規則來保證數據的一致性,這些規則叫約束。 這樣一來,資料庫設計的邏輯復雜度就增加了,同時額外約束的復雜度也增加了, 這使該方法變得危險。此外,「約束」在加快讀操作(SELECT)的同時,減慢了寫操作 (INSERT, UPDATE和DELETE)。這意味著一個反範式設計的資料庫, 可能比它的範式版本有著更差的寫性能。
反範式數據模型與沒有範式化的數據模型不同。 只有在範式化已經達到一定的滿意水平並且所需的約束和規則都已經建立起來, 才進行反範式化。例如,所有的關系都屬於第三範式, 連接的關系和多值依賴得到了妥善處理。

4. 為什麼數據倉庫不能替代資料庫並成為"業務數據倉庫

簡而言之,資料庫是面向事務的設計,數據倉庫是面向主題設計的。

資料庫一般存儲在線交易數據,數據倉庫存儲的一般是歷史數據。

資料庫設計是盡量避免冗餘,一般採用符合範式的規則來設計,數據倉庫在設計是有意引入冗餘,採用反範式的方式來設計。

資料庫是為捕獲數據而設計,數據倉庫是為分析數據而設計,它的兩個基本的元素是維表和事實表。維是看問題的角度,比如時間,部門,維表放的就是這些東西的定義,事實表裡放著要查詢的數據,同時有維的ID。

5. 資料庫根數據倉庫有什麼區別,如何區分

簡而言之,資料庫是面向事務的設計,數據倉庫是面向主題設計的。

資料庫一般存儲在線交易數據,數據倉庫存儲的一般是歷史數據。

資料庫設計是盡量避免冗餘,一般採用符合範式的規則來設計,數據倉庫在設計是有意引入冗餘,採用反範式的方式來設計。

資料庫是為捕獲數據而設計,數據倉庫是為分析數據而設計,它的兩個基本的元素是維表和事實表。維是看問題的角度,比如時間,部門,維表放的就是這些東西的定義,事實表裡放著要查詢的數據,同時有維的ID。

單從概念上講,有些晦澀。任何技術都是為應用服務的,結合應用可以很容易地理解。以銀行業務為例。資料庫是事務系統的數據平台,客戶在銀行做的每筆交易都會寫入資料庫,被記錄下來,這里,可以簡單地理解為用資料庫記帳。數據倉庫是分析系統的數據平台,它從事務系統獲取數據,並做匯總、加工,為決策者提供決策的依據。比如,某銀行某分行一個月發生多少交易,該分行當前存款余額是多少。如果存款又多,消費交易又多,那麼該地區就有必要設立ATM了。

顯然,銀行的交易量是巨大的,通常以百萬甚至千萬次來計算。事務系統是實時的,這就要求時效性,客戶存一筆錢需要幾十秒是無法忍受的,這就要求資料庫只能存儲很短一段時間的數據。而分析系統是事後的,它要提供關注時間段內所有的有效數據。這些數據是海量的,匯總計算起來也要慢一些,但是,只要能夠提供有效的分析數據就達到目的了。

數據倉庫,是在資料庫已經大量存在的情況下,為了進一步挖掘數據資源、為了決策需要而產生的,它決不是所謂的「大型資料庫」。那麼,數據倉庫與傳統資料庫比較,有哪些不同呢?讓我們先看看W.H.Inmon關於數據倉庫的定義:面向主題的、集成的、與時間相關且不可修改的數據集合。

「面向主題的」:傳統資料庫主要是為應用程序進行數據處理,未必按照同一主題存儲數據;數據倉庫側重於數據分析工作,是按照主題存儲的。這一點,類似於傳統農貿市場與超市的區別—市場裡面,白菜、蘿卜、香菜會在一個攤位上,如果它們是一個小販賣的;而超市裡,白菜、蘿卜、香菜則各自一塊。也就是說,市場里的菜(數據)是按照小販(應用程序)歸堆(存儲)的,超市裡面則是按照菜的類型(同主題)歸堆的。

「與時間相關」:資料庫保存信息的時候,並不強調一定有時間信息。數據倉庫則不同,出於決策的需要,數據倉庫中的數據都要標明時間屬性。決策中,時間屬性很重要。同樣都是累計購買過九車產品的顧客,一位是最近三個月購買九車,一位是最近一年從未買過,這對於決策者意義是不同的。

「不可修改」:數據倉庫中的數據並不是最新的,而是來源於其它數據源。數據倉庫反映的是歷史信息,並不是很多資料庫處理的那種日常事務數據(有的資料庫例如電信計費資料庫甚至處理實時信息)。因此,數據倉庫中的數據是極少或根本不修改的;當然,向數據倉庫添加數據是允許的。

數據倉庫的出現,並不是要取代資料庫。目前,大部分數據倉庫還是用關系資料庫管理系統來管理的。可以說,資料庫、數據倉庫相輔相成、各有千秋。

補充一下,數據倉庫的方案建設的目的,是為前端查詢和分析作為基礎,由於有較大的冗餘,所以需要的存儲也較大。為了更好地為前端應用服務,數據倉庫必須有如下幾點優點,否則是失敗的數據倉庫方案。

1.效率足夠高。客戶要求的分析數據一般分為日、周、月、季、年等,可以看出,日為周期的數據要求的效率最高,要求24小時甚至12小時內,客戶能看到昨天的數據分析。由於有的企業每日的數據量很大,設計不好的數據倉庫經常會出問題,延遲1-3日才能給出數據,顯然不行的。

2.數據質量。客戶要看各種信息,肯定要准確的數據,但由於數據倉庫流程至少分為3步,2次ETL,復雜的架構會更多層次,那麼由於數據源有臟數據或者代碼不嚴謹,都可以導致數據失真,客戶看到錯誤的信息就可能導致分析出錯誤的決策,造成損失,而不是效益。

3.擴展性。之所以有的大型數據倉庫系統架構設計復雜,是因為考慮到了未來3-5年的擴展性,這樣的話,客戶不用太快花錢去重建數據倉庫系統,就能很穩定運行。主要體現在數據建模的合理性,數據倉庫方案中多出一些中間層,使海量數據流有足夠的緩沖,不至於數據量大很多,就運行不起來了。

6. 數據倉庫和資料庫有什麼區別和聯系

簡而言之,資料庫是面向事務的設計,數據倉庫是面向主題設計的。

資料庫一般存儲在線交易數據,數據倉庫存儲的一般是歷史數據。

資料庫設計是盡量避免冗餘,一般採用符合範式的規則來設計,數據倉庫在設計是有意引入冗餘,採用反範式的方式來設計。

資料庫是為捕獲數據而設計,數據倉庫是為分析數據而設計,它的兩個基本的元素是維表和事實表。維是看問題的角度,比如時間,部門,維表放的就是這些東西的定義,事實表裡放著要查詢的數據,同時有維的ID。

單從概念上講,有些晦澀。任何技術都是為應用服務的,結合應用可以很容易地理解。以銀行業務為例。資料庫是事務系統的數據平台,客戶在銀行做的每筆交易都會寫入資料庫,被記錄下來,這里,可以簡單地理解為用資料庫記帳。數據倉庫是分析系統的數據平台,它從事務系統獲取數據,並做匯總、加工,為決策者提供決策的依據。比如,某銀行某分行一個月發生多少交易,該分行當前存款余額是多少。如果存款又多,消費交易又多,那麼該地區就有必要設立ATM了。

顯然,銀行的交易量是巨大的,通常以百萬甚至千萬次來計算。事務系統是實時的,這就要求時效性,客戶存一筆錢需要幾十秒是無法忍受的,這就要求資料庫只能存儲很短一段時間的數據。而分析系統是事後的,它要提供關注時間段內所有的有效數據。這些數據是海量的,匯總計算起來也要慢一些,但是,只要能夠提供有效的分析數據就達到目的了。

數據倉庫,是在資料庫已經大量存在的情況下,為了進一步挖掘數據資源、為了決策需要而產生的,它決不是所謂的「大型資料庫」。那麼,數據倉庫與傳統資料庫比較,有哪些不同呢?讓我們先看看W.H.Inmon關於數據倉庫的定義:面向主題的、集成的、與時間相關且不可修改的數據集合。

「面向主題的」:傳統資料庫主要是為應用程序進行數據處理,未必按照同一主題存儲數據;數據倉庫側重於數據分析工作,是按照主題存儲的。這一點,類似於傳統農貿市場與超市的區別—市場裡面,白菜、蘿卜、香菜會在一個攤位上,如果它們是一個小販賣的;而超市裡,白菜、蘿卜、香菜則各自一塊。也就是說,市場里的菜(數據)是按照小販(應用程序)歸堆(存儲)的,超市裡面則是按照菜的類型(同主題)歸堆的。

「與時間相關」:資料庫保存信息的時候,並不強調一定有時間信息。數據倉庫則不同,出於決策的需要,數據倉庫中的數據都要標明時間屬性。決策中,時間屬性很重要。同樣都是累計購買過九車產品的顧客,一位是最近三個月購買九車,一位是最近一年從未買過,這對於決策者意義是不同的。

「不可修改」:數據倉庫中的數據並不是最新的,而是來源於其它數據源。數據倉庫反映的是歷史信息,並不是很多資料庫處理的那種日常事務數據(有的資料庫例如電信計費資料庫甚至處理實時信息)。因此,數據倉庫中的數據是極少或根本不修改的;當然,向數據倉庫添加數據是允許的。

數據倉庫的出現,並不是要取代資料庫。目前,大部分數據倉庫還是用關系資料庫管理系統來管理的。可以說,資料庫、數據倉庫相輔相成、各有千秋。

補充一下,數據倉庫的方案建設的目的,是為前端查詢和分析作為基礎,由於有較大的冗餘,所以需要的存儲也較大。為了更好地為前端應用服務,數據倉庫必須有如下幾點優點,否則是失敗的數據倉庫方案。

1.效率足夠高。客戶要求的分析數據一般分為日、周、月、季、年等,可以看出,日為周期的數據要求的效率最高,要求24小時甚至12小時內,客戶能看到昨天的數據分析。由於有的企業每日的數據量很大,設計不好的數據倉庫經常會出問題,延遲1-3日才能給出數據,顯然不行的。

2.數據質量。客戶要看各種信息,肯定要准確的數據,但由於數據倉庫流程至少分為3步,2次ETL,復雜的架構會更多層次,那麼由於數據源有臟數據或者代碼不嚴謹,都可以導致數據失真,客戶看到錯誤的信息就可能導致分析出錯誤的決策,造成損失,而不是效益。

3.擴展性。之所以有的大型數據倉庫系統架構設計復雜,是因為考慮到了未來3-5年的擴展性,這樣的話,客戶不用太快花錢去重建數據倉庫系統,就能很穩定運行。主要體現在數據建模的合理性,數據倉庫方案中多出一些中間層,使海量數據流有足夠的緩沖,不至於數據量大很多,就運行不起來了。

7. 資料庫反範式化表設計和表的垂直和水平拆分什麼意思

1.水平拆分:
是根據主要查詢條件,水平分表。例如,用戶關系表, 根據用戶id:
用戶id為 1, 2, 3, 4,5 的五個用戶,採用取模的方式水平分表。將uid mod 3,取余數
這樣,id為1,4的用戶就在 t_user_1 的表裡, id 為2,5 的用戶在 t_user_2的表裡,id為3的就在t_user_3的表裡。這樣,所有用戶就平均水平分布在三個表裡。
查詢時,根據查詢條件,動態算出,該用戶信息存儲在哪個表裡
2.垂直拆分:
是根據數據量進行分表。例如,網購訂單表:
數據量過大,可能單表幾千萬條數據。那麼,垂直分表, 將id為1-1000000放在第一張表裡。
將id 1000000-2000000的放在第二張表裡。這樣,就實現了垂直分表。
查詢時,根據查詢條件,動態算出,該訂單信息存儲在哪個表裡

同樣可以,水平分庫, 垂直分庫。 也可以兩者相結合,形成資料庫矩陣集群。 數據表的矩陣。

資料庫範式:
目前關系資料庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、巴斯-科德範式(BCNF)、第四範式(4NF)和第五範式(5NF,又稱完美範式)。

具體可查看:http://ke..com/link?url=tUvhPptcmwVSWfG_

為了維持範式,會降低資料庫的查詢性能,大量冗餘信息等。在實際生產環境,很多情況下,不能去實現這種範式,所以要違反範式的定義,就是反範式資料庫設計。
範式只是一個理想化狀態,僅用於關系型資料庫。

8. 設計關系資料庫,有點糾結,求教。

這其實是關系型資料庫設計的永恆話題,範式與反範式。
從一開始學關系型資料庫設計開始,老師就會對我們說在進行資料庫的表結構設計時,運用範式會有多麼重要的意義。確實,在實際工作當中你也會發現範式確實非常重要,但是隨著工作的深入。你會慢慢發現有時候遵守範式反而會讓你掉入一個又一個陷阱,於是我們又會談到一個反範式的概念,什麼時候需要遵守範式�什麼時候又需要反範式。
這個就要根據自己項目的業務、數據量來找到中間的平衡點。希望對你有幫助。

9. 資料庫與數據倉庫的本質差別是什麼

資料庫與數據倉庫的本質差別如下:
1、邏輯層面/概念層面:資料庫和數據倉庫其實是一樣的或者及其相似的,都是通過某個資料庫軟體,基於某種數據模型來組織、管理數據。但是,資料庫通常更關注業務交易處理(OLTP),而數據倉庫更關注數據分析層面(OLAP),由此產生的資料庫模型上也會有很大的差異。
2、資料庫通常追求交易的速度,交易完整性,數據的一致性等,在資料庫模型上主要遵從範式模型(1NF,2NF,3NF等),從而盡可能減少數據冗餘,保證引用完整性;而數據倉庫強調數據分析的效率,復雜查詢的速度,數據之間的相關性分析,所以在資料庫模型上,數據倉庫喜歡使用多維模型,從而提高數據分析的效率。
3、產品實現層面:資料庫和數據倉庫軟體是有些不同的,資料庫通常使用行式存儲,如SAP ASE,Oracle, Microsoft SQL Server,而數據倉庫傾向使用列式存儲,如SAP IQ,SAP HANA。

10. 範式和反範式是什麼意思,資料庫相關問題。

資料庫設計的一些規則,反範式就是不遵循那些規則。像資料庫範式中的欄位冗餘就是反範式

熱點內容
mongodbphp安裝 發布:2025-01-12 04:41:08 瀏覽:578
sql存儲文件路徑 發布:2025-01-12 04:37:31 瀏覽:242
我的世界伺服器小灰機 發布:2025-01-12 04:21:36 瀏覽:931
九通車聯網賬號密碼多少 發布:2025-01-12 04:21:32 瀏覽:293
怎麼把伺服器的ip固定了 發布:2025-01-12 03:55:42 瀏覽:580
php伺服器開發 發布:2025-01-12 03:55:35 瀏覽:674
軟體自製編程 發布:2025-01-12 03:54:00 瀏覽:536
j2ee和java的區別 發布:2025-01-12 03:42:44 瀏覽:583
android6小米 發布:2025-01-12 03:38:35 瀏覽:87
redis與資料庫 發布:2025-01-12 03:20:21 瀏覽:213