問:什麼是 Amazon SimpleDB?

Amazon SimpleDB 是一種高可用性、靈活且可擴展的非關聯式資料存放區,可免除資料庫管理的工作。它提供在雲端進行資料索引和查詢的核心資料庫功能。

問:Amazon SimpleDB 有哪些用途?

Amazon SimpleDB 提供簡單的 Web 服務界面,可以建立和存放多個資料集、輕鬆查詢資料以及傳回結果。此服務可管理基礎設施佈建、硬體和軟體維護、資料項目複寫和索引,還有效能調校。這讓您能夠專注於應用程式開發,且只需按儲存資料和發出請求實際使用的資源付費。Amazon SimpleDB 還允許您在多個網域分割工作負載以實現擴展性。如果您的工作負載超過單一網域提供的儲存和請求輸送量,可以透過建立額外的網域並將資料和請求分散到各網域,以取得更高的輸送量。透過跨多個網域 (和機器資源) 分散資料和請求,您可以獲得更大的運算資源「表面積」來執行請求和查詢。例如,如果您將資料分散到 10 個網域,並以平行方式執行 10 個查詢,這將比以序列方式對包含所有資料的單一網域執行 10 次查詢獲得更大的輸送量。

Amazon SimpleDB 的靈活性可讓您即時變更資料模型,只需新增或移除屬性,無須破壞嚴格的結構描述。因此,您可以快速地反映對應用程式和業務的變更,無須耗資重構或執行複雜的結構描述更新。此外,您還可以選擇一致性或最終一致讀取請求,靈活地讓讀取效能 (延遲和輸送量) 與應用程式或甚至是應用程式內不同部分需求的一致性要求相符。

使用 Amazon SimpleDB 時,服務可自動完成的部分也同等重要。Amazon SimpleDB 會自動管理基礎設施佈建、硬體和軟體維護、資料項目複寫和索引,還有效能調校。

問:Amazon SimpleDB 有哪些技術優勢?

Amazon SimpleDB 的主要技術優勢就是自動化的異地備援複寫功能。每次儲存資料項目時,都會在您所選區域內的不同資料中心建立多個複本。這樣即使在極少發生的資料中心故障情況下,也可提供高可用性和資料耐久性。Amazon SimpleDB 還能自動執行資料索引,以啟用有效地查詢,並提供簡單的儲存和存取 API。最後,開發人員可利用 Amazon 經過驗證的運算環境的安全性和可靠性。



問:開發人員可以實現哪些以前無法實現的功能?

過去,Amazon SimpleDB 的可用性和耐久性特點都是透過叢集關聯式資料庫來提供,但這需要大規模的前期投資、複雜程度比一般所需的還高,且通常需要 DBA 來維護和管理。然而,Amazon SimpleDB 的非關聯式本質可實現低管理擴展 (透過建立額外網域) 和即時資料模型變更。

問:Amazon DynamoDB 與 Amazon SimpleDB 有何區別?我該用哪一個?

兩種服務都屬於非關聯式資料庫,所以都不需要資料庫管理工作。Amazon DynamoDB 專注在提供可無縫擴展、快速且可預測的效能。其在固態硬碟 (SSD) 上執行以提供低延遲的回應時間,而且特定表格的請求容量或儲存大小不受限制。這是因為 Amazon DynamoDB 會自動在足夠數量的伺服器上對您的資料和工作負載進行分割,以滿足您的擴展要求。相較之下,Amazon SimpleDB 中的網域受到 10 GB 的嚴格儲存限制,能達到的請求容量也受到限制 (通常低於每秒 25 次寫入操作);如果需要額外擴展,您還要負責管理在額外的 SimpleDB 表進行分割和重新分割。

請參閱在 AWS 上執行資料庫,取得最適當解決方案的其他指導。

問:Amazon SimpleDB、Amazon RDS 及 Amazon EC2 關聯式資料庫 AMI 適用的情況分別為何?

AWS 為開發人員提供了一些資料庫替代選項。Amazon SimpleDB 提供簡單的索引和查詢功能。Amazon RDS 則可讓您執行功能完整的關聯式資料庫,同時免除資料庫管理工作。另外,在 Amazon EC2 和 Amazon EBS 上的眾多關聯式資料庫 AMI 中靈活選擇,可讓您在雲端操作自己的關聯式資料庫。這些替代選項之間差異很大,因此其中某個選項可能更適合您的使用案例。

請參閱在 AWS 上執行資料庫,取得最適當解決方案的其他指導。

問:何時該使用 Amazon S3,何時又該使用 Amazon SimpleDB?

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 搭配 Amazon S3 的優勢,請參閱此連結

問:如何開始使用 Amazon SimpleDB?

如果您已經擁有 Amazon Web Services 帳戶,就能立即登入並開始使用 Amazon SimpleDB。如果您還沒有帳戶,請按一下此頁面上的「建立 AWS 帳戶」按鈕。接著詳閱 Amazon SimpleDB Developer Guide。之後,您便可以建立網域並開始使用 AWS 開發套件來存放與查詢資料。

問:可以存放哪種類型的資料?

您可以在 Amazon SimpleDB 中儲存任何 UTF-8 字串資料。請參閱 Amazon Web Services 客戶協議以了解詳細資訊。

問:什麼是網域?什麼是 Amazon SimpleDB 資料模型?

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

問:我的資料存放在哪裡?

Amazon SimpleDB 將資料以冗餘方式存放在您所指定地理區域的多個資料中心。當您使用 Amazon SimpleDB 建立網域時,可以為網域指定區域,以優化延遲、將成本降至最低或遵守法規要求。目前以下區域提供 Amazon SimpleDB:美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、美國西部 (加利佛尼亞北部)、歐洲 (愛爾蘭)、亞太區域 (新加坡)、亞太區域 (東京)、亞太區域 (雪梨) 和南美洲 (聖保羅) 等區域。

問:如何決定將資料存放在哪個區域?

針對您的特定應用程式考量下列幾個因素。您可能希望將資料存放在具備以下條件的區域…

  • ...距離您的客戶、資料中心或其他 AWS 資源 (例如 EC2 執行個體) 較近,以便縮短資料存取延遲。
  • ...距離其他營運地點很遠,以實現地理位置冗餘和災難復原。
  • ...讓您能夠遵守特定法律和法規要求。
  • ...讓您能夠縮短機器小時和降低儲存費用。您可以選擇價格較低的區域以節省費用。請參閱 Amazon SimpleDB 詳細資訊頁面的定價部分。

問:Amazon 如何處理我在 Amazon SimpleDB 中的資料?

Amazon 將存放您的資料,並追蹤其相關使用情況,以用於帳單用途。除非法律要求,否則 Amazon 不會出於任何目的存取您的資料。請參閱 Amazon Web Services 客戶協議以了解詳細資訊。

問:Amazon 是否會將自己的資料存放在 Amazon SimpleDB?

是。Amazon 內部開發人員也將 Amazon SimpleDB 用於各式各樣的專案。其中很多專案使用 Amazon SimpleDB 作為授權資料和查詢存放區,並倚賴它執行業務關鍵型操作。

問:讀取一致性是什麼意思?我需要注意嗎?

Amazon SimpleDB 會儲存每個網域分散於各地的多個複本,以實現高可用性和資料耐久性。成功寫入 (使用 PutAttributes、BatchPutAttributes、DeleteAttributes、CreateDomain 或 DeleteDomain) 即表示將長期保留每個網域的所有副本。讀取一致性表示某個資料項目的成功寫入或更新會在何時、以何種方式反映在該項目的後續讀取操作 (使用 Select 或 GetAttributes)。Amazon SimpleDB 所提供的邏輯讓您能夠針對應用程式中的每次讀取請求,指定您需要的一致性特徵。

問:Amazon SimpleDB 提供哪些讀取一致性選項?如何決定使用哪個選項?

Amazon SimpleDB 支援兩種讀取一致性選項:最終一致讀取和一致讀取。

最終一致讀取 (預設)。最終一致讀取選項可最大化您的讀取效能 (在低延遲和高輸送量方面)。但是,最終一致讀取 (使用 Select 或 GetAttributes) 可能不會反映最近完成的寫入操作 (使用 PutAttributes、BatchPutAttributes、DeleteAttributes) 結果。所有資料副本的一致性通常可在一秒內實現;在短時間之後重複讀取,應該會傳回更新後的資料。

一致讀取。除了提供最終一致讀取外,Amazon SimpleDB 還讓您可以根據應用程式或應用程式某元素的要求,以靈活而有控制力的方式請求一致讀取。一致讀取 (在 ConsistentRead=true 條件下使用 Select 或 GetAttributes) 所傳回的結果會反映在讀取前收到成功回應的所有寫入。

預設情況下,GetAttributes 和 Select 會執行最終一致讀取。由於一致讀取可能導致延遲提高和讀取輸送量降低,所以最好只在以下這種應用程式案例中使用:讀取操作絕對需要讀取在該次讀取前收到成功回應的所有寫入。至於所有其他案例,預設的最終一致讀取將為使用者產生最佳的效能。要進一步了解 Amazon SimpleDB 的一致性選項,請參閱我們的開發人員指南

問:各種讀取一致性模式最適合哪些類型的使用案例和應用程式?

如前所述,Amazon SimpleDB 在指定讀取一致性要求時提供的靈活性非常重要,因為不同類型的應用程式和使用案例可能有不同的效能和一致性要求。另外請注意,Amazon SimpleDB 允許您為每個單獨的讀取請求指定一致性設定,所以相同應用程式的不同部分可能採用了不同的一致性設定。以下是各個讀取一致性選項最可能適用時機的一些指示:

最終一致讀取:

對讀取效能 (延遲和輸送量) 的重視優於高一致性的任何應用程式 (或應用程式的一部分),適合最終一致讀取。讀寫比例高的資料通常符合此描述。例如,社交網路中的朋友/關注者清單、照片標籤和個人詳細資訊。一般而言,在這些使用案例中,效能 (提供答案) 比提供最新答案更加重要。例如廣告網路,在這裡盡快向使用者顯示庫存中的廣告比根據過去一秒內的更新邏輯顯示廣告更加重要。衡量最終一致讀取是否適合您的應用程式還有另一個準則,就是它是否能處理使用者認知的一致性概念。假設有一個涉及直接使用者互動而不是程式設計存取的應用程式。例如,使用者更新部落格文章然後按重新整理,或使用者將評論張貼到部落格。這個等待時間就是我們所提到的使用者認知一致性,只要最終使用者看到資料時的時間是一致的,應用程式就可利用最終一致性。在這些案例中,寫入到達資料所有副本所需的時間小於客戶預期可看見新資料 (例如,重新整理頁面) 的時間延遲。如前所述,Amazon SimpleDB 通常可在一秒內達到一致性。如果應用程式的最終使用者不會注意或不介意是否可在一秒內反映更新,則最終一致性對一般的讀取效能優勢就有意義。

當更新項目時,最終一致讀取可能傳回目前值或舊值。當插入項目時,最終一致讀取可能不會傳回該項目。

一致讀取:

視應用程式而定,您可能需要讓讀取資料項目的使用者看到許多並行寫入更新中最近更新的版本。例如,您可能正在執行資料統計或報告應用程式,而您無法接受 GetAttributes 呼叫或 Select 查詢的結果中沒有反映最新寫入操作的風險。在這種情況下,傳送 ConsistentRead = True 參數將提供一致的結果。

另一範例是在 SimpleDB 中儲存應用程式記憶體內狀態。隨著應用程式的狀態值變更,應用程式可以更新 SimpleDB。如果應用程式故障並需要重新啟動,應用程式就可以向 SimpleDB 發出一致的 GetAttributes 或 Select 呼叫,以取得上次更新的應用程式狀態。

要進一步了解 Amazon SimpleDB 的一致性,請參閱 Amazon SimpleDB Developer GuideConsistency Enhancements 白皮書

問:Amazon SimpleDB 是否支援交易?

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

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

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

要進一步了解 Amazon SimpleDB 的交易處理語意,請參閱 Amazon SimpleDB Developer Guide

問:Amazon SimpleDB 的費用為何?

您可以免費試用 Amazon SimpleDB,毫無風險。在免費方案計劃下,您可以免費使用每月消費的前 25 個機器小時和 1 GB 儲存。Amazon SimpleDB 讓開發人員僅按實際用量付費,沒有最低費用。

有關完整的 Amazon SimpleDB 定價,請按一下此處

問:可以提供一些定價範例嗎?

以下範例是超過上述免費用量的使用收費。如前所述,低於每月免費方案的用量為免費提供。

機器使用率:
Amazon SimpleDB 會測量每個請求的機器使用率,並根據完成特定請求 (QUERY、GET、PUT 等) 所使用的機器容量計費,標準化為大約 2007 1.7 GHz Xeon 處理器的小時容量。機器使用率由每個請求處理的資料量 (屬性數量、屬性長度) 決定。擷取 256 個屬性的 GET 操作比只擷取 1 個屬性的 GET 操作使用更多的資源。檢查 100,000 個屬性的多述詞 QUERY 費用高於檢查 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.162 USD。如果您的查詢網域位於南美洲 (聖保羅) 區域,則 Amazon SimpleDB 機器小時的定價為每 Amazon SimpleDB 機器小時 0.19 USD。所有費用計算應適當調整,以反映相關區域的定價。

資料傳輸範例:

您三月份在美國 (維吉尼亞北部) 區域每天從 Amazon SimpleDB 傳出 500 MB 資料。

當月傳出的總資料量 = 500 MB x (1 GB/1,024 MB) x 31 天 = 15.14 GB

總費用 = 15.14 GB x (0.12 USD/GB) = 1.82 USD

儲存
以下是預測結構化資料儲存體大小最好的方法:

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

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

問:為什麼價格因我選擇的 Amazon SimpleDB 區域而異?

成本越低,我們的收費就越低。例如,我們在維吉尼亞北部區域的成本低於加利佛尼亞北部區域的成本。同樣地,我們在新加坡區域的頻寬成本高於加利佛尼亞北部區域的成本。

問:使用 Amazon SimpleDB 如何計價和收費?

開始使用服務時,沒有安裝費,使用者無須對服務的使用簽訂任何長期使用期限合約。每個月底將自動向您的信用卡收取當月使用費。只需登入您的 Amazon Web Services 帳戶,然後按一下「您的 Web 服務帳戶」下的「帳戶活動」,即可隨時在 AWS 網站上查看目前帳單期間的費用。

問:Amazon SimpleDB 資料的組織方式為何?

將結構化資料組織到網域中,就可以對存放在特定網域中的所有資料執行查詢。網域由項目組成,而項目由屬性值組描述。要了解這些元素,可以用試算表中儲存的資料來比喻。Amazon SimpleDB 網域就像試算表,項目是資料列,屬性是欄標題,而值則是每個儲存格中輸入的資料。

但和試算表不同的是,Amazon SimpleDB 允許多個值與各個「儲存格」關聯 (例如,項目 “123” 的屬性 “color” 可以同時有 “blue” 和 “red” 值)。此外,在 Amazon SimpleDB 中,每個項目都可以有自己唯一的關聯屬性集 (例如,項目 “123” 可以有屬性 “description” 和 “color”,而項目 “789” 可以有屬性 “description”、“color” 和 “material”)。Amazon SimpleDB 會自動編製資料索引,您可以輕鬆快速找到所需的資訊。如果之後加入新資料,也不必預先定義結構描述或變更結構描述。

問:如何與 Amazon SimpleDB 連接?

Amazon SimpleDB 提供簡易的標準 REST Web 服務界面,此界面可用於任何網際網路開發工具組。這些操作經過特別設計,可輕鬆加入新的服務界面,並方便您隨時新增自訂功能層。您可以在此處找到更多詳細資訊。

問:我的資料的安全性如何?

Amazon SimpleDB 採用經過驗證的加密方法來驗證使用者。只有您才能使用自己的資料。如果想要增強安全性,您可以在將資料存入 Amazon SimpleDB 前先加密。如果選擇加密資料,請注意,SimpleDB 是直接針對您儲存的字串執行查詢,而不會為您解碼。

問:Amazon SimpleDB 是否已經與 AWS Identity and Access Management 整合?

是,透過與 AWS Identity and Access Management 整合,註冊使用 SimpleDB 的 AWS 帳戶可以建立多個使用者,並將 SimpleDB API 層級許可指派給個別使用者,以存取主帳戶擁有的各個 SimpleDB 網域。

問:與 AWS Identity and Access Management 整合可以解決哪些客戶案例?

透過與 AWS Identity and Access Management 整合,Amazon SimpleDB 使用者現在可以處理以下常見案例:利用適當的許可安全地在組織內外分享網域

  • 唯讀網域、讀/寫網域、唯寫網域
  • SimpleDB API 層級許可
  • 限制只從一個 IP 地址範圍存取 SimpleDB
  • 限制一定日期/時間範圍存取 SimpleDB。

問:如何將 AWS Identity and Access Management 用於 Amazon SimpleDB?

您可以使用 AWS Identity and Access Management Service API 啟用 SimpleDB 許可。SimpleDB 中沒有使用此功能的 API。例如,您可以使用 AWS Identity and Access Management API CreateUser,透過必要的存取金鑰建立使用者。然後,利用必要的許可和條件建立 AWS 政策,並使用 AWS Identity and Access Management PutPolicy API 將此政策與使用者建立關聯。此政策可確保使用者具有適當的權限等級。使用者現在可使用自己的金鑰呼叫 SimpleDB 來存取 AWS 帳戶資源。當 SimpleDB 收到此呼叫時,會取得與 AWS Identity and Access Management 服務關聯的政策,並根據許可授權或拒絕使用者。

問:是否可以使用 AWS Identity and Access Management 與組織外的使用者共用我的 SimpleDB 網域?

不能直接共用。SimpleDB 網域只能在單一 AWS 帳戶內共用。不過,您可以使用存取金鑰建立使用者,以此與外部合作夥伴或組織進行共用。

問:哪裡可以進一步了解 AWS Identity and Access Management?

有關完整的詳細資訊,請瀏覽 AWS Identity and Access Management 產品頁面

問:Amazon SimpleDB 的可靠性如何?

此服務在 Amazon 的高可用性資料中心內執行,可提供強大且一致的效能。為防止資料遺失或變成不可用,經過完全索引的資料都會以冗餘方式存放在多個伺服器和資料中心。所有 Amazon SimpleDB 區域都一樣可靠。

問:如果來自我的應用程式的流量突然增加達到峰值,會出現什麼情況?

Amazon SimpleDB 從一開始就將處理來自任何網際網路應用程式的高流量作為設計目標。按用量付費的定價以及無限制的容量,可以確保您的遞增費用不會變化,而您的服務也不會中斷。Amazon SimpleDB 的龐大規模讓我們能夠均衡地分散負載,因此任何應用程式都不會受到突增流量的影響。

問:我不在美國,可以使用 Amazon SimpleDB 嗎?

任何人都可以使用 Amazon SimpleDB。您只需要決定希望 Amazon SimpleDB 將資料存放在哪個區域。

問:價格含稅嗎?

除非另有說明,否則我們的價格不包括適用的稅金和稅收 (包括加值稅和適用的營業稅)。帳單地址在日本的客戶若使用亞太區域 (東京),則需負擔日本消費稅。進一步了解