Amazon DynamoDB 入門1: 配置(本地)及python示例

goodspeed發表於2017-01-10

什麼是 Amazon DynamoDB

Amazon DynamoDB 是一種完全託管的 NoSQL 資料庫服務,提供快速而可預測的效能,能夠實現無縫擴充套件。使用 DynamoDB,您可以免除操作和擴充套件分散式資料庫的管理工作負擔,因而無需擔心硬體預置、設定和配置、複製、軟體修補或叢集擴充套件等問題。

使用 DynamoDB,您可以建立資料庫表來儲存和檢索任意量級的資料,並提供任意級別的請求流量。您可以擴充套件或縮減您的表的吞吐容量,而不會導致停機或效能下降,還可以使用 AWS 管理控制檯來監控資源使用情況和各種效能指標。

Amazon DynamoDB 特點

DynamoDB 會自動將資料和流量分散到足夠數量的伺服器上,以滿足吞吐量和儲存需求,同時保持始終如一的高效能。所有資料均儲存在固態硬碟 (SSD) 中,並會自動複製到 AWS 區域中的多個可用區中,從而提供內建的高可用性和資料永續性。

DynamoDB 是 NoSQL 資料庫並且無架構,這意味著,與主鍵屬性不同,無需在建立表時定義任何屬性或資料型別。與此相對,關聯式資料庫要求在建立表時定義每個列的名稱和資料型別。

Amazon DynamoDB 使用

AWS 配置

  1. 註冊 Amazon Web Services 並建立訪問金鑰

  2. 建立 AWS 憑證檔案

  3. 開啟DynamoDB 服務

在計算機上執行 DynamoDB

除了 Amazon DynamoDB Web 服務之外,AWS 還提供可本地執行的可下載版本的 DynamoDB。
使用本地版本,在開發應用程式時無需 Internet 連線。

方法1 直接在計算機上安裝

需要安裝java環境

  1. 下載 DynamoDB

  2. 解壓,並將解壓後的目錄複製到某個位置

  3. 開啟命令提示符視窗,開啟 DynamoDBLocal.jar 的目錄,並輸入以下命令:

    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

現在就可以使用了

命令列選項

DynamoDB 接受以下命令引數:

  • -cors value – 啟用適用於 JavaScript 的 CORS 支援(跨源資源共享)。您必須提供特定域的逗號分隔“允許”列表。-cors 的預設設定是星號 (*),這將允許公開訪問。

  • -dbPath value – DynamoDB 將用於寫入其資料庫檔案的目錄。如果不指定此選項,則檔案將寫入當前目錄。請注意,不能同時指定 -dbPath 和 -inMemory。

  • -delayTransientStatuses – 使 DynamoDB 為某些操作引入延遲。DynamoDB 幾乎可以即時執行某些任務,例如,對錶和索引執行建立/更新/刪除操作;但是,實際 DynamoDB 服務需要更多時間才能完成這些任務。設定此引數有助於 DynamoDB 更逼真地模擬 Amazon DynamoDB Web 服務的行為。(目前,此引數僅為處於 CREATING 或 DELETING 狀態的global secondary index引入延遲。)

  • -help – 列印使用摘要和選項。

  • -inMemory – DynamoDB 將在記憶體中執行,而不使用資料庫檔案。停止 DynamoDB 時,不會儲存任何資料。請注意,不能同時指定 -dbPath 和 -inMemory。

  • -optimizeDbBeforeStartup – 在計算機上啟動 DynamoDB 之前優化底層資料庫表。使用此引數時,必須還要指定 -dbPath。

  • -port value – DynamoDB 將用於與應用程式通訊的埠號。如果不指定此選項,則預設埠是 8000

  • -sharedDb – DynamoDB 將使用單個資料庫檔案,而不是針對每個證照和區域使用不同的檔案。如果指定 -sharedDb,那麼所有 DynamoDB 客戶端都將與同一組表互動,無論其區域和證照配置如何。

詳細配置可參考官方文件

方法2 使用docker安裝

需要安裝docker

方法一需要我們手動配置,操作也麻煩,如果喜歡docker,可以直接使用docker快速搭建本地環境

1. 下載映象

docker pull ryanratcliff/dynamodb

2. 啟動

docker run -d -p 8000:8000 ryanratcliff/dynamodb

詳細配置可參考

Python 使用 DynamoDB

我們可以使用適用於 Python (Boto 3) 的 AWS 開發工具包進行開發。

  1. 安裝boto3

pip install boto3
  1. 使用 AWS CLI 配置祕鑰

# 安裝awscli
sudo pip install awscli
# 測試awscli 安裝
aws help
# 輸入命令
aws configure
# 配置 Access Key ID 和 Secret Access Key

AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
# 要更新任何設定,只需再次執行 aws configure 並根據需要輸入新值。

CLI 將使用 aws configure 指定的證照儲存在您主目錄中名為 .aws 的資料夾中名為 credentials 的本地檔案中
可以使用 以下命令列出 .aws 資料夾內容:
Linux, OS X, or Unix

$ ls  ~/.aws

具體配置參考官方文件

  1. 使用以下程式碼測試 DynamoDB 是否可用

import boto3
db3 = boto3.resource(`dynamodb`, endpoint_url=`http://localhost:8000`, aws_secret_access_key=`ticTacToeSampleApp`, aws_access_key_id=`ticTacToeSampleApp`, region_name=`us-west-2`)

db3.meta.client.list_tables()

# output

{`ResponseMetadata`: {`HTTPHeaders`: {`content-length`: `32`,
   `content-type`: `application/x-amz-json-1.0`,
   `server`: `Jetty(8.1.12.v20130726)`,
   `x-amz-crc32`: `2024476575`,
   `x-amzn-requestid`: `5f0a974a-8900-470d-8b28-a4207247c65e`},
  `HTTPStatusCode`: 200,
  `RequestId`: `5f0a974a-8900-470d-8b28-a4207247c65e`,
  `RetryAttempts`: 0},
 u`TableNames`: []}

如果輸出以上內容,則說明DynamoDB 正常。

原文連結:DynamoDB安裝及配置

相關文章