實(shí)話實(shí)說,個(gè)人接觸到使用Xml文件方式來保存數(shù)據(jù)的場景少之又少。除去求學(xué)期間根據(jù)課堂要求做靜態(tài)網(wǎng)站時(shí)用于存儲一些展示性數(shù)據(jù),還有就是在WPF開發(fā)中保存一些常用但又不經(jīng)常變化的離線數(shù)據(jù)。反而常使用Xml來做配置文件(例如SpringMvc、MyBatis和LogBack)網(wǎng)絡(luò)數(shù)據(jù)傳輸和交互標(biāo)準(zhǔn)(例如WebService)、工作流設(shè)計(jì)(例如Activiti6)等情況較為常見。
Xml用于單設(shè)備數(shù)據(jù)存儲的情況還說得過去,例如離線數(shù)據(jù)同步可以放在Xml數(shù)據(jù)文件中。在傳統(tǒng)行業(yè)電商平臺的規(guī)格,材質(zhì),產(chǎn)區(qū)等屬性相對固定,Xml文件能很好勝任。再比如做一個(gè)內(nèi)部使用的抽獎(jiǎng)程序,將潛在用戶群體以Xml方式保存也是不錯(cuò)的選擇吧。所以Xml文件充當(dāng)小型離線數(shù)據(jù)庫還行。
而數(shù)據(jù)庫的范圍就比較寬泛,大致可以分為關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫兩大類。
關(guān)系型數(shù)據(jù)庫以O(shè)racle和MySql最為流行,學(xué)過編程的朋友應(yīng)該耳熟能詳,也是職場面試經(jīng)久不衰的考察重點(diǎn)。
而NoSql算是后起之秀。在業(yè)務(wù)繁多復(fù)雜的當(dāng)下,一些場景下關(guān)系型數(shù)據(jù)庫應(yīng)付起來相當(dāng)吃力,有著更為復(fù)雜分類的非關(guān)系型數(shù)據(jù)庫孕育而生。NoSql在搜索引擎(ElasticSearch)、鍵值(redis)、面向文檔(Mongodb)和列存儲(Hbase)等方面都能做到得心應(yīng)手。這些就讓其有著更強(qiáng)的業(yè)務(wù)針對性,相比傳統(tǒng)關(guān)系型數(shù)據(jù)庫有著質(zhì)的提升。下面簡單列舉幾個(gè)應(yīng)用場景。
Redis可用于計(jì)數(shù)、分布式鎖實(shí)現(xiàn)、單點(diǎn)登錄、限流和緩存數(shù)據(jù)等;
在復(fù)雜頁面的數(shù)據(jù)不便以表數(shù)據(jù)結(jié)構(gòu)保存時(shí),使用Mongodb整頁存儲方便又簡單;
Elasticsearch就是以空間換時(shí)間典型代表,在做搜索引擎和日志記錄(ELK)等方面有很大優(yōu)勢;
Hbase不必再像關(guān)系型數(shù)據(jù)庫那樣以行為存儲單元,而是以列為基準(zhǔn),非常便于數(shù)據(jù)結(jié)構(gòu)拓展。
當(dāng)下流行徽服務(wù)和各種解耦,連關(guān)系型數(shù)據(jù)庫都不再設(shè)計(jì)外鍵關(guān)系,非關(guān)系型數(shù)據(jù)庫大行其道,Xml文件用來保存數(shù)據(jù)顯然已經(jīng)不合時(shí)宜,當(dāng)然也不能否認(rèn)關(guān)系型數(shù)據(jù)庫的地位和Xml的作用。重要數(shù)據(jù)或某些行業(yè)的特殊性還是要以關(guān)系型數(shù)據(jù)庫為根基,畢竟事務(wù)、穩(wěn)定性、安全性和技術(shù)恢復(fù)支持等方面需要考慮的重點(diǎn)。