Amazon SimpleDB 是以 Amazon 的 Dynamo 為基礎的另外一個服務,把公司最缺的一塊,也就是資料庫,補起來了。SimpleDB 仍處於公眾測試階段;當前,用戶能在線註冊其免費版 – 也是說直到超出使用限制為止。SimpleDB 有幾方面的限制:
一次查詢最多只能執行5秒鐘。
除了字符串類型,別無其它數據類型。
一切都以字符串形式被存儲、獲取和比較。
字符串長度不能超過 1024 字節,限制了使用者在一個屬性中能存儲的文本的大小。
一個項目最多可以有 256個屬性。
由於處在測試階段,SimpleDB 的域不能大於10GB,整個庫容量則不能超過 1TB。
SimpleDB 不是 RDBMS (relational database management system,中文稱呼為「關聯式資料庫管理系統」),它的運作模式反而更簡單。Amazon SimpleDB 儲存的格式就是 Domain → PKeys, Pkey → Attributes,然後每個 Attribute可有許多Key → Value,像:
Key: 1
Attributes:
Category: Company
Name: Cellopoint
Website: http://www.cellopoint.com
SimpleDB 有簡易的 Select 語法可以使用。
安裝 PHP Library for Amazon SimpleDB:
1. 在 Amazon Web Services (AWS)官方網站下載 PHP Library for Amazon SimpleDB。
2. 將下載完的檔案解壓縮。
3. 從 AWS 申請以及取得 Access Key ID 與 Secret Access Key。
Client 連線測試:
1. cd 到 PHP Library 資料夾
2. vim test_client.php
<?php
$AWS_ACCESS_KEY_ID = …
$AWS_SECRET_ACCESS_KEY = …
require_once('Amazon/SimpleDB/Mock.php');
$service = new Amazon_SimpleDB_Mock();
require_once('Amazon/SimpleDB/Client.php');
$service = new Amazon_SimpleDB_Client($AWS_ACCESS_KEY_ID, $AWS_SECRET_ACCESS_KEY);
?>
3. 執行 test_client.php
新增資料:
1. PHP 程式
$domain= “MyDomain”;
$item = “Product01”;
$attr1 = new Amazon_SimpleDB_Model_ReplaceableAttribute();
$attr1->withName('Category')->withValue('Device');
$attr2 = new Amazon_SimpleDB_Model_ReplaceableAttribute();
$attr2->withName('Name')->withValue('D01');
$attrArr = array($attr1, $attr2);
$request = new Amazon_SimpleDB_Model_PutAttributesRequest();
$request->withDomainName($domain)->withItemName($item)->setAttribute($attrArr);
invokePutAttributes($service, $request);
2. Service 回應
Service Response
==============================
PutAttributesResponse
ResponseMetadata
RequestId
...
BoxUsage
…
取得資料:
1. PHP 程式
$request = new Amazon_SimpleDB_Model_QueryRequest();
$request->setDomainName('MyDomain');
$request->setQueryExpression(“['Category' = 'Device']”);
invokeQuery($service, $request);
2. Service 回應
GetAttributesResponse
GetAttributesResult
Attribute
Name
Category
Value
Device
…
ResponseMetadata
RequestId
…
BoxUsage
..