資源描述:
《四類nosql數(shù)據(jù)庫適用場景總結(jié)》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在學術(shù)論文-天天文庫。
1、:據(jù)庫適用案例現(xiàn)在講幾個適合使用鍵值數(shù)據(jù)庫的情況。1存觸會話信息通常來說,每一次網(wǎng)絡會話都是唯一的,所以分配給它們的sessionid值也各不相同。如果應用程序原來要把sessionid存在磁盤上或關系型數(shù)據(jù)庫中,那么將其遷移到鍵值數(shù)據(jù)庫之后,會獲益良多,因為全部會話內(nèi)容都可以用一條PUT請求來存放,而且只需一條GET請求就能取得。由于會話屮的所有信息都放在一個對象中,所以這種〃革請求操作〃(single-requestoperation)很迅速。許多網(wǎng)絡應用程序都使用像Memcached這樣的解決方案。如果"
2、可用性"較為重要,可使用Riak.2用戶配置信息幾乎每位用戶都有userid、username或其他獨特的屬性,而且其配置信息也各自獨立,諸如語言、顏色、時區(qū)、訪問過的產(chǎn)品等。這些內(nèi)容可全部放在一個對象里,以便只用一次GET操作即獲取某位用戶的全部配罝信息。同理,產(chǎn)品信息也可如此存放。3購物車數(shù)據(jù)電子商務網(wǎng)站的用戶都與其購物車相綁定。由于購物車的內(nèi)容要在不同時間、不同瀏覽器、不同電腦、不同會話中保持一致,所以可把購物信息放在value屬性中,并將其綁定到userid這個鍵名上。此類應用程序最宜使用Riak集群了
3、。不適用場合鍵值數(shù)據(jù)庫在某些場合下并不是最佳方案。1數(shù)據(jù)間關系如果要在不向數(shù)據(jù)集之間建立關系,或是將不同的關鍵字集合聯(lián)系起來,那么即使某些鍵值數(shù)據(jù)庫提供了"鏈接遍歷"等功能,它們也不是最佳選擇了。2含有多項操作的事務如果在保存多個鍵值對時,其中有一個關鍵字出錯,而你又需要復原或回攘其余操作,那么鍵值數(shù)據(jù)庫就不是最好的解決方案。3查詢數(shù)據(jù)如果要根據(jù)鍵值對的某部分值來搜尋關鍵字,那么鍵值數(shù)據(jù)庫就不是很理想了。我們無法直接檢視鍵值數(shù)據(jù)庫屮的值,除非使用某些類似RiakSearch的產(chǎn)品或是像Lucene、Solr這樣
4、的"檢索引擎"(indexingengine)o4操作關鍵字集合由于鍵值數(shù)據(jù)庫一次只能操作一個鍵,所以它無法同時操作多個關鍵字。假如需要操作多個關鍵字,那么最好在客戶端處理此問題。文檔數(shù)據(jù)庫適用案例1事件記錄應用程序?qū)κ录涗浉饔行枨?。在企業(yè)級解決方案中,許多不同的應用程序都需要記錄事件。文檔數(shù)據(jù)庫可以把所有這些不同類型的事件都存起來,并作為事件存儲的"屮心數(shù)據(jù)痺〃(centraldatastore)使用。如果事件捕獲的數(shù)掘類型一直在變,那么就更應該用文檔數(shù)據(jù)庫了??梢园凑沼|發(fā)事件的應用程序名"分片飛也可以按照
5、orderprocessed或customerjoggede等事件類型〃分片2內(nèi)容管理系統(tǒng)及博窯平臺由于文檔數(shù)據(jù)庫沒有"預設模式〃(predefinedschema),而且通常支持JSON文擋,所以它們很適合用在"內(nèi)容管理系統(tǒng)"(contentmanagementsystem)及網(wǎng)站發(fā)布程序上,也可以用來管理用戶評論、用戶注冊、用戶配景和面向Web文檔(webdocument)。3網(wǎng)站分析與實時分析文檔數(shù)據(jù)庫可存儲實時分析數(shù)據(jù)。由于可以只更新部分文檔內(nèi)容,所以用它來存儲〃頁面瀏覽量〃(pageview)或"獨立
6、訪客數(shù)〃(uniquevisitor)會非常方便,而且無需改變模式即可新增度量標準。4電子商務應用程序電子商務類應用程序通常需要較為靈活的模式,以存儲產(chǎn)品和訂單。同時,它們也需要在不做高戚本數(shù)據(jù)庫重構(gòu)及數(shù)據(jù)遷移的前提下進化其數(shù)據(jù)模型。不適用場合某些場合文檔數(shù)據(jù)庫井非最佳方案。1包含多項操作的復雜事務文檔數(shù)據(jù)庫也針?不適合執(zhí)行"跨文擋的原子操作〃(atomiccross-documentoperation),然而像RavenDB等文檔數(shù)據(jù)痺其實也支持此類操作。2查詢持續(xù)變化的聚合結(jié)構(gòu)靈活的模式意味著數(shù)據(jù)庫對模式不
7、施加任何限制。數(shù)據(jù)以"應用程序?qū)嶓w"(applicationentity)的形式存儲。如果要即時查詢這些持續(xù)改變的實體,那么所用的查詢命令也得不停變化(用關系型數(shù)據(jù)庫的術(shù)語講,就是:用JOIN語句將數(shù)據(jù)表按杳詢標準連接起來時,待連接的表一直在變)。由T數(shù)據(jù)保存在聚合中,所以假如聚合的設計持續(xù)變動,那么就需要以"最低級別的粒度"(lowestlevelofgranularity)來保存聚合了,這實際上就等于要統(tǒng)一數(shù)據(jù)格式了。在這種情況下,文檔數(shù)據(jù)庫也許不合適。列族數(shù)據(jù)庫適用案例現(xiàn)在討論幾個適合用列族數(shù)據(jù)庫解決的問
8、題。1事件記錄由于列族數(shù)據(jù)庫可存放任意數(shù)據(jù)結(jié)構(gòu),所以它很適合用來保存應用程序狀態(tài)或運行中遇到的錯誤等事件信息。在企業(yè)級環(huán)境下,所有應用程序都可以把事件寫入Cassandra數(shù)據(jù)庫。它們可以用appname:timestamp(hk用程序名:吋間戳)作為行鍵,并使用自己需要的列。由于Cassandra的寫人能力可擴展,所以在事件記錄系統(tǒng)中使用它效果會很好。2內(nèi)容管理系統(tǒng)與博窯平臺使用列族