四類NoSQL數(shù)據(jù)庫適用場景總結(jié)_第1頁
四類NoSQL數(shù)據(jù)庫適用場景總結(jié)_第2頁
四類NoSQL數(shù)據(jù)庫適用場景總結(jié)_第3頁
四類NoSQL數(shù)據(jù)庫適用場景總結(jié)_第4頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、.鍵值數(shù)據(jù)庫適用案例現(xiàn)在講幾個(gè)適合使用鍵值數(shù)據(jù)庫的情況。1 存觸會話信息通常來說,每一次網(wǎng)絡(luò)會話都是唯一的,所以分配給它們的sessionid值也各不相同。如果應(yīng)用程序原來要把sessionid存在磁盤上或關(guān)系型數(shù)據(jù)庫中,那么將其遷移到鍵值數(shù)據(jù)庫之后,會獲益良多,因?yàn)槿繒拑?nèi)容都可以用一條PUT 請求來存放,而且只需一條GET 請求就能取得。由于會話中的所有信息都放在一個(gè)對象中,所以這種" 單請求操作 " (single-requestoperation) 很迅速。許多網(wǎng)絡(luò)應(yīng)用程序都使用像Memcached這樣的解決方案。如果 " 可用性 " 較為重要

2、,可使用Riak .2 用戶配置信息幾乎每位用戶都有 userld 、usemame或其他獨(dú)特的屬性, 而且其配置信息也各自獨(dú)立, 諸如語言、顏色、時(shí)區(qū)、訪問過的產(chǎn)品等。這些內(nèi)容可全部放在一個(gè)對象里,以便只用一次 GET 操作即獲取某位用戶的全部配置信息。同理,產(chǎn)品信息也可如此存放。3 購物車數(shù)據(jù)電子商務(wù)網(wǎng)站的用戶都與其購物車相綁定。由于購物車的內(nèi)容要在不同時(shí)間、不同瀏覽器、不同電腦、不同會話中保持一致,所以可把購物信息放在 value 屬性中,并將其綁定到 userid 這個(gè)鍵名上。此類應(yīng)用程序最宜使用 Riak 集群了。不適用場合鍵值數(shù)據(jù)庫在某些場合下并不是最佳方案。1 數(shù)據(jù)間關(guān)系如果要在

3、不向數(shù)據(jù)集之間建立關(guān)系,或是將不同的關(guān)鍵字集合聯(lián)系起來, 那么即使某些鍵值數(shù)據(jù)庫提供了 " 鏈接遍歷 " 等功能,它們也不是最佳選擇了。2 含有多項(xiàng)操作的事務(wù)如果在保存多個(gè)鍵值對時(shí), 其中有一個(gè)關(guān)鍵字出錯(cuò), 而你又需要復(fù)原或回攘其余操作,那么鍵值數(shù)據(jù)庫就不是最好的解決方案。3 查詢數(shù)據(jù)如果要根據(jù)鍵值對的某部分值來搜尋關(guān)鍵字,那么鍵值數(shù)據(jù)庫就不是很理想了。我們無法直接檢視鍵值數(shù)據(jù)庫中的值,除非使用某些類似Riak Search的產(chǎn)品或是像 Lucene、 Solr 這樣的 " 檢索引擎 " ( indexing engine)。4 操作關(guān)鍵字集合由于鍵值數(shù)

4、據(jù)庫一次只能操作一個(gè)鍵, 所以它無法同時(shí)操作多個(gè)關(guān)鍵字。 假如需要操作多個(gè)關(guān)鍵字,那么最好在客戶端處理此問題。.文檔數(shù)據(jù)庫適用案例1 事件記錄應(yīng)用程序?qū)κ录涗浉饔行枨蟆T谄髽I(yè)級解決方案中, 許多不同的應(yīng)用程序都需要記錄事件。文檔數(shù)據(jù)庫可以把所有這些不同類型的事件都存起來, 并作為事件存儲的 " 中心數(shù)據(jù)庫 " (central data store) 使用。如果事件捕獲的數(shù)據(jù)類型一直在變,那么就更應(yīng)該用文檔數(shù)據(jù)庫了??梢园凑沼|發(fā)事件的應(yīng)用程序名" 分片飛也可以按照 order processed 或 customer_logged e等事件類型 " 分

5、片 " 。2 內(nèi)容管理系統(tǒng)及博窯平臺由于文檔數(shù)據(jù)庫沒有 " 預(yù)設(shè)模式 " ( predefined schema), 而且通常支持 JSON文擋,所以它們很適合用在 " 內(nèi)容管理系統(tǒng) " (content management system )及網(wǎng)站發(fā)布程序上, 也可以用來管理用戶評論、 用戶注冊、用戶配景和面向 Web 文檔 ( web document ) 。3 網(wǎng)站分析與實(shí)時(shí)分析文檔數(shù)據(jù)庫可存儲實(shí)時(shí)分析數(shù)據(jù)。由于可以只更新部分文檔內(nèi)容,所以用它來存儲 " 頁面瀏覽量 " ( page view ) 或 " 獨(dú)

6、立訪客數(shù) " (unique visitor ) 會非常方便,而且無需改變模式即可新增度量標(biāo)準(zhǔn)。4 電子商務(wù)應(yīng)用程序電子商務(wù)類應(yīng)用程序通常需要較為靈活的模式, 以存儲產(chǎn)品和訂單。 同時(shí),它們也需要在不做高戚本數(shù)據(jù)庫重構(gòu)及數(shù)據(jù)遷移的前提下進(jìn)化其數(shù)據(jù)模型。不適用場合某些場合文檔數(shù)據(jù)庫井非最佳方案。1 包含多項(xiàng)操作的復(fù)雜事務(wù)文檔數(shù)據(jù)庫也許不適合執(zhí)行 " 跨文擋的原子操作 " (atomic cross-document operation) ,然而像 RavenDB等文檔數(shù)據(jù)庫其實(shí)也支持此類操作。2 查詢持續(xù)變化的聚合結(jié)構(gòu)靈活的模式意味著數(shù)據(jù)庫對模式不施加任何限制。數(shù)據(jù)

7、以 " 應(yīng)用程序?qū)嶓w "(application entity) 的形式存儲。如果要即時(shí)查詢這些持續(xù)改變的實(shí)體,那么所用的查詢命令也得不停變化 ( 用關(guān)系型數(shù)據(jù)庫的術(shù)語講,就是 : 用 JOIN 語句將數(shù)據(jù)表按查詢標(biāo)準(zhǔn)連接起來時(shí),待連接的表一直在變 ) 。由于數(shù)據(jù)保存在聚合中, 所以假如聚合的設(shè)計(jì)持續(xù)變動(dòng),那么就需要以 " 最低級別的粒度 "( lowest level of granularity )來保存聚合了,這實(shí)際上就等于要統(tǒng)一數(shù)據(jù)格式了。在這種情況下,文檔數(shù)據(jù)庫也許不合適。.列族數(shù)據(jù)庫適用案例現(xiàn)在討論幾個(gè)適合用列族數(shù)據(jù)庫解決的問題。1 事件記錄

8、由于列族數(shù)據(jù)庫可存放任意數(shù)據(jù)結(jié)構(gòu), 所以它很適合用來保存應(yīng)用程序狀態(tài)或運(yùn)行中遇到的錯(cuò)誤等事件信息。 在企業(yè)級環(huán)境下, 所有應(yīng)用程序都可以把事件寫入 Cassandra 數(shù)據(jù)庫。它們可以用 appname: timestamp ( 應(yīng)用程序名 : 時(shí)間戳 ) 作為行鍵,并使用自己需要的列。由于 Cassa ndra 的寫人能力可擴(kuò)展,所以在事件記錄系統(tǒng)中使用它效果會很好。2 內(nèi)容管理系統(tǒng)與博窯平臺使用列族,可以把博文的" 標(biāo)簽 " (tag)、" 類別 " (catelog 、 " 鏈接 " ( link)和 "mckback

9、" 等屬性放在不同的列中。評論信息既可以與上述內(nèi)容放在同一行,也可以移到另一個(gè) " 鍵空間 " 。同理,博客用戶與實(shí)際博文亦可存于不同列族中。3 計(jì)數(shù)器在網(wǎng)絡(luò)應(yīng)用程序中,通常要統(tǒng)計(jì)某頁面的訪問人數(shù)并對其分類, 以算出分析數(shù)據(jù)。此時(shí)可使用 CounterColum nType 來創(chuàng)建列族。CREATE COLUMN FAMILY visit counterWITH default_validation_class=CounterColumnTypeAND key-va l Ida t lorIECla sszUTF8Type AND c。 mpara t 。 r=U

10、TF8Type J創(chuàng)建好列族后,可以使用任意列記錄網(wǎng)絡(luò)應(yīng)用程序中每個(gè)用戶訪問每一頁面的次數(shù)。INCR visit counter 'mfowler ' 1 home) BY 1 ;INCR visit counter 'mfow1er ' (products BY 1 ;I NCR visit counter'mfowler') (contactus) BY 1;也可以用 C QL 增加計(jì)數(shù)器的值 :UPDATE visi t counter SET home = home + 1 WHERE KEY= 'mfowler '4 限

11、期使用我們可能需要向用戶提供試用版,或是在網(wǎng)站上將某個(gè)廣告條顯示一定時(shí)間。這些功能可以通過 " 帶過期時(shí)限的列 " ( expiring column ) 來完成。這種列過了給定時(shí)限后,就會由 Cassandra 自動(dòng)刪除。這個(gè)時(shí)限叫做 TTL (Time To Live ,生存時(shí)間 ) ,以秒為單位。經(jīng)過 TTL 指定的時(shí)長后,這種列就被刪掉了。程序若檢測到此列不存在,則可收回用戶訪問權(quán)限或移除廣告條。SET Customer( ' mfowler ' ) ( ' demo access ' ) = ' allowed '

12、WITH ttl=2592000;不適用場合有些問題用列族數(shù)據(jù)庫來解決并不是最佳選擇,例如需要以 " ACID 事務(wù) " 執(zhí)行寫人及讀取操作的系統(tǒng)。如果想讓數(shù)據(jù)庫根據(jù)查詢結(jié)果來聚合數(shù)據(jù)( 例如 SUM( 求.和或 AVG ( 求平均值 ) ) , 那么得把每一行數(shù)據(jù)都讀到客戶端, 并在此執(zhí)行操作。在開發(fā)早期原型或剛開始試探某個(gè)技術(shù)方案時(shí), 不太適合用 Cassandra. 開發(fā)初期無法確定查詢模式的變化情況, 而查詢模式一旦改變, 列族的設(shè)計(jì)也要隨之修改。這將阻礙產(chǎn)品創(chuàng)新團(tuán)隊(duì)的工作并降低開發(fā)者的生產(chǎn)能力。 在關(guān)系型數(shù)據(jù)庫 中,數(shù)據(jù)模式的修改成本很高,而這卻降低了查詢模式的修

13、改成本 ; Cassandra 則與之相反,改變其查詢模式要比改變其數(shù)據(jù)模式代價(jià)更高。圖數(shù)據(jù)庫適用案例接下來講一些適合使用圖數(shù)據(jù)庫的用例。1 互聯(lián)數(shù)據(jù)部署并使用圖數(shù)據(jù)庫來處理社交網(wǎng)絡(luò)非常高效。社交圖里并不是只能有" 朋友 "這種關(guān)系,例如也可以用它們表示雇員、雇員的學(xué)識, 以及這些雇員與其他雇員在不同項(xiàng)目中的工作位置。 任何富含鏈接關(guān)系的領(lǐng)域都很適合用圖數(shù)據(jù)庫表示。假如同一個(gè)數(shù)據(jù)庫含有不同領(lǐng)域 ( 像社交領(lǐng)域、空間領(lǐng)域、 商務(wù)領(lǐng)域等 ) 的領(lǐng)域?qū)嶓w,而這些實(shí)體之間又有關(guān)系, 那么圖數(shù)據(jù)庫提供的跨領(lǐng)域遍歷功能, 可以讓這些關(guān)系變得更有價(jià)值。2 安排運(yùn)輸路線、分派貨物和基于位置

14、的服務(wù)投遞過程中的每個(gè)地點(diǎn)或地址都是一個(gè)節(jié)點(diǎn), 可以把送貨員投遞貨物時(shí)所經(jīng)全部節(jié)點(diǎn)建模為一張節(jié)點(diǎn)圖。 節(jié)點(diǎn)間關(guān)系可帶有距離屬性, 以便高效投遞貨物。 距離與位置屬性也可用在名勝圖(graph of places of interest )中, 這樣應(yīng)用程序就可向用戶推薦其附近的好餐館及娛樂場所了。還可將書店、餐館等銷售點(diǎn)( point of sales) 做成節(jié)點(diǎn), 當(dāng)用戶靠近時(shí)通知他們,以提供基于位置的服務(wù)。3 推薦引擎在系統(tǒng)中創(chuàng)建節(jié)點(diǎn)與關(guān)系時(shí), 可以用它們?yōu)榭蛻敉扑]信息, 例如 " 您的朋友也買了這件產(chǎn)品 " 或" 給這些貨品開發(fā)票時(shí),通常也要為那些貨品一并開

15、票 " 。還可以用它們向旅行者提議 : 來巴塞羅那旅游的人一般都會去看看安東尼· 高迪 所設(shè)計(jì)的建筑。用圖數(shù)據(jù)庫推薦信息時(shí),有個(gè)副作用值得注意 : 隨著數(shù)據(jù)量變多,推薦信息所用的節(jié)點(diǎn)及關(guān)系數(shù)也激增。同一份數(shù)據(jù)可以挖掘出不同信息。例如,既可以從中看出客戶總是將其與哪些產(chǎn)品一并購買,也可以查出與 此產(chǎn)品一并開發(fā)票的其余產(chǎn)品。 若兩者不匹配, 則可發(fā)出警示。 因數(shù)據(jù)庫與其他 " 推薦引擎" ( recommendation engine )一樣,也可以根據(jù)關(guān)系間的模式偵測交易欺詐( fraud in transaction )。不適用場合圖數(shù)據(jù)庫在某些情形下也許不適用。在更新

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論