Ⅰ 哪種數據倉庫架構最成功
一直想整理一下這塊內容,既然是漫談,就想起什麼說什麼吧。我一直是在互聯網行業,就以互聯網行業來說。
先大概列一下互聯網行業數據倉庫、數據平台的用途:
整合公司所有業務數據,建立統一的數據中心;
提供各種報表,有給高層的,有給各個業務的;
為網站運營提供運營上的數據支持,就是通過數據,讓運營及時了解網站和產品的運營效果;
為各個業務提供線上或線下的數據支持,成為公司統一的數據交換與提供平台;
分析用戶行為數據,通過數據挖掘來降低投入成本,提高投入效果;比如廣告定向精準投放、用戶個性化推薦等;
開發數據產品,直接或間接為公司盈利;
建設開放數據平台,開放公司數據;
。。。。。。
- 上面列出的內容看上去和傳統行業數據倉庫用途差不多,並且都要求數據倉庫/數據平台有很好的穩定性、可靠性;但在互聯網行業,除了數據量大之外,越來越多的業務要求時效性,甚至很多是要求實時的 ,另外,互聯網行業的業務變化非常快,不可能像傳統行業一樣,可以使用自頂向下的方法建立數據倉庫,一勞永逸,它要求新的業務很快能融入數據倉庫中來,老的下線的業務,能很方便的從現有的數據倉庫中下線;
- 其實,互聯網行業的數據倉庫就是所謂的敏捷數據倉庫,不但要求能快速的響應數據,也要求能快速的響應業務;
- 建設敏捷數據倉庫,除了對架構技術上的要求之外,還有一個很重要的方面,就是數據建模,如果一上來就想著建立一套能兼容所有數據和業務的數據模型,那就又回到傳統數據倉庫的建設上了,很難滿足對業務變化的快速響應。應對這種情況,一般是先將核心的持久化的業務進行深度建模(比如:基於網站日誌建立的網站統計分析模型和用戶瀏覽軌跡模型;基於公司核心用戶數據建立的用戶模型),其它的業務一般都採用維度+寬表的方式來建立數據模型。這塊是後話。
- 整體架構下面的圖是我們目前使用的數據平台架構圖,其實大多公司應該都差不多:
- 邏輯上,一般都有數據採集層、數據存儲與分析層、數據共享層、數據應用層。可能叫法有所不同,本質上的角色都大同小異。
- 我們從下往上看:
- 數據採集數據採集層的任務就是把數據從各種數據源中採集和存儲到數據存儲上,期間有可能會做一些簡單的清洗。
- 數據源的種類比較多:
網站日誌:
- 作為互聯網行業,網站日誌占的份額最大,網站日誌存儲在多台網站日誌伺服器上,
- 一般是在每台網站日誌伺服器上部署flume agent,實時的收集網站日誌並存儲到HDFS上;
業務資料庫:
- 業務資料庫的種類也是多種多樣,有Mysql、Oracle、SqlServer等,這時候,我們迫切的需要一種能從各種資料庫中將數據同步到HDFS上的工具,Sqoop是一種,但是Sqoop太過繁重,而且不管數據量大小,都需要啟動MapRece來執行,而且需要Hadoop集群的每台機器都能訪問業務資料庫;應對此場景,淘寶開源的DataX,是一個很好的解決方案(可參考文章 《異構數據源海量數據交換工具-Taobao DataX 下載和使用》),有資源的話,可以基於DataX之上做二次開發,就能非常好的解決,我們目前使用的DataHub也是。
- 當然,Flume通過配置與開發,也可以實時的從資料庫中同步數據到HDFS。
來自於Ftp/Http的數據源:
- 有可能一些合作夥伴提供的數據,需要通過Ftp/Http等定時獲取,DataX也可以滿足該需求;
其他數據源:
- 比如一些手工錄入的數據,只需要提供一個介面或小程序,即可完成;
- 數據存儲與分析毋庸置疑,HDFS是大數據環境下數據倉庫/數據平台最完美的數據存儲解決方案。
- 離線數據分析與計算,也就是對實時性要求不高的部分,在我看來,Hive還是首當其沖的選擇,豐富的數據類型、內置函數;壓縮比非常高的ORC文件存儲格式;非常方便的SQL支持,使得Hive在基於結構化數據上的統計分析遠遠比MapRece要高效的多,一句SQL可以完成的需求,開發MR可能需要上百行代碼;
- 當然,使用Hadoop框架自然而然也提供了MapRece介面,如果真的很樂意開發Java,或者對SQL不熟,那麼也可以使用MapRece來做分析與計算;Spark是這兩年非常火的,經過實踐,它的性能的確比MapRece要好很多,而且和Hive、Yarn結合的越來越好,因此,必須支持使用Spark和SparkSQL來做分析和計算。因為已經有Hadoop Yarn,使用Spark其實是非常容易的,不用單獨部署Spark集群,關於Spark On Yarn的相關文章,可參考:《Spark On Yarn系列文章》
- 實時計算部分,後面單獨說。
- 數據共享這里的數據共享,其實指的是前面數據分析與計算後的結果存放的地方,其實就是關系型資料庫和NOSQL資料庫;
- 前面使用Hive、MR、Spark、SparkSQL分析和計算的結果,還是在HDFS上,但大多業務和應用不可能直接從HDFS上獲取數據,那麼就需要一個數據共享的地方,使得各業務和產品能方便的獲取數據;和數據採集層到HDFS剛好相反,這里需要一個從HDFS將數據同步至其他目標數據源的工具,同樣,DataX也可以滿足。
- 另外,一些實時計算的結果數據可能由實時計算模塊直接寫入數據共享。
- 數據應用
業務產品
- 業務產品所使用的數據,已經存在於數據共享層,他們直接從數據共享層訪問即可;
報表
- 同業務產品,報表所使用的數據,一般也是已經統計匯總好的,存放於數據共享層;
即席查詢
- 即席查詢的用戶有很多,有可能是數據開發人員、網站和產品運營人員、數據分析人員、甚至是部門老大,他們都有即席查詢數據的需求;
- 這種即席查詢通常是現有的報表和數據共享層的數據並不能滿足他們的需求,需要從數據存儲層直接查詢。
- 即席查詢一般是通過SQL完成,最大的難度在於響應速度上,使用Hive有點慢,目前我的解決方案是SparkSQL,它的響應速度較Hive快很多,而且能很好的與Hive兼容。
- 當然,你也可以使用Impala,如果不在乎平台中再多一個框架的話。
OLAP
- 目前,很多的OLAP工具不能很好的支持從HDFS上直接獲取數據,都是通過將需要的數據同步到關系型資料庫中做OLAP,但如果數據量巨大的話,關系型資料庫顯然不行;
- 這時候,需要做相應的開發,從HDFS或者HBase中獲取數據,完成OLAP的功能;
- 比如:根據用戶在界面上選擇的不定的維度和指標,通過開發介面,從HBase中獲取數據來展示。
其它數據介面
- 這種介面有通用的,有定製的。比如:一個從Redis中獲取用戶屬性的介面是通用的,所有的業務都可以調用這個介面來獲取用戶屬性。
- 實時計算現在業務對數據倉庫實時性的需求越來越多,比如:實時的了解網站的整體流量;實時的獲取一個廣告的曝光和點擊;在海量數據下,依靠傳統資料庫和傳統實現方法基本完成不了,需要的是一種分布式的、高吞吐量的、延時低的、高可靠的實時計算框架;Storm在這塊是比較成熟了,但我選擇Spark Streaming,原因很簡單,不想多引入一個框架到平台中,另外,Spark Streaming比Storm延時性高那麼一點點,那對於我們的需要可以忽略。
- 我們目前使用Spark Streaming實現了實時的網站流量統計、實時的廣告效果統計兩塊功能。
- 做法也很簡單,由Flume在前端日誌伺服器上收集網站日誌和廣告日誌,實時的發送給Spark Streaming,由Spark Streaming完成統計,將數據存儲至Redis,業務通過訪問Redis實時獲取。
- 任務調度與監控在數據倉庫/數據平台中,有各種各樣非常多的程序和任務,比如:數據採集任務、數據同步任務、數據分析任務等;
- 這些任務除了定時調度,還存在非常復雜的任務依賴關系,比如:數據分析任務必須等相應的數據採集任務完成後才能開始;數據同步任務需要等數據分析任務完成後才能開始;這就需要一個非常完善的任務調度與監控系統,它作為數據倉庫/數據平台的中樞,負責調度和監控所有任務的分配與運行。
- 前面有寫過文章,《大數據平台中的任務調度與監控》,這里不再累贅。
- 總結在我看來架構並不是技術越多越新越好,而是在可以滿足需求的情況下,越簡單越穩定越好。目前在我們的數據平台中,開發更多的是關注業務,而不是技術,他們把業務和需求搞清楚了,基本上只需要做簡單的SQL開發,然後配置到調度系統就可以了,如果任務異常,會收到告警。這樣,可以使更多的資源專注於業務之上。
Ⅱ 請問數據倉庫都用什麼建立
數據倉庫是為了管理數據,主要是思想。
具體實施的工具就是為了解決問題而選取了
比如異構/不同源數據的數據抽取問題,要用到etl,可能會用工具 或者自己寫程序,看情況而定『
數據倉庫的模型建設,要用到erwin等建模工具;
數據的存放一般是藉助關系資料庫來實現,那麼會用到oracle之類。不過現在已經開始慢慢摒棄傳統關系資料庫了,藉助一些No sql平台,比如hadoop上的hive之類。
不過無論用什麼工具,一定要記住,數據倉庫的思想是不變的,就是管理數據、把數據的價值通過有效地管理而展現出來,不經管理的數據就是一堆沒有提煉的金礦,看著很值錢,直接狗屁用沒有。
Ⅲ 公司這邊要搭建數據倉庫,用什麼資料庫比較好
開源的資料庫不少,公司內部使用的話,看你的實際需求,如果結構比較簡單,數據量不大的,從網上下載個mysql和對應的管理工具就行。如果稍復雜的,就用大型的關系型資料庫吧,如oracle、SQL SERVER等等。
Ⅳ 選擇什麼樣的數據倉庫架構比較好如何選擇呢
一直想整理一下這塊內容,既然是漫談,就想起什麼說什麼吧。我一直是在互聯網行業,就以互聯網行業來說。
先大概列一下互聯網行業數據倉庫、數據平台的用途:
整合公司所有業務數據,建立統一的數據中心;
提供各種報表,有給高層的,有給各個業務的;
為網站運營提供運營上的數據支持,就是通過數據,讓運營及時了解網站和產品的運營效果;
為各個業務提供線上或線下的數據支持,成為公司統一的數據交換與提供平台;
分析用戶行為數據,通過數據挖掘來降低投入成本,提高投入效果;比如廣告定向精準投放、用戶個性化推薦等;
開發數據產品,直接或間接為公司盈利;
建設開放數據平台,開放公司數據;
。。。。。。
上面列出的內容看上去和傳統行業數據倉庫用途差不多,並且都要求數據倉庫/數據平台有很好的穩定性、可靠性;但在互聯網行業,除了數據量大之外,越來越多的業務要求時效性,甚至很多是要求實時的 ,另外,互聯網行業的業務變化非常快,不可能像傳統行業一樣,可以使用自頂向下的方法建立數據倉庫,一勞永逸,它要求新的業務很快能融入數據倉庫中來,老的下線的業務,能很方便的從現有的數據倉庫中下線;
其實,互聯網行業的數據倉庫就是所謂的敏捷數據倉庫,不但要求能快速的響應數據,也要求能快速的響應業務;
建設敏捷數據倉庫,除了對架構技術上的要求之外,還有一個很重要的方面,就是數據建模,如果一上來就想著建立一套能兼容所有數據和業務的數據模型,那就又回到傳統數據倉庫的建設上了,很難滿足對業務變化的快速響應。應對這種情況,一般是先將核心的持久化的業務進行深度建模(比如:基於網站日誌建立的網站統計分析模型和用戶瀏覽軌跡模型;基於公司核心用戶數據建立的用戶模型),其它的業務一般都採用維度+寬表的方式來建立數據模型。這塊是後話。
整體架構下面的圖是我們目前使用的數據平台架構圖,其實大多公司應該都差不多:
邏輯上,一般都有數據採集層、數據存儲與分析層、數據共享層、數據應用層。可能叫法有所不同,本質上的角色都大同小異。
我們從下往上看:
數據採集數據採集層的任務就是把數據從各種數據源中採集和存儲到數據存儲上,期間有可能會做一些簡單的清洗。
數據源的種類比較多:
網站日誌:
作為互聯網行業,網站日誌占的份額最大,網站日誌存儲在多台網站日誌伺服器上,
一般是在每台網站日誌伺服器上部署flume agent,實時的收集網站日誌並存儲到HDFS上;
業務資料庫:
業務資料庫的種類也是多種多樣,有Mysql、Oracle、SqlServer等,這時候,我們迫切的需要一種能從各種資料庫中將數據同步到HDFS上的工具,Sqoop是一種,但是Sqoop太過繁重,而且不管數據量大小,都需要啟動MapRece來執行,而且需要Hadoop集群的每台機器都能訪問業務資料庫;應對此場景,淘寶開源的DataX,是一個很好的解決方案(可參考文章 《異構數據源海量數據交換工具-Taobao DataX 下載和使用》),有資源的話,可以基於DataX之上做二次開發,就能非常好的解決,我們目前使用的DataHub也是。
當然,Flume通過配置與開發,也可以實時的從資料庫中同步數據到HDFS。
來自於Ftp/Http的數據源:
有可能一些合作夥伴提供的數據,需要通過Ftp/Http等定時獲取,DataX也可以滿足該需求;
其他數據源:
比如一些手工錄入的數據,只需要提供一個介面或小程序,即可完成;
數據存儲與分析毋庸置疑,HDFS是大數據環境下數據倉庫/數據平台最完美的數據存儲解決方案。
離線數據分析與計算,也就是對實時性要求不高的部分,在我看來,Hive還是首當其沖的選擇,豐富的數據類型、內置函數;壓縮比非常高的ORC文件存儲格式;非常方便的SQL支持,使得Hive在基於結構化數據上的統計分析遠遠比MapRece要高效的多,一句SQL可以完成的需求,開發MR可能需要上百行代碼;
當然,使用Hadoop框架自然而然也提供了MapRece介面,如果真的很樂意開發Java,或者對SQL不熟,那麼也可以使用MapRece來做分析與計算;Spark是這兩年非常火的,經過實踐,它的性能的確比MapRece要好很多,而且和Hive、Yarn結合的越來越好,因此,必須支持使用Spark和SparkSQL來做分析和計算。因為已經有Hadoop Yarn,使用Spark其實是非常容易的,不用單獨部署Spark集群,關於Spark On Yarn的相關文章,可參考:《Spark On Yarn系列文章》
實時計算部分,後面單獨說。
數據共享這里的數據共享,其實指的是前面數據分析與計算後的結果存放的地方,其實就是關系型資料庫和NOSQL資料庫;
前面使用Hive、MR、Spark、SparkSQL分析和計算的結果,還是在HDFS上,但大多業務和應用不可能直接從HDFS上獲取數據,那麼就需要一個數據共享的地方,使得各業務和產品能方便的獲取數據;和數據採集層到HDFS剛好相反,這里需要一個從HDFS將數據同步至其他目標數據源的工具,同樣,DataX也可以滿足。
另外,一些實時計算的結果數據可能由實時計算模塊直接寫入數據共享。
數據應用
業務產品
業務產品所使用的數據,已經存在於數據共享層,他們直接從數據共享層訪問即可;
報表
同業務產品,報表所使用的數據,一般也是已經統計匯總好的,存放於數據共享層;
即席查詢
即席查詢的用戶有很多,有可能是數據開發人員、網站和產品運營人員、數據分析人員、甚至是部門老大,他們都有即席查詢數據的需求;
這種即席查詢通常是現有的報表和數據共享層的數據並不能滿足他們的需求,需要從數據存儲層直接查詢。
即席查詢一般是通過SQL完成,最大的難度在於響應速度上,使用Hive有點慢,目前我的解決方案是SparkSQL,它的響應速度較Hive快很多,而且能很好的與Hive兼容。
當然,你也可以使用Impala,如果不在乎平台中再多一個框架的話。
OLAP
目前,很多的OLAP工具不能很好的支持從HDFS上直接獲取數據,都是通過將需要的數據同步到關系型資料庫中做OLAP,但如果數據量巨大的話,關系型資料庫顯然不行;
這時候,需要做相應的開發,從HDFS或者HBase中獲取數據,完成OLAP的功能;
比如:根據用戶在界面上選擇的不定的維度和指標,通過開發介面,從HBase中獲取數據來展示。
其它數據介面
這種介面有通用的,有定製的。比如:一個從Redis中獲取用戶屬性的介面是通用的,所有的業務都可以調用這個介面來獲取用戶屬性。
實時計算現在業務對數據倉庫實時性的需求越來越多,比如:實時的了解網站的整體流量;實時的獲取一個廣告的曝光和點擊;在海量數據下,依靠傳統資料庫和傳統實現方法基本完成不了,需要的是一種分布式的、高吞吐量的、延時低的、高可靠的實時計算框架;Storm在這塊是比較成熟了,但我選擇Spark Streaming,原因很簡單,不想多引入一個框架到平台中,另外,Spark Streaming比Storm延時性高那麼一點點,那對於我們的需要可以忽略。
我們目前使用Spark Streaming實現了實時的網站流量統計、實時的廣告效果統計兩塊功能。
做法也很簡單,由Flume在前端日誌伺服器上收集網站日誌和廣告日誌,實時的發送給Spark Streaming,由Spark Streaming完成統計,將數據存儲至Redis,業務通過訪問Redis實時獲取。
任務調度與監控在數據倉庫/數據平台中,有各種各樣非常多的程序和任務,比如:數據採集任務、數據同步任務、數據分析任務等;
這些任務除了定時調度,還存在非常復雜的任務依賴關系,比如:數據分析任務必須等相應的數據採集任務完成後才能開始;數據同步任務需要等數據分析任務完成後才能開始;這就需要一個非常完善的任務調度與監控系統,它作為數據倉庫/數據平台的中樞,負責調度和監控所有任務的分配與運行。
前面有寫過文章,《大數據平台中的任務調度與監控》,這里不再累贅。
總結在我看來架構並不是技術越多越新越好,而是在可以滿足需求的情況下,越簡單越穩定越好。目前在我們的數據平台中,開發更多的是關注業務,而不是技術,他們把業務和需求搞清楚了,基本上只需要做簡單的SQL開發,然後配置到調度系統就可以了,如果任務異常,會收到告警。這樣,可以使更多的資源專注於業務之上。
Ⅳ Oracle,SQL_server,MySQL,DB2,Access,Sybase6個資料庫那個最適合下面的情況
呵呵..其實在主流的關系型資料庫中,樓主還漏掉了informix和PostgreSQL,樓上的答案在一般情況下是比較正確的.我再給樓主說下那些資料庫的應用背景好了. Access是小型應用資料庫,SQL server是部門級應用的資料庫,MY SQL和postgreSQL是部門級和企業級都合適的應用資料庫,Oracle,DB2和informix是大型企業級應用的資料庫 首先根據樓主的需求,我們排除使用DB2和Access的可能性,因為前者過大而後者過小,一套完整的DB2資料庫售價超過百萬,咱全國的應用DB2資料庫的單位不超過10個,我印象中北京氣象局(要麼是環境局.)好象有一套,但是基本是被他們拿去炫耀用的,相當浪費...ACCESS的使用背景過小,只有如備忘錄這樣的小軟體才適合使用access 然後,盡量不推薦使用sybase和上面題到了informix與postgreSQL,因為國內對應第1和第3種資料庫的專業維護人員比較少,使用量和可查資料也不多,遇到問題不容易解決,informix雖然用量不少,但中文資料實在少的可憐.. 多數情況下,對於"人員管理"類的管理系統尤其是學校應用的管理系統,用SQL Server最合適,因為學校的資料庫教學內容一般都是SQL Server,對於它的技術人員(比如老師)比較多,解決問題比較方便.也適合處理較大的數據量.MY SQL也比較合適,對於應用於學校的管理系統的需求而言,它唯一比SQL Server差的地方只再於前面提到的很少有學校教MY SQL..但是MY SQL是個開源的資料庫,如果考慮買一個資料庫的使用許可需要花費的資金的話,MY SQL就算不免費也比SQL Server便宜. 而oracle是面向商務應用最合適的大型資料庫,一般用在"XX分析系統"或"數據倉庫系統"上,用在"學院管理系統"上有點大材小用,如果這個學校有相當宏偉的目標,比如打造全國最頂級的5星級大學,為此需要進行不同於普通大學的精密且特殊的分析和報表圖形展示,這樣的系統可以考慮使用Oracle,但是價格肯定也是5星級的..
Ⅵ 採用SQL Server構建數據倉庫的相關軟體有哪些
Myeclipse JBuilder都可以啊
Ⅶ 資料庫學習哪一種比較好
一、Oracle
Oracle資料庫在市場佔比算是最高的商業資料庫了,功能最強大、但復雜的不得了,Oracle可以說是最難的資料庫了,不是我們平頭老百姓的菜,小編自學也是學得其中皮毛而已,不過,通過第三方軟體來訪問它也是很方便的,這裡面第三方軟體是比較容易學的,關於Oracle資料庫這裡面就不詳細介紹了,有興趣的可以找一些這方面專業的書籍吸收一下。
二、MySQL
MySQL歷史悠久,用戶使用活躍,而且體積小,安裝方便,易於維護,MySQL口碑也較好,它是一款免費軟體,是一個真正的多用戶、多線程SQL資料庫伺服器。它是以客戶機/伺服器結構實現的,由一個伺服器守護程序以及很多不同的客戶程序和庫組成。它能夠快捷、有效和安全地處理大量的數據。相對於Oracle等資料庫來說,MySQL的使用非常簡單,它的主要目標是快速、便捷和易用,功能也是相當的強大,用到的語言都是標準的結構化查詢語言SQL。
三、SQL Server
SQL Server之所以能夠在資料庫領域獨占鰲頭,也是有它的特色之處。它最初由三家公司共同開發,它是一個分布式的關系型資料庫管理系統,體系結構以客戶機/伺服器形式,採用了SQL語言,在客戶機與伺服器間傳遞客戶機的請求與伺服器的處理結果。資料庫管理系統應用廣泛,優點顯而易見:易用性、可伸縮性、數據倉庫功能、兼容集成性等。它是一個具備完全Web支持的資料庫產品,但是當用戶連接多時,性能下降,穩定性變差。
四、Visual Foxpro
Visual Foxpro的光芒被眾多明星所掩蓋,但直到現在它仍然是市場中用於完成數據事務的最佳工具。隨著9.0版本的問世,使得它的存活能力大大增強,新版中包含更快的數據引擎,支持更多的數據類型,SQL語句逐步走向標准化,可擴展報表編寫器,以及一系列效率和功能增強特性,再加上它能夠運行在廉價的、舊的硬體上,甚至10年前的硬體上,速度都能夠滿足我們的需要,它強大、易於學習、廉價,某些編程任務能夠快速、直接的進行資料庫維護,這都使得它不會過早的被淘汰掉。
五、Microsoft Office Access
Access是Microsoft公司推出的Office系列辦公自動化軟體的一個組件,是一個小型的資料庫管理系統。它廣泛應用於財務、行政、金融、統計和審計等眾多領域。
Ⅷ Mysql建立數據倉庫用什麼好
數據倉庫就是資料庫,只不過是按照業界不同的提法說法不同而已; 一般的數據倉庫的說法是要建立一個高性能的可查詢資料庫,一般說來是提供高效的查詢而不是交互。
從軟體出發考慮:
MySQL現有的幾種資料庫從5.5後預設的數據引擎是Innodb, 性能在查詢上和MyISAM差不多,不過對事物的支持更加好。 如果需要建立一個有規模的數據倉庫首先必須考慮查詢和聚合運算的效率問題, 從MySQL內部的函數的使用效率出發選用innodb可以支持復雜的存儲過程讓運算集中在伺服器上運行,可以高效的發揮伺服器的運算性能和SQL集合運算的效率。
從平台考慮:
數據倉庫的數據源可能來自不同的操作系統和資料庫, 怎麼把數據同步到本地可以參考通用的方法,作為數據倉庫需要考慮的是數據的一致性,比如一個流程的不同環節的數據來自不同的資料庫,這時就需要考慮怎麼來定製來保證數據的時效和一致,比如不允許第一步的數據還未進行同步,第二步的數據就已經同步到本地,這樣的話後台的應用在讀取數據的時候就會非常的混亂
從硬體出發考慮:
數據倉庫一般是從業務資料庫導出到另外一個獨立資料庫作為計算分析, 這樣的好處在於把計算分開,避免非業務的大規模運算對正常業務的影響。即使軟硬體崩潰也不會對正常業務造成影響,而數據重建只需要按照原來的方法恢復即可。在往數據倉庫上同步數據的過程要靈活考慮數據同步的方法,預設可直接使用Mysql的主從備份。 如果不想對業務伺服器造成太多影響,也可以採用自己定製的方法來進行增量備份和差異備份。
從SQL的使用出發考慮:
能夠交由SQL完成的工作最好全部使用SQL來完成聚合,表和表進行聯合的時候先進行添加約束,和外部的程序,比如統計分析的計算,盡量讓SQL輸出一個計算後的數據集給後台應用。