NoSQL 非關聯式資料庫
NoSQL/ Key-Value Database
NoSQL/Key-Value 資料庫是網路興起後,資料庫設計與查詢的新方法,
也可以說是關聯式資料庫的一種反動。
也可以說是關聯式資料庫的一種反動。
NoSQL/Key-Value 資料庫的 2 大特色是:
NoSQL 非關聯式查詢
所有關聯式資料庫的通用查詢語言是SQL,所以 NoSQL 就表示不用關聯式資料庫的結構
、表格分析設計法、與根據主鍵(primary keys)的查詢,故也可稱為「非關聯式資料庫」。
、表格分析設計法、與根據主鍵(primary keys)的查詢,故也可稱為「非關聯式資料庫」。
Key-Value Stores 「鍵-值」資料儲存法
採用只有 2 欄,稱為雜湊表( Hash table ,大陸譯為哈希表 )的方式儲存。
1欄是關鍵字 (Key),另1欄是值 (Value),作為查詢的資料結構 。
1欄是關鍵字 (Key),另1欄是值 (Value),作為查詢的資料結構 。
這種方法可以通過把鍵值通過一個函數的計算, 映射到表中一個位置來查詢記錄,
這加快了查找速度。 這個映射函數稱做雜湊函數 ,存放記錄的表格稱做雜湊表 。
這加快了查找速度。 這個映射函數稱做雜湊函數 ,存放記錄的表格稱做雜湊表 。
NoSQL/Key-Value 資料庫興起原因
NoSQL/Key-Value 資料庫的興起源於網路發展,產生的新挑戰與回應:
網路興起帶動了巨量資料(Big Data)現象
外在的需求變動挑戰:網路興起帶動了巨量資料現象,即所謂「Big Data」,
又譯為海量資料、大數據,指的是資料量規模巨大到無法在合理時間內達到
擷取、管理、處理、並整理成為人類所能解讀的資訊。
又譯為海量資料、大數據,指的是資料量規模巨大到無法在合理時間內達到
擷取、管理、處理、並整理成為人類所能解讀的資訊。
網路行為使得傳統的「資料」定義為之改觀,搜尋、輸入、交易的網址
與時間…都是「資料」。而且經過「資料探勘」篩選、整理、分析,
有可能用於幫助企業經營決策,引導開發更多的消費力量或其他網路使用行為。
與時間…都是「資料」。而且經過「資料探勘」篩選、整理、分析,
有可能用於幫助企業經營決策,引導開發更多的消費力量或其他網路使用行為。
巨量資料的常見特點是4V:Volume、Velocity、Variety、Veracity
(資料量大、輸入和處理速度快、資料多樣性、真實性),
使得資料處理除了業務量巨量加重之外,還有資料品質的問題。
(資料量大、輸入和處理速度快、資料多樣性、真實性),
使得資料處理除了業務量巨量加重之外,還有資料品質的問題。
資料可擴展性(scalability)要求升高
內在的資訊技術能力挑戰:尤其是資料可擴展性(scalability, 同 expandability),
這原來是資料處理技術的專業名詞,指有關業務量的擴展問題。
這原來是資料處理技術的專業名詞,指有關業務量的擴展問題。
從使用者的立場,統雄老師建議:資料可擴展性(scalability)就是在業務量增大時,
系統仍然能夠:區分緩急、靈活應對;分配資源、適時服務。
系統仍然能夠:區分緩急、靈活應對;分配資源、適時服務。
資料可擴展性 scalability 在技術上的處理項目包括:支持大量域
(Support of large number of domains),支持大量呼叫(Ability to handle large number of calls)
與呼叫狀態(call states),管理狀態中的元素(Elements that must maintain states) ,
信號訊息處理(Signaling message processing),與會方數量、集中還是分佈的交談控制
(Conference sizes, conference control (centralized vs. distributed)),
以及分散式的呼叫信號 DCS(Distributed Call Signaling)。
(Support of large number of domains),支持大量呼叫(Ability to handle large number of calls)
與呼叫狀態(call states),管理狀態中的元素(Elements that must maintain states) ,
信號訊息處理(Signaling message processing),與會方數量、集中還是分佈的交談控制
(Conference sizes, conference control (centralized vs. distributed)),
以及分散式的呼叫信號 DCS(Distributed Call Signaling)。
注意,文獻上另有 extensibility 一詞,是指設備上的硬體效能與軟體版本的「可升級性」,
勿產生混淆。
勿產生混淆。
關聯式查詢相對緩慢、效益相對低
網路新資料不斷產生,但關聯式資料庫的設計與表格分析,從本文前篇:MIS 管理資訊系統、
系統分析與設計的介述,可知在「資料結構」設計上是十分費工的,
使得源源湧入的資料無法及時反應,可擴展性低。
造成傳統關聯式查詢查詢相對緩慢、效益相對低。
系統分析與設計的介述,可知在「資料結構」設計上是十分費工的,
使得源源湧入的資料無法及時反應,可擴展性低。
造成傳統關聯式查詢查詢相對緩慢、效益相對低。
回應方案:演化?還是革命?
在這種業務壓力要求下,各機構與研究者,開始尋找解決方案。
當發現無法讓關聯式資料庫演化(evolution)後,開始有了革命(revolution)的構想,
向關聯式資料庫「說 No」的替代方案。
當發現無法讓關聯式資料庫演化(evolution)後,開始有了革命(revolution)的構想,
向關聯式資料庫「說 No」的替代方案。
NoSQL一詞最早出現於1998年,是Carlo Strozzi開發的一個輕量、開源、不提供SQL功能的資料庫。
2009年,Rackspace 的Eric Evans 再次提出了NoSQL的概念,同時建立了「非關聯式資料庫」
設計模式。同年在亞特蘭大舉行的 "no:sql(east)" 討論會形成了實務應用的里程碑,
其口號是"select fun, profit from real_world where relational=false;"。
設計模式。同年在亞特蘭大舉行的 "no:sql(east)" 討論會形成了實務應用的里程碑,
其口號是"select fun, profit from real_world where relational=false;"。
而大型網路組織如 Google的 GoogleAppEngine,Amazon的 smipleDB,
陸續採用NoSQL/Key-Value 模式,開創了當前最新的熱門潮流。
陸續採用NoSQL/Key-Value 模式,開創了當前最新的熱門潮流。
NoSQL/Key-Value 資料庫範例與比較
「關聯式資料庫」的表格是多欄式,以每筆資料為列,範例如下。
其中「編號」,就是至少要有1個「主鍵」。
關聯式資料庫之資料表
NoSQL/Key-Value 資料庫的表格只有 2 欄、沒有「主鍵」,每筆資料不一定只有1列,
同筆資料可以不只1個鍵 (key)名,範例如下。
同筆資料可以不只1個鍵 (key)名,範例如下。
「關聯式資料庫」的欄位必須要定義「資料格式」,如字串、整數、實數(含小數)、
貨幣、日期…等,而NoSQL/Key-Value 不必定義,還包括「資料格式」設定、系統訊息、
資料位址、…什麼都可以,而且,沒有順序問題,可以有空白格,
也就是沒有「資料結構」問題。
貨幣、日期…等,而NoSQL/Key-Value 不必定義,還包括「資料格式」設定、系統訊息、
資料位址、…什麼都可以,而且,沒有順序問題,可以有空白格,
也就是沒有「資料結構」問題。
NoSQL資料庫之資料表
NoSQL/Key-Value 資料庫相關技術
NoSQL/Key-Value 資料庫相關同時配合應用的技術,包括如下。
API 查詢
由於不使用SQL語言,各種查詢必須由各種應用的開發者,自訂API查詢。
雲端應用
雲存儲存就是構建一個大型的存儲平台給別人用,這也就意味著在這上面運行的應用其實
是不可控制的,也就是可擴展性(scalability)需求高,在這種情況 下,
NoSQL/Key-Value 就是唯一的選擇了。
是不可控制的,也就是可擴展性(scalability)需求高,在這種情況 下,
NoSQL/Key-Value 就是唯一的選擇了。
快取儲存
NoSQL/Key-Value 就是要求快,所以熱門資料,會經分析後儲存到快取記憶體,
更增加查詢效率。
更增加查詢效率。
NoSQL/Key-Value 資料庫的現況與未來
NoSQL/Key-Value 資料庫目前已經商業化,較知名的有:
Apache Cassandra, Redis, Aerospike, BigTable...等。
Apache Cassandra, Redis, Aerospike, BigTable...等。
雖然有人認為 NoSQL/Key-Value 已成趨勢,甚至可能壓倒「關聯式資料庫」。
較持平的評論,認為兩者實有市場區隔,NoSQL/Key-Value 適用巨量網站,
而「關聯式資料庫」還是較適合一般機構的管理資訊系統。
較持平的評論,認為兩者實有市場區隔,NoSQL/Key-Value 適用巨量網站,
而「關聯式資料庫」還是較適合一般機構的管理資訊系統。
沒有留言:
張貼留言