Amazon SimpleDB 提供簡單的 Web 服務界面,可以建立和存放多個資料集、輕鬆查詢資料以及傳回結果。您的資料將會自動編製索引,方便您快速找到所需的資訊。如果之後加入新資料,也不必預先定義結構描述或變更結構描述。而且,擴展也像建立新網域一樣簡單,不必建置新的伺服器。

要使用 Amazon SimpleDB,您必須執行以下操作:

  • 建置您的資料集
    • 為您的網域選擇一個區域,以優化延遲、大幅降低成本,或滿足法規要求。目前以下區域提供 Amazon SimpleDB:美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、美國西部 (加利佛尼亞北部)、歐洲 (愛爾蘭)、亞太區域 (新加坡)、亞太區域 (東京)、亞太區域 (雪梨) 和南美洲 (聖保羅) 等區域。
    • 使用 CreateDomainDeleteDomainListDomainsDomainMetadata,建立和管理查詢網域
    • 使用 PutBatch PutDelete,建立和管理每個查詢網域中的資料集
  • 擷取您的資料
    • 使用 GetAttributes 擷取特定項目
    • 使用 Select 查詢資料集以取得符合特定條件的項目
  • 僅為您消耗的資源付費


Amazon SimpleDB 所用的資料模型可讓您輕鬆儲存、管理和查詢結構化資料。開發人員將資料集整理到網域中,而且可對特定網域中儲存的所有資料執行查詢。網域是屬性值組所描述項目的集合。

您可以將這些詞彙想成是與傳統試算表中類似的概念。例如,下表顯示的客戶管理資料庫詳細資訊,考慮這些資訊在 Amazon SimpleDB 中的表示方式。整個表就是一個名為 “customers” 的網域。個別客戶則是表中的列或網域中的項目。聯絡資訊是由欄標題 (屬性) 來描述。而值是在各個儲存格之中。現在,假設下面的記錄是要新增到網域的新客戶。

客戶 ID 名字 姓氏 街道地址 城市 郵遞區號 電話
123 Bob Smith 123 Main St Springfield MO 65801 222-333-4444
456 James Johnson 456 Front St Seattle WA 98104 333-444-5555

在 Amazon SimpleDB 中,若要新增上述記錄,您需要將客戶 ID 和每個客戶的屬性值組一起放入 (使用 PUT) 網域中。無需特定的語法,看起來就像下面這樣:

PUT (item, 123), (First name, Bob), (Last name, Smith), (Street address, 123 Main St.), (City, Springfield), (State, MO), (Zip, 65801), (Telephone, 222-333-4444) PUT (item, 456), (First name, James), (Last name, Johnson), (Street address, 456 Front St.), (City, Seattle), (State, WA), (Zip, 98104), (Telephone, 333-444-5555)

Amazon SimpleDB 與傳統資料庫的表格有幾個重要的區別。您可以輕鬆選擇之後再回來新增僅適用於特定記錄的新屬性。例如,假設您開始擷取客戶的電子郵件地址,以啟用訂單狀態的即時提醒。您不需要進行重建 “customer” 表、重寫查詢和重建索引等工作,只需要在現有的 “customer” 網域加入新的記錄和任何其他屬性。產生的網域會像下面這樣:

客戶 ID 名字 姓氏 街道地址 城市 郵遞區號 電話 電子郵件
123 Bob Smith 123 Main St Springfield MO 65801 222-333-4444  
456 James Johnson 456 Front St Seattle WA 98104 333-444-5555  
789 Deborah Thomas 789 Garfield New York NY 10001 444-555-6666 dthomas@xyz.com

Amazon SimpleDB 提供少量簡單的 API 呼叫,可以用來實作資料的撰寫、編製索引和查詢。這種界面與功能組特別將重點放在核心功能上,為開發人員提供建置所需的基本 API,讓您可以輕鬆學習且容易使用該服務。

  • CreateDomain – 建立包含資料集的網域。
  • DeleteDomain – 刪除網域。
  • ListDomains – 列出所有網域。
  • DomainMetadata – 擷取有關網域建立時間的資訊和儲存資訊 (表示為項目名稱和屬性的數量,以及以位元組為單位的總大小)。
  • PutAttributes – 新增或更新項目及其屬性,或者在現有的項目上新增屬性值組。收到項目後會自動編製項目索引。
  • BatchPutAttributes – 為了獲得更多的大量寫入整體輸送量,一次呼叫中最多執行 25 個 PutAttribute 操作。
  • DeleteAttributes – 刪除項目、屬性或屬性值。
  • BatchDeleteAttributes – 為了獲得更多的大量刪除整體輸送量,一次呼叫中最多執行 25 個 DeleteAttributes 操作。
  • GetAttributes – 擷取項目,以及其全部或部分屬性和值。
  • Select – 以熟悉的 “select target from domain_name where query_expression” 語法查詢資料集。支援的值測試為:=、!=、=、like、not like、between、is null、is not null 和 every ()。範例:select * from mydomain where every(keyword) = ‘Book’。使用 SORT 運算子排序結果,並使用 Count 運算子計算有多少個項目符合查詢中述詞指定的條件。

注意:Amazon SimpleDB 已經和 AWS Identity and Access Management 整合,可以對 Amazon SimpleDB 資源進行微調控制。透過與 AWS Identity and Access Management 整合,註冊使用 SimpleDB 的 AWS 帳戶可以建立多個使用者。這些使用者將獲得 SimpleDB API 層級的許可,以存取 AWS 帳戶所擁有的 SimpleDB 網域。有關其他詳細資訊,請參閱 AWS Identity and Access Management 詳細資訊頁面

Amazon SimpleDB 會儲存每個網域分散於各地的多個副本,以實現高可用性和資料耐久性。成功寫入 (使用 PutAttributes、BatchPutAttributes、DeleteAttributes、BatchDeleteAttributes、CreateDomain 或 DeleteDomain) 即表示將長期保留每個網域的所有副本。Amazon SimpleDB 支援兩種讀取一致性選項:最終一致讀取和一致讀取。

  • 最終一致讀取 (預設) – 最終一致性選項可最大化您的讀取效能 (在低延遲和高輸送量方面)。不過,最終一致讀取 (使用 Select 或 GetAttributes) 可能無法反映最近完成的寫入 (使用 PutAttributes、BatchPutAttributes、DeleteAttributes 和 BatchDeleteAttributes) 結果。所有資料副本的一致性通常可在一秒內實現;在短時間之後重複讀取,應該會傳回更新後的資料。
  • 一致讀取 – 除了提供最終一致性外,如果您的應用程式或應用程式的某個元素需要,Amazon SimpleDB 還能提供您請求一致讀取的彈性和控制能力。一致讀取 (在 ConsistentRead=true 條件下使用 Select 或 GetAttributes) 所傳回的結果會反映在讀取前收到成功回應的所有寫入。

預設情況下,GetAttributes 和 Select 會執行最終一致讀取。由於一致讀取可能導致延遲提高和讀取輸送量降低,所以最好只在以下這種應用程式案例中使用:讀取操作絕對需要讀取在該次讀取前收到成功回應的所有寫入。至於所有其他案例,預設的最終一致讀取將為使用者產生最佳的效能。另外請注意,Amazon SimpleDB 允許您為每個單獨的讀取請求指定一致性設定,所以相同應用程式的不同部分可能採用了不同的一致性設定。

Amazon SimpleDB 不是關聯式資料庫,且已捨棄複雜的交易和關係 (即合併),以提供唯一的功能和效能特性。不過,Amazon SimpleDB 提供以下交易處理語意:

  • 條件式 Puts/Deletes – 如果現有的屬性值符合您指定的值,可插入、取代或刪除項目的一或多個屬性值。如果值不相符或不存在,則更新會遭到拒絕。當不同來源並行寫入相同項目時,使用條件式 Puts/Deletes 可防止遺失更新。

利用預期值指定選擇性條件,即可透過 PutAttributes 和 DeleteAttributes API 公開條件式 puts 和 deletes。例如,如果您的應用程式是針對某活動預訂座位或售票,則可能只在指定的座位仍然是空位時 (選擇性條件) 才允許購買 (即寫入更新)。這些語意也可以用來實作計數器、只在項目還不存在時插入項目,以及開放式並行控制 (OCC) 等功能。透過保留版本編號 (或時間戳記) 屬性作為項目的一部分,並根據此版本編號的值執行條件式 put/delete,應用程式即可實作 OCC。

要進一步了解有關 Amazon SimpleDB 的交易語意或一致性的資訊,請參閱 Amazon SimpleDB Developer GuideConsistency Enhancements 白皮書

Amazon Web Services 為開發人員提供多個資料庫替代選項。您可以執行全受管的關聯式服務和 NoSQL 服務,也可以在 Amazon EC2 和 Amazon EBS 的雲端中操作自己的資料庫。

Amazon RDS 則可讓您執行功能完整的關聯式資料庫,同時免除資料庫管理工作。Amazon DynamoDB 是一種全受管 NoSQL 資料庫服務,可提供非常快速且可預期的效能及無縫的可擴展性。Amazon SimpleDB 專為較小的資料集提供非關聯式服務。在 Amazon EC2 與 Amazon EBS 上的眾多 AMI 中靈活選擇,可讓您完全控制資料庫,無需佈建和安裝硬體。

這些替代選項之間差異很大,因此其中某個選項可能更適合您的適用案例。

瀏覽在 AWS 上執行資料庫頁面,了解有關應用程式的各種資料庫替代方案的更多詳細資訊。

與 Amazon S3 不同,Amazon SimpleDB 並不儲存原始資料。而是將您的資料視為輸入並進行擴展來建立多個索引,讓您能夠快速地查詢該資料。此外,Amazon S3 和 Amazon SimpleDB 使用不同類型的實體儲存。Amazon S3 使用經過優化的密集儲存磁碟機,能夠經濟實惠的存放大型物件。Amazon SimpleDB 可儲存較小的資料位元,並使用針對資料存取速度優化的較不密集磁碟機。

為了優化您使用 AWS 服務的成本,大型物件或檔案應儲存在 Amazon S3,而較小的資料元素或檔案指標 (可能指向 Amazon S3 物件) 最好儲存在 Amazon SimpleDB。因為各服務之間的緊密整合且 AWS 環境內的資料傳輸免費,所以開發人員只要將這兩種服務整合在應用程式中,就可以輕鬆利用 Amazon SimpleDB 的速度和查詢功能,又能享受在 Amazon S3 中儲存資料的低成本優勢。

Amazon SimpleDB 目前可讓單一網域最高成長到 10 GB。如果您的資料集大於 10 GB,只要利用 Amazon SimpleDB 的擴展架構,並將資料分散到多個網域即可。因為 Amazon SimpleDB 在設計時已考慮到並行度,所以將資料分散到多個網域還可增加寫入和讀取輸送量潛力。一開始最多會為您分配 250 個網域;如需增加網域,請填寫此表單

有關已經有多少開發人員搭配使用 Amazon SimpleDB 和 Amazon S3 並從中獲益的更多資訊,請按一下此處

使用 Amazon SimpleDB 時,預測結構化資料儲存體大小的最佳方式如下:

所有項目 ID 的原始位元組大小 (GB) + 每個項目 45 位元組 + 所有屬性名稱的原始位元組大小 (GB) + 每個屬性名稱 45 位元組 + 所有屬性值組的原始位元組大小 (GB) + 每個屬性值組 45 位元組

要計算美國東部 (維吉尼亞北部) 區域或美國西部 (奧勒岡) 區域的每月預估儲存費用,請用得出的大小 (以 GB 為單位) 乘以 0.25 USD。在歐洲 (愛爾蘭) 區域、亞太區域 (新加坡) 區域、亞太區域 (雪梨) 區域或美國西部 (加利佛尼亞北部) 區域,請用得出的大小 (以 GB 為單位) 乘以 0.275 USD。在亞太區域 (東京) 區域,請用得出的大小 (以 GB 為單位) 乘以 0.276 USD。在南美洲 (聖保羅) 區域,請用得出的大小 (以 GB 為單位) 乘以 0.34 USD。

Amazon SimpleDB 會測量每個請求的機器使用率,並根據完成特定請求 (SELECT、GET、PUT 等) 所使用的機器容量計費,標準化為大約 2007 1.7 GHz Xeon 處理器的小時容量。機器使用率由每個請求處理的資料量 (屬性數量、屬性長度) 決定。擷取 256 個屬性的 GET 操作比只擷取 1 個屬性的 GET 操作使用更多的資源。檢查 100,000 個屬性的多述詞 SELECT 的費用高於檢查 250 個屬性的單一述詞查詢。

在每個請求的回應訊息中,Amazon SimpleDB 會傳回名為「信箱用量」的欄位。「信箱用量」用於測量每個請求耗用的機器資源量,不含頻寬或儲存。信箱用量會回報為用於完成特定請求的機器小時部分。在美國東部 (維吉尼亞北部) 區域和美國西部 (奧勒岡) 區域,個別請求的費用為信箱用量 (以小時數表示) * 每 Amazon SimpleDB 機器小時 0.14 USD。所有請求的費用為信箱用量 (以小時數表示) 的總和 * 0.14 USD。

例如,如果在一個月內,請求的信箱用量總和使用相當於一個 1.7 GHz Xeon 處理器 9 小時,則費用為:

9 小時 * 每 Amazon SimpleDB 機器小時 0.14 USD = 1.26 USD。

如果您的查詢網域位於歐洲 (愛爾蘭) 區域、亞太區域 (東京)、亞太區域 (新加坡) 區域、亞太區域 (雪梨) 區域或美國西部 (加利佛尼亞北部) 區域,則 Amazon SimpleDB 機器小時的定價為每機器小時 0.154 USD。如果您的查詢網域位於南美洲 (聖保羅) 區域,則 Amazon SimpleDB 機器小時的定價為每機器小時 0.19 USD。所有費用計算應適當調整,以反映相關區域的定價。

使用本服務需遵守 Amazon Web Services 客戶協議