2018年3月29日 星期四

NoSQL & SQL

終於可以來講 NoSQL,這個名詞只是為了強調他跟上面我們講的那些關聯式資料庫系統不太一樣,所以用了 NoSQL 這個詞。其中最大的差別大概就是 NoSQL 沒有 schema 這種東西,所以你不必事先知道你要存哪些資料。這樣的好處當然就是比較彈性,可是相對的你在查詢資料的時候速度也會比較慢一點。而且這些 NoSQL 系統,儲存資料的格式通常都是 JSON。
以上面那個文章跟評論的系統為例,如果你把資料存在 NoSQL 的資料庫裡面,可能就會長這樣:

{

  id: 1,  author: 'huli',  content: '大家好',  create_time: 12345,  comments: [    {      id: 1,      content: 'comment 1',      create_time: ...    }, {      id: 2,      content: 'comment2',      create_time: ...  }  ]}

有沒有發現哪邊不一樣?他把評論直接跟文章本身存在一起了!這點是 SQL 做不到的事情。(其實硬要做也是可以啦,但你會發現非常麻煩而且根本沒必要,查詢的時候也很不方便。你可以想想看怎麼做。不過最近 MySQL, postgreSQL 提供了資料格式是 JSON 的欄位,這又是另外一回事了)。
根據我個人的使用經驗來說,NoSQL 最適合的一點是搜集數據。例如說現在很多手機 App 其實會偷偷搜集你資料傳回去,做一些數據分析之類的。他可能會搜集:手機廠牌、型號、作業系統版本、安裝過的 App 等等的。這時候如果你是用一般傳統的 SQL 資料庫,你要怎麼定義 Schema?你的欄位會有超級多個,而且一旦你想要儲存新的追蹤資訊的時候,你就必須去改一次資料庫,這是很麻煩的行為。這時候用 NoSQL 就很方便了,你只要直接把資料存進去就好,什麼都不用想。你不必知道到底有多少項的追蹤資訊。
https://ithelp.ithome.com.tw/articles/10187443

沒有留言:

張貼留言