基本概念和操作
S3系統(tǒng)是構(gòu)架在Dynamo之上的,它采取的并不是傳統(tǒng)的關(guān)系數(shù)據(jù)庫存儲方式。這么做主要有兩個原因:一方面是為了使文件操作盡量簡單、高效;另一方面對于—個普通的用戶來說最常用的操作是存儲和讀取數(shù)據(jù);傳統(tǒng)的關(guān)系數(shù)據(jù)庫最擅長的查詢在此無用武之地,使用關(guān)系數(shù)據(jù)庫只會增加系統(tǒng)的復(fù)雜性。S3存儲系統(tǒng)中涉及三個基本概念:對象(Object)、鍵(Key)和桶(Bucket)。
1.對象
對象是S3的基本存儲單元,主要由兩部分組成:數(shù)據(jù)和元數(shù)據(jù)。數(shù)據(jù)可以是任意類型;元數(shù)據(jù)是用來描述數(shù)據(jù)的數(shù)據(jù),它一般和具體數(shù)據(jù)相關(guān)聯(lián),并不單獨存在。S3中元數(shù)據(jù)存儲的是對象數(shù)據(jù)內(nèi)容的附加描述信息,這些信息可以是系統(tǒng)默認定義的系統(tǒng)元數(shù)據(jù)(System Metadata),也可以是自定義的用戶元數(shù)據(jù)(User Metadata),其中用戶元數(shù)據(jù)的大小不得超過2048B。S3系統(tǒng)默認的一些元數(shù)據(jù)如表3-3所示。

數(shù)據(jù)是通過一對鍵-值(Name-Value)集合來定義的。S3中元數(shù)據(jù)的處理由用戶自己完成,系統(tǒng)并不干預(yù)。Amazon對于對象存儲的內(nèi)容沒有限制,但每個對象最大容量目前被限制在5GB,且在使用UTF-8編碼時對象名稱不能超過1024B。重命名操作在對象中無效,對象數(shù)據(jù)的實際存儲方式對于用戶來說是不透明的,一旦用戶對象被創(chuàng)建并添加數(shù)據(jù),就無法對數(shù)據(jù)的某一子部分直接進行修改,間接的修改辦法是重新創(chuàng)建對象并向其 中添加新的數(shù)據(jù)。
2.鍵
鍵是對象的唯一標(biāo)示符。如同每個人都有一個身份證號一樣,每個對象必須指定一個鍵,否則該對象無意義。
3.桶
顧名思義,桶是一個用來存儲對象的容器。桶的作用類似于我們的文件夾,對象是存儲在桶中的。Amazon目前對于每個用戶限制最多創(chuàng)建100個桶,但是并不限制每個桶中對象的數(shù)量。桶不可以被嵌套,也就是桶中不能創(chuàng)建桶。桶的名稱必須在整個Amazon的S3服務(wù)器租用中是全局唯一的,這是因為S3中文件可以被共享,如果桶名不是全局唯一則會出現(xiàn)類似IP沖突的情況,所以桶在命名前最好使用相關(guān)命令來査看該名是否已被使用。具體的命名規(guī)則如下。
(1)可以包含小寫字母、數(shù)字、句號(.)、下劃線(_)、破折號(-)。
(2)必須以字母或數(shù)字開頭。
(3)名稱長度為3~255個字符。
(4)不能使用類似IP地址的格式(例如,210.45.212.1)。
為了符合域名解析器(DNS)的要求,建議使用以下規(guī)則。
(1)名稱中不要包含下畫線。
(2)名稱長度為3~63個字符。
(3)名稱不要使用破折號結(jié)尾。
(4)兩個句號不能在一起使用。
(5)名稱中破折號和句號不能一起使用(例如,chinacloud-.com和chinacloud.-com都是不合法的名稱)。
建議讀者使用符合DNS要求的命名規(guī)則,這樣一旦需要使用CloudFront等其他 Amazon的云計算服務(wù)時就不需要擔(dān)心名稱問題了。當(dāng)桶和鍵都己經(jīng)確定后,對象也就被 唯一確定了。用戶可以對比磁盤上文件的查詢,當(dāng)要找的文件所在的文件夾及文件名都確定后,文件自就被找到了。但必須指出的是S3默認并不是普通PC上的那種分層式樹狀文件存儲結(jié)構(gòu),開發(fā)者可以根據(jù)需要自己定義。S3中除了以上三個基本部分外,每個對象還有一個訪問控制模塊,具體內(nèi)容將在S3安全措施部分進行介紹。S3的基本結(jié)構(gòu)圖如3-15所示。

4.基本操作
根據(jù)Amazon提供的技術(shù)文檔,目前S3支持的主要操作包括:Get、Put、List、Delete和Head。表3-4列出了五種操作的主要內(nèi)容。
