課程: 論文研討(一)
日期 : 2012/09/28時間 : 13:50 ~ 15:30
學生 : 資傳研一 劉孝皇
演講者 : 陳良弼
心得感想:
在今天的演講中最令我在意的是NoSQL,因為像Facebook以及Google等為了解決海量資料的存取問題而改用NoSQL來提升效能與擴充彈性,其中常見的NoSQL資料庫分為圖學資料庫(Graph Database)、文件導向的資料庫(Document-Oriented Database)、Key-Value Store分散式資料庫和記憶體快取為主的資料庫,而在解決海量資料時則可採取Key-Value將資料的結構簡化,另外每一筆資料之間沒有關連性,所以可以任意切割或調整,也可以分散到不同的伺服器中建立備份。 不過在使用Key-Value類型的資料庫時就可能發生資料衝突或遺失,因為Key-Value資料庫不像SQL具有交換(transaction),所以當資料有異動時就可能發生衝突。
在網路上找了一下相關的解決方式,雖然有CAP理論,包括資料一致性(Consistent)、可用性(Availability)和中斷容忍性(Partition Tolerance),然而理論上無法同時兼顧CAP這三種特性,所以NoSQL資料庫通常會選擇其中兩種特性來設計,通常是選擇CP或AP。 NoSQL資料庫會採取Eventually Consistency(資料遲早會一致)的作法,因為NoSQL的分散式設計會將資料分散複製到不同節點中,每個節點各自也能異動資料,然後再彼此同步。
Key-Value資料庫是NoSQL中最常見的類型,這類資料最大的特色就是採用Key-Value資料架構,取消了原本關聯式資料庫中常用的欄位架構(Schema),每筆資料各自獨立,所以可以打造出分散式和高擴充能力的特性。 包括像Google的BigTable、Hadoop的HBase等都是這類型的資料庫,而且Facebook在2008年釋出的分散式資料庫Cassandra可儲存高達120TB的站內信箱(inbox)資料,盡管現在NoSQL還不是很完全,但想必以後會是NoSQL的天下。
沒有留言:
張貼留言