完成了階段性的實作後,我們今天一起來看看什麼是Dynamo DB。
如果我們有非結構資料的儲存需求,且要求千分之一秒的高速讀寫和完善的備份機制,那Dynamo DB就可以派上用場。
DynamoDB是分散式NoSQL及key-value為基礎的資料庫,資料會按照分區(partition)來做存放。DynamoDB由table組成,每一個table會有多個紀錄,稱作item。每一個item由一組key-attribute組成,每一個attribute會有一到多個value。
我們可以選擇item當中的某一個key當作Partition Key,用來定義資料的分區。以足球選手的資料為例,可以定義選手所效力的隊伍,當作partition key,資料就會按照隊伍來分區。Sort Key的話,從字面上即可以理解,是針對各個分區,提供資料排序的Key,例如在名為曼城隊的分區下,按照足球選手在職年數進行排序。
如果想要重新去調整分區與排序的設定,該怎麼做呢?
如果要調整排序設定的話,可以在一開始建立Table時,納入Local Secondary Index設定,簡稱LSI;如果一開始建立Table時,沒有納入這LSI,就只能抱歉,排序的調整就無法透過LSI來動了。如果要同時調整分區與排序的設定的話,Global Secondary Index或稱作GSI,就能做到。
資料備份有兩種方式: 隨需備份(On-Demand Backup and Restore)以及時間點復原(Point-in-Time Recovery)。隨需備份讓我們自行定義資料備份的時間點,因此,備份可還原的時間,就是根據我們曾經備份過的時間點,來做還原。時間點復原是AWS提供的自動化備份的服務,只要是近期35天內的資料,我們都可以在這個時間範圍內,做資料的還原。
Dyanmo DB如何跟我們收錢呢?相信這是一個大家相當關注的議題。
Dynamo DB會根據Read-Write Units,也就是讀寫單位來計價。根據不同的方案,每一個單位(Unit)會有不同的讀寫能力。主要方案有三種如下:
方案 | Eventually Consistent Read Request | Strongly Consistent | Transactional Request |
---|---|---|---|
讀取請求單位 | 8KB/Unit | 4KB/Unit | 4KB/Two Unit |
寫入請求單位 | 1KB/Unit | 1KB/Unit | 1KB/Two Unit |
表格參考: 大話AWS雲端架構