Amazon DynamoDB學(xué)習(xí)筆記(1)

什么是DynamoDB

Amazon DynamoDB 是一種完全托管的 NoSQL 數(shù)據(jù)庫(kù)服務(wù),提供快速而可預(yù)測(cè)的性能秒咐,能夠?qū)崿F(xiàn)無(wú)縫擴(kuò)展胳泉。DynamoDB 可以從表中自動(dòng)刪除過(guò)期的項(xiàng),從而幫助您降低存儲(chǔ)用量救氯,減少用于存儲(chǔ)不相關(guān)數(shù)據(jù)的成本惭婿。

DynamoDB工作原理

在DynamoDB中核心組件是表不恭、項(xiàng)目和屬性。表是項(xiàng)目的集合财饥,項(xiàng)目是屬性的集合换吧,DynamoDB使用主鍵來(lái)標(biāo)識(shí)表中的每個(gè)項(xiàng)目,還提供了二級(jí)索引來(lái)提供更大的查詢靈活性钥星,還可以使用DynamoDB流來(lái)捕獲DynamoDB表中的數(shù)據(jù)修改事件沾瓦。

表、項(xiàng)目和屬性

  • DynamoDB將數(shù)據(jù)存儲(chǔ)在表中打颤,表是某類數(shù)據(jù)的集合暴拄,例如People表漓滔、Cars表编饺。
  • 項(xiàng)目 每個(gè)表包含多個(gè)項(xiàng)目,項(xiàng)目是一組屬性响驴,具有不同于所有其他項(xiàng)目的唯一標(biāo)識(shí)透且,項(xiàng)目類似與SQL中的行、記錄或元組豁鲤。
  • 屬性 每個(gè)項(xiàng)目包含一個(gè)或多個(gè)屬性秽誊,屬性是基本的數(shù)據(jù)元素,屬性類似與SQL中的字段或列琳骡。
    People表示例
  • 表中每個(gè)項(xiàng)目都有一個(gè)唯一的標(biāo)識(shí)符或主鍵(PersonID)用于將項(xiàng)目和表中的其他內(nèi)容區(qū)分開(kāi)來(lái)
  • 除主鍵外锅论,People表是無(wú)架構(gòu)的,這表示屬性和其數(shù)據(jù)類型都不需要預(yù)先定義楣号,每個(gè)項(xiàng)目都能有自己獨(dú)特的屬性
  • 大部分屬性屬于標(biāo)量類型最易,這意味著它們只能有一個(gè)值,例如字符串或數(shù)字
  • 某些項(xiàng)目具有嵌套屬性(People表中的Address)炫狱,DynamoDB最高支持32級(jí)深度的嵌套屬性

Music表示例


  • 與People表不同的是藻懒,Music表的項(xiàng)目主鍵有兩個(gè)屬性(ArtistSongTitle),表中的每個(gè)項(xiàng)目都必須包含這兩個(gè)屬性视译,ArtistSongTitle屬性的組合用于將表中的每個(gè)項(xiàng)目區(qū)分開(kāi)來(lái)

主鍵

創(chuàng)建表時(shí)除了指定表名外還必須指定表的主鍵嬉荆,主鍵用于唯一標(biāo)識(shí)表中的每一個(gè)項(xiàng)目,任意兩個(gè)項(xiàng)目的主鍵都不能相同酷含。
DynamoDB支持兩種類型的主鍵:

  • 分區(qū)鍵 簡(jiǎn)單的主鍵由一個(gè)分區(qū)鍵的屬性構(gòu)成鄙早,表中的每個(gè)項(xiàng)目都必須有不同的分區(qū)鍵值汪茧,分區(qū)鍵值用于DynamoDB內(nèi)部散列(Hash)函數(shù)的輸入,散列函數(shù)的輸出決定將項(xiàng)目存儲(chǔ)到哪個(gè)分區(qū)中限番。
  • 分區(qū)鍵和排序鍵 也稱復(fù)合鍵陆爽,該類型的主鍵由兩個(gè)屬性組成, 第一個(gè)屬性是分區(qū)鍵扳缕,第二個(gè)屬性是排序鍵慌闭,分區(qū)鍵決定存儲(chǔ)位置,具有相同分區(qū)鍵的項(xiàng)目按照排序鍵的值排序然后順序存儲(chǔ)在一起躯舔。在具有分區(qū)鍵和排序鍵的表中兩個(gè)項(xiàng)目可能有相同的分區(qū)鍵值驴剔,但是必須有不同的排序鍵值。
    注意
    每個(gè)主鍵屬性必須為標(biāo)量粥庄,主鍵屬性的數(shù)據(jù)類型只能是字符串丧失、數(shù)字和二進(jìn)制。

二級(jí)索引

可以在表上建立一個(gè)或多個(gè)二級(jí)索引惜互,利用二級(jí)索引布讹,除了可以用主鍵進(jìn)行查詢外,還可以使用替代鍵查詢表中的數(shù)據(jù)训堆。
DynamoDB支持兩種索引:

  • 全局二級(jí)索引(Global secondary index) 一種可能帶有與表中不同的分區(qū)鍵和排序鍵的索引
  • 本地二級(jí)索引(Local secondary index) 一種分區(qū)鍵與表中的相同但排序鍵與表中不同的索引

每個(gè)表最多可以定義5個(gè)全局二級(jí)索引和5個(gè)本地二級(jí)索引描验。
前面的Music示例表中可以按Artist(分區(qū)鍵)或按ArtistSongTitle(分區(qū)鍵和排序鍵)進(jìn)行數(shù)據(jù)查詢。若要按GenreAlbumTitle查詢數(shù)據(jù)要該怎么做坑鱼?
這時(shí)我們可以在GenreAlbumTitle上創(chuàng)建一個(gè)二級(jí)索引膘流,然后通過(guò)相同的方式查詢索引。
下面的Music示例表包含了一個(gè)名為GenreAlbumTitle的新索引鲁沥,索引中Genre是分區(qū)鍵呼股,AlbumTitle是排序鍵。

  • 每一個(gè)索引屬于一個(gè)表(稱為索引的基表)画恰,上面Music是GenreAlbumTitle索引的基表.
  • DynamoDB會(huì)自動(dòng)維護(hù)索引彭谁,當(dāng)你添加、更新或刪除基表中的某個(gè)項(xiàng)目時(shí)允扇,DynamoDB會(huì)自動(dòng)添加缠局、更新或刪除屬于該表的任何索引中的對(duì)應(yīng)項(xiàng)目
  • 在創(chuàng)建索引時(shí)可以指定哪些屬性將從基表復(fù)制或投影到索引。不指定的情況下DynamoDB至少也會(huì)將鍵屬性投影到索引中蔼两,如上面所示甩鳄,此時(shí)GenreAlbumTitle索引中至少有Music表中的鍵屬性(ArtistSongTitle)

DynamoDB流

DynamoDB是一項(xiàng)可選功能,它用于捕獲DynamoDB表中的數(shù)據(jù)修改事件额划。有關(guān)這些事件的數(shù)據(jù)將按事件發(fā)生的順序近乎實(shí)時(shí)的出現(xiàn)在流中妙啃。
每個(gè)事件由一條流記錄表示,若對(duì)表啟用了流,每當(dāng)以下事件之一 發(fā)生時(shí)揖赴,DynamoDB流都會(huì)寫入一條流記錄:

  • 如果向表中添加了新項(xiàng)目馆匿,流將捕獲整個(gè)項(xiàng)目的映像(包括其所有屬性)
  • 如果更新了項(xiàng)目,流將捕獲項(xiàng)目中任何已修改屬性的"之前""之后"映像
  • 如果從表中刪除了項(xiàng)目燥滑,流將在整個(gè)項(xiàng)目被刪除前捕獲其映像
    每條流記錄還包含表名稱渐北、事件時(shí)間戳和其他元數(shù)據(jù)。流記錄的有效事件為24小時(shí)铭拧,過(guò)此事件后記錄將被自動(dòng)刪除

擴(kuò)展

DynamoDB流可以和AWS Lambda結(jié)合使用以創(chuàng)建觸發(fā)器赃蛛,即在流中有你感興趣的事件出現(xiàn)時(shí)自動(dòng)執(zhí)行Lambda中的代碼。
例如搀菩,假設(shè)有一個(gè)包含某公司客戶信息的 Customers 表呕臂。假設(shè)你希望向每位新客戶發(fā)送一封“歡迎”電子郵件。你可對(duì)該表啟用一個(gè)流肪跋,然后將該流與 Lambda 函數(shù)關(guān)聯(lián)歧蒋。Lambda 函數(shù)將在有新項(xiàng)目添加到Customers表的流記錄發(fā)生時(shí)執(zhí)行。若該新項(xiàng)目有EmailAddress屬性州既,Lambda 函數(shù)將調(diào)用 Amazon Simple Email Service (Amazon SES) 以向該地址發(fā)送電子郵件谜洽。


此示例中最后一位客戶將不會(huì)收到電子郵件吴叶,因?yàn)樗麤](méi)有EmailAddress屬性晤郑。
除了觸發(fā)器之外,DynamoDB流還提供更強(qiáng)大的解決方案诫龙,例如AWS區(qū)域內(nèi)或跨區(qū)域數(shù)據(jù)復(fù)制,DynamoDB表中的數(shù)據(jù)具體化視圖锦聊,使用Kinesis具體化視圖的數(shù)據(jù)分析等孔庭。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怎抛,一起剝皮案震驚了整個(gè)濱河市马绝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖纹份,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笋额,死亡現(xiàn)場(chǎng)離奇詭異茉盏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)讶迁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門客扎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人咱筛,你說(shuō)我怎么就攤上這事溉愁。” “怎么了堂污?”我有些...
    開(kāi)封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵式镐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上无虚,老公的妹妹穿的比我還像新娘嗤堰。我一直安慰自己度宦,他們只是感情好踢匣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著戈抄,像睡著了一般离唬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上划鸽,一...
    開(kāi)封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天输莺,我揣著相機(jī)與錄音,去河邊找鬼裸诽。 笑死模闲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的崭捍。 我是一名探鬼主播尸折,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼殷蛇!你這毒婦竟也來(lái)了实夹?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤粒梦,失蹤者是張志新(化名)和其女友劉穎亮航,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體匀们,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缴淋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泄朴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片重抖。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖祖灰,靈堂內(nèi)的尸體忽然破棺而出钟沛,到底是詐尸還是另有隱情,我是刑警寧澤局扶,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布恨统,位于F島的核電站叁扫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏畜埋。R本人自食惡果不足惜莫绣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悠鞍。 院中可真熱鬧对室,春花似錦、人聲如沸狞玛。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)心肪。三九已至锭亏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間硬鞍,已是汗流浹背慧瘤。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留固该,地道東北人锅减。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像伐坏,于是被迫代替她去往敵國(guó)和親怔匣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容