大数据概述(三)
在面對一般業(yè)務(wù)數(shù)據(jù)、大數(shù)據(jù)、海量數(shù)據(jù),以及針對不同的業(yè)務(wù)場景如:訂單處理、業(yè)務(wù)統(tǒng)計、商業(yè)智能等,數(shù)據(jù)庫的選型至關(guān)重要,這篇文章我們來梳理一下,在業(yè)務(wù)的不同階段我們應(yīng)該做怎樣的數(shù)據(jù)庫選型?
階段一:需要快速搭建的交易管理系統(tǒng)
這個階段,基于業(yè)務(wù)的需求,我們需要快速的構(gòu)建一個滿足ACID的交易系統(tǒng),我們需要選擇事務(wù)型數(shù)據(jù)庫,并保證能夠快速地結(jié)合我們的技術(shù)棧進行敏捷開發(fā)。
在這個網(wǎng)站可以看到實時的數(shù)據(jù)庫流行趨勢:https://db-engines.com/en/ranking/relational+dbms
我們來看看關(guān)系型數(shù)據(jù)庫的排名:
可以看到制霸的依舊是幾個老牌數(shù)據(jù)庫廠商,國內(nèi)廠商華為gaussdb、阿里數(shù)據(jù)庫oceanbase,但是基本上對上國外老牌廠商還是打不了,撇開技術(shù)實力不談,生態(tài)是個最大的問題。
在進行技術(shù)選型的時候,我們應(yīng)該考慮幾點:1、生態(tài):比如業(yè)界使用的多嗎?我們常用ORM框架是否提供對該數(shù)據(jù)庫的支持?;會這種數(shù)據(jù)庫管理、運維的人才多嗎?2、費用:是否收費 3、性能上是否滿足業(yè)務(wù)需求;當(dāng)然由于我們和A國的競爭,我們還需要考慮可持續(xù)性的問題。
| ? | mysql | postgresql | oracle | sqlserver |
| 評價 | 廣泛使用;會的人多;絕大多數(shù)技術(shù)框架都提供支持;免費;性能一般單表500w行一下問題不大;有可能有可持續(xù)性問題 | 近年來上升趨勢人比較明顯;但是非常會的比較少;目前主流的技術(shù)框架都開始支持;性能據(jù)說能達到mysql的10倍,就個人使用體驗來講,性能絕對吊打mysql;全部開源,沒有政治風(fēng)險 | 在性能和支持上,無疑oracle是最好的,但是他收費,有A國政治風(fēng)險 | 微軟出品,確實是精品。但是它相對來說比較封閉,微軟系的在用 |
所以我的建議是
不缺錢oracle
缺錢但有人,并且在項目初期就預(yù)計有上千萬的數(shù)據(jù)量pgsql
數(shù)據(jù)量不大,業(yè)務(wù)緊急用mysql。
階段一:交易量快速上升
交易量的快速上升,讓我們對性能和并發(fā)提出了更大的要求。這個時候我們需要一個能夠提供高并發(fā)和低延時并且便宜的數(shù)據(jù)庫。我們這里討論的是因為IO瓶頸導(dǎo)致的性能問題。
業(yè)內(nèi)多選擇內(nèi)存數(shù)據(jù)庫,來保存一定種類的數(shù)據(jù),我們使用這類數(shù)據(jù)的時候不需要磁盤尋址和強制的事務(wù)處理,就只要查出來就好。這個業(yè)界一般用redis,我們就不要自己去選型了,這個就是目前市面上最好的。
為什么用?可以參考我關(guān)于redis的文章
https://blog.csdn.net/qq_35789269/article/details/117633073
階段三:我需要對大量數(shù)據(jù)(不到TB級)進行檢索和統(tǒng)計
這個時候我們選elasticsearch搜索引擎,也可以說成的采用倒排索引的內(nèi)存數(shù)據(jù)庫。關(guān)于elasticsearch可以查看我的這篇文章。促使我開始用es的原因,是因為一個簡單的函數(shù)count(),在五千萬以上的單表上無論是mysql和pgsql都做不到在1s內(nèi)返回數(shù)據(jù),但是es可以。并且es能夠在抽象層面和我們的關(guān)系型數(shù)據(jù)庫的表一一映射起來,能夠做到外在邏輯的一致性。
https://mp-new.csdn.net/mp_blog/creation/editor/110210127
階段四:我需要對海量數(shù)據(jù)進行存儲,并提供商業(yè)分析報表
這個時候建議采用hdoop技術(shù)棧,使用hive做數(shù)據(jù)倉庫,使用hbase做即時查詢,其實hbase和redis作用基本差不多,只不過光使用內(nèi)存太貴了,海量數(shù)據(jù)存下來根本是天價。價格可以參考SAP的HANA數(shù)據(jù)庫,貴上天際。
關(guān)于這套技術(shù)棧,其實不亞于建立一個數(shù)據(jù)中臺:可以參考我寫的這篇文章。
https://mp-new.csdn.net/mp_blog/creation/editor/118073637
總結(jié)一下:
| ? | redis | mysql | elasticsearch | hbase | hive |
| 容量/容量擴展 | 低 | 中 | 大 | 海量 | 海量 |
| 查詢時效性 | 極高 | 中等 | 較高 | 較高 | 低 |
| 查詢靈活性 | 較差 | 非常好 | 較好 | 較差 | 非常好 |
| 寫入速度 | 極快 | 中等 | 較快 | 較快 | 慢 |
| 一致性、事務(wù) | 弱 | 強 | 弱 | 弱 | 弱 |
總結(jié)
- 上一篇: 大数据概述(二)
- 下一篇: 力扣刷题心得(设计类题目)