http://www.cnblogs.com/me115/p/3809482.html
NoSQL聚合數據模型
NoSQL聚合數據模型
特點
聚合數據模型的特點就是把經常訪問的數據放在一起(聚合在一塊);
這樣帶來的好處很明顯,對於某個查詢請求,能夠在與數據庫一次交互中將所有數據都取出來;
當然,以這種方式存儲不可避免的會有重複,重複是爲了更少的交互;
缺點
聚合結構對某些交互有利,卻阻礙另一些交互;
比如:以學生學號聚合學生信息(含學生姓名、班級、年齡、等信息,甚至英語學科成績),通過學號查詢時,能夠在一次交互中查詢出該學生的所有信息,但如果想通過學生姓名來查詢,就很困難;不支持跨越多個聚合的ACID事務
聚合結構在事務方面的支持有限;有一些NOSQL產品實現了簡單的事務支持,但對於跨越多個聚合結構的事務並不完善;
規劃數據訪問方式
選用NoSQL數據庫,首要的工作就是設計鍵名及存放的數據;
設計的原則是儘量減少所需要訪問的聚合個數,在儘量少的交互中拿到所需要的數據;
如果發現需要通過多種查詢條件來獲取數據,可能就選用NOSQL就不合適;關係數據庫纔是首選;
面向聚合的數據庫
鍵值數據庫
可以存儲任意數據,存儲的數據對用戶不透明,從外面看,只是包含了沒有太多意義的大塊數據;訪問方式:通過鍵來查找
文檔數據庫
文檔數據庫存儲時定義了其允許的結構和數據類型,從外面看,可以看到內部結構;
在存儲時限制其中存放的數據,這樣帶來的好處是能夠更靈活的訪問數據;
訪問方式:
1.可用鍵名查詢
2.可用聚合中的字段查詢(定義存儲的數據的結構所帶來的好處)
3.可按照聚合內容創建索引
相關:關係數據模型
對於數據模型,我們最熟悉的莫過於關係數據模型;
關係數據模型是一種“聚合無知模型”;
在組織數據時,使用E-R模型規劃清晰;
這樣帶來的好處是很容易以不同的方式來查詢數據(各種where條件甚至join)
關係型數據庫都是使用關係數據模型,比如oracle;
附 思維導圖
http://blog.csdn.net/u010892841/article/details/43061671
NoSQL數據模型詳解(四)の聚合型小結
分類:數據庫
背景
相同點
三種面向聚合的數據模型的共同點是,他們都是用聚合這一概念,而且聚合中都有一個可以查找其內容的索引鍵。在集羣上運行時,聚合都是重點環節,因爲數據庫必須保證將聚合內的數據存在同一節點上。聚合還是”更新“操作的最小數據單位,對於事務控制來說,以聚合爲操作單元,其大小正合適。
不同點
鍵值數據模型將聚合看作不透明的整體,這意味着只能根據鍵來查出整個聚合,而不能僅僅查詢或獲取其中的一部分。
文檔模型的聚合對數據透明,於是就可以只查詢或獲取其中的一部分數據,不過,由於文檔沒有模式,因此想優化存儲並獲取聚合中的部分內容時,數據庫不太好調整文檔結構。
列族模型把聚合分爲列族,讓數據庫將其視爲行聚合內的一個數據單元。此類聚合的結構有某種限制,但是數據庫可利用此種結構的優點來提高其易訪問性。