iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
1
AI & Data

與資料庫共舞系列 第 12

Day 12 — 回到觀念,聊聊 NoSQL

  • 分享至 

  • xImage
  •  

今天我們回到觀念,隨著資料量的增加,有些人就開始思考,我們是不是需要新的資料庫架構來儲存資料。尤其是今天很多的應用程式,未必完全符合當初關聯式資料庫,所預想的使用情境。不管事資料量過大的時候會有的效能上的挑戰、抑或是儲存資料時需要的彈性。今天的文章我們會討論一下非關聯式資料庫 (NoSQL)

「大」數計

很多人常掛在嘴邊的大數據,在討論時我們會說他有四V特性:

  1. Volume 資料量 — 隨著資料量的增加,有時候單一資料庫就不大能夠儲存完所有的資料,所以這個時候我們就會考量到,是不是應該用分散式資料庫 (也就是說相同的資料,會儲存在多個不同的資料庫當中,以分散每個資料庫所需要儲存的資料量)然而要能夠建構出好的穩定的分散式資料庫並沒有很容易。
  2. Variety 多樣性 — 當資料存在非常多的多樣性的時候就很難用非常統一的格式去做儲存,常常被拿來當作舉例的資料就像是網路商店所販賣的商品: 一個商品可能有時效性的資訊,有些商品可能有體積容積的敘述,又有些商品可能有性能表現的特徵。這時候如果我們必須要事先預支並且歸類這些資料格式的話將會是非常困難的。
  3. Velocity 速度 — 速度其實比較抽像一點,他想要表示的是資料快速的串流進來,所謂的串流就是當資料收集到後,會隨被系統捕捉,這時候其實我們會希望能夠做一些即時的分析,如果還要分散到不同的關聯表裡,面然後再去做分割、儲存、再資料處理,可能這筆資料已經過時了,況且這些資料又未必需要長久儲存。
  4. Veracity 不確定性 — 在這裡的不確定性其實指的是說這筆資料可能可有可無,或是這筆資料的資料品質不好。這裡講的不確定性跟剛剛講的多樣性都指向同一件事: 希望資料庫能夠更有彈性。

(IBM 的 4V 大數據解釋圖)

https://ithelp.ithome.com.tw/upload/images/20200912/201298295EbgkqtGIS.jpg

在這裡非關聯式資料庫 NoSQL 想要解決的就是能夠對付這4V,尤其是在給資料彈性以及快速做簡單分析這兩個要件上面特別的顯著。首先NoSQL取消了在SQL當中所需要的綱要,綱要所存在的目的就是為了要能夠有很高的效能,但是為了要能夠有彈性的儲存資料,NoSQL採取的策略就是,取消需要綱要,但是多花一點點額外的時間去讀取資料裡面所儲存的樣態。

此外NoSQL比較常會有重複的資料內容,這樣表示,當我要存取資料的時候,可以快速的找到我所需要的資料,但是在面對更新資料的時候,就必須要花比較多的時間來維持,因為同樣一筆資料,可能出現在很多個不同的地方。建資料會存在很多個不同的地方,那就代表說相較於SQL, NoSQL在維持資料一致性上面,無法保持一致 (會有延遲)。

這些不同的特點都是為了要應付人們在儲存並使用資料本質上的改變。

兩種NoSQL

NoSQL 的樣態其實很多元,就連 XML 都可以算是一種 NoSQL。每一段開口和幣口中,都夾著這個項目的資料數值。在這個系列文章中,我們介紹兩種NoSQL,第一種採取的是用,鍵 (Key) — 值(Value) 儲存資料,每一筆資料,都是由一個項目對應到一個值。另外一種叫做圖資料庫,透過節點(Node)與鍵(Edge)之間的關聯來儲存資料。

接下來幾篇,我們會先討論前者。所以究竟什麼是 Key —Value Pair。如果對Python 熟悉,這個應該很不陌生。我們來看看一筆資料在 Key-Value Pair 底下的樣子:

{
	user: "abc",
	contact: {
        phone: "123-456-7890",
        email: "xyz@example.com"
    },
	access: {
        level: 5,
        group: "dev"
    }
}

沒錯長得跟 Dictionary 很像,其實就是個JSON*。你就會發現,與其把資料拆成一個一個的關聯表,現在我們把資料想成一個文件,將和這個文件相關的所有資訊都存放在一起。

明天我們要來建構自己的MongoDB!

*嚴格說是 BSON,差別主要在實際儲存在資料庫的形式。


上一篇
Day 11 — 創建不同視角
下一篇
Day13 — 架起MongoDB囉!
系列文
與資料庫共舞30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言