iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
Software Development

NoSQL: Not Only SQL系列 第 23

[Day 23] Column Family Database:簡介

  • 分享至 

  • xImage
  •  

Column Family 簡單來說就是把多個 Columns 分在一個個 Family 中,一般來說被分在同個 Family 中的 Columns 具有相同的特性,同一 Row 中的同個 Family 中的 Columns 會被存放在一起,不同 Family 則不一定。這樣的關係有點像是使用關聯式資料庫時,如果有一張表的欄位太多,我們會將有關係的幾個欄位一起拆分出去變成另一張子表。

https://ithelp.ithome.com.tw/upload/images/20220925/201511371eTORdQjLE.png

不同的是,關聯式資料庫中所有的表格都必須預先定義好 Schema,但 Column Family Database 中,需要預先定義的只有 Family,而 Family 中的 Columns 則不必,也不用統一。另一個特點是除了 Row 和 Column,資料在儲存時還包含 Time Stamp 的維度,也就是說所有 Column 內存放的資料是有多個時間版本的,每次的異動其實是新增一個版本,而非直接修改已存在裡面的資料。

https://ithelp.ithome.com.tw/upload/images/20220925/20151137UUZmEoS2pf.png
https://ithelp.ithome.com.tw/upload/images/20220925/20151137CpCkWdJsft.png

以上圖為例,第一個 Row 是客戶 Austin 的資料,裡面包含兩個 Column Family: Basic Info 和 Address,其中 Basic Info 的 Email 欄位被修改了三次,而 Address 中的欄位是 US 的組合;而第二個 Row 是客戶 Ben 的資料,同樣擁有 Basic Info 和 Address 兩個 Column Family,但他的 Address 中的欄位和 Austin 的不同,是 UK 的組合。

透過 Column Family 的設計,資料庫可以存放數以千計(或更多)的 Columns,同時維持一定的效能。Column Family Database 中比較知名的有 Google 的 BigTable、開源的 HBase 和 Facebook開源的 Cassandra。


上一篇
[Day 22] Document Database: 以 MongoDB 為例
下一篇
[Day 24] Column Family Database:簡介
系列文
NoSQL: Not Only SQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言