RDBMS,Relational Database Management System,關係型數據庫管理系統。算法
什麼是關係型數據庫,行和列組成表,表的集合就是關係型數據庫,關係數據庫是以數據(單元格)、關係(一對多...)、數據的約束(外鍵)組成的數據模型,這已經有將近50年的歷史了。sql
關係型數據庫的管理系統,其實就是管理軟件,MySQL、Oracle這類的,數據是存放在操做系統的文件系統中的。數據庫
基本的sql流程是,解釋 -> 優化 -> 執行架構
數據庫主要面向的是,事務。框架
當複雜sql趕上當大數據量的時候,那就是Cpu和磁盤IO的挑戰了。分佈式
比較深入的是索引,能夠用二叉搜索樹(或者B+樹)來實現,而搜索行的時候,可使用hash桶。oop
可是建立太多的索引,有時反而會加劇數據庫的負擔,由於索引是有序的,每次增刪改都會致使一次排序,而最好的排序算法,只是O(Log(N)*N)。性能
HDFS,Hadoop Distributed File System,Hadoop分佈式文件系統。
這個東西就比較複雜了,它是用Java寫的分佈式文件系統,與Map-Reduce是Hadoop框架的一部分,是大數據處理的基礎架構。
Hadoop使用Map-Reduce來計算數據,而Hive提供了類Sql的查詢方式,雖然不能使用索引,致使每次查詢都是暴力的全掃描,可是大數據量的並行查詢,會表現的好。
它能夠將metadata放在mysql,而後經過SQL引擎去HDFS中查詢數據。
固然,還有Hbase,SparkSQL,後者具備更強大的一棧式處理數據能力。
有了以上的知識,很是清楚了一點,最須要的是一個數據倉庫,由於系統運行時超過99%的數據是歷史數據,不容許修改,只須要查詢,而將這些數據和生產數據放在一塊兒,勢必會加大系統和數據庫的負擔。 火了幾年的大數據,利用這些成熟的框架,能夠搭建一個更強大,面向將來的架構。
理想的架構是
online web服務使用MySql,只保存活躍的記錄和系統數據,如用戶信息,當前訂單
Data Warehouse 數據倉庫,提供報表和數據分析服務,搭建好以後交給專業的數據分析師,存放不變的數據,如歷史訂單
所以,只須要一個Hadoop集羣 + 一個Hive/SparkSQL應用。