我是boto3中的新用户,我正在使用DynamoDB.
我经历了DynamoDB api,我找不到任何方法告诉我表是否已经存在.
处理此问题的最佳方法是什么?
我应该尝试创建一个新表并使用try catch包装它吗?
在亚马逊文档 http://aws.amazon.com/dynamodb/以及其他地方已经建议你可以使用Elastic Map Reduce备份你的dynamodb表,
我对这如何工作有一个大致的了解,但我不能找到任何指南或教程,
所以我的问题是如何自动化dynamodb备份(使用EMR)?
到目前为止,我认为我需要使用map函数创建一个"流"作业,该函数从dynamodb读取数据,并将reduce写入S3,我相信这些可以用Python(或java或其他几种语言)编写.
任何评论,澄清,代码示例,更正都表示赞赏.
有没有办法根据不是哈希键的字段获取项目?
例
我的表用户: id (HashKey), name, email
我想检索发送电子邮件为'test@mail.com'的用户
怎么做到这一点?
我用boto尝试这个:
user = users.get_item(email='john.doe@gmail.com')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'The provided key element does not match the schema'
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个必须的Swift类
虽然我继承的Objective-C类继承自NSObject,但我收到以下编译错误:
Type DDBItem must conform to protocol 'NSObjectProtocol'
我继承/实现的Objective-C类和Objective-C协议可以在https://github.com/aws/aws-sdk-ios/blob/master/DynamoDB/AWSDynamoDBObjectMapper.h上找到.
AWSDynamoDBModel有一个很长的继承链,最终从NSObject开始AWSDynamoDBModeling强制执行两个类变量.
我的代码是
class DDBItem : AWSDynamoDBModel, AWSDynamoDBModeling {
// class var dynamoDBTableName : String { get { return "" }}
// class var hashKeyAttribute : String { get { return "" }}
class func dynamoDBTableName() -> String! {
return ""
}
class func hashKeyAttribute() -> String! {
return ""
}
}
Run Code Online (Sandbox Code Playgroud)
Bonus问题:当试图将Objective-C协议强制类变量实现为Swift类变量时,我收到一个编译错误:
Type DDBItem must conform to protocol 'AWSDynamoDBModeling'
将它们作为函数实现似乎是可以接受的.为什么?
我需要将iOS应用程序上的本地数据与DynamoDB表中的数据保持同步.DynamoDB表是大约2K行,只有一个散列键(id),以及以下属性:
id (UUID)lastModifiedAt (时间戳)namelatitudelongitude我目前正在扫描和过滤lastModifiedAt,其中lastModifiedAt大于应用程序的上次刷新日期,但我认为这将变得昂贵.
我能找到的最佳答案是添加一个全局二级索引lastModifiedAt作为范围,但GSI没有明显的哈希键.
当需要使用GSI按范围查询时,最佳做法是什么,但没有明显的散列键?或者,如果完全扫描是唯一的选择,是否有任何最佳做法来降低成本?
我一直在阅读有关亚马逊DynamoDB的各种文章,但我仍然对阅读/写作单位如何使用这些文章感到困惑.例如,使用免费版本,我每秒有5个写入单位和10个读取单位,每个单位代表1kb数据.但这究竟意味着什么呢?
这是否意味着每秒可以执行最多10个读取请求,或者每秒可以请求最多10kb的数据(无论是否有10个或100个请求)?因为这方面对我来说并不清楚.因此,如果我有20个用户同时访问我网站上的页面(导致执行20个查询以检索数据),会发生什么?他们中的10个会立即看到数据,而其他10个会在1秒后看到它吗?或者,如果请求的数据(乘以20)小于10kb,他们是否会立即看到数据?
另外,如果读取单元不够,100个用户同时请求1kb数据,这是否意味着所有请求都需要10秒才能完成?
此外,定价有点令人困惑,因为我不明白是否为预留或消费的单位支付了价格?例如,他们说价格是"写入吞吐量:每10个写入容量单位每小时0.00735美元".这是否意味着即使一天没有提出书面请求,也会支付($ 0.00735*24 = $ 0.176)?
也许这个问题不适用于dynamoDB,因为它不是关系型Db.但是,我正在寻找一个好的对象映射器,它可以在nodejs和aws sdk中用于将现有的模型类映射到dynamoDB表.有没有人有这个问题/问题的经验,或者您是否使用过这样的模块/库?
Amazon DynamoDB不提供内置功能,可根据动态负载自动调整吞吐量.它提供API来增加或减少吞吐量.客户按小时计算配置的读写吞吐量.
有哪些方法可以改变dynamodb的吞吐量并实现成本节约的好处?
有没有办法查询global secondary index使用的dynamodb boto3.我找不到任何在线教程或资源.
我使用 Python 3.7 将数据存储在 DynamoDB 数据库中,当我尝试将项目写入数据库时遇到以下错误消息:
Float types are not supported. Use Decimal types instead.
Run Code Online (Sandbox Code Playgroud)
我的代码:
ddb_table = my_client.Table(table_name)
with ddb_table.batch_writer() as batch:
for item in items:
item_to_put: dict = json.loads(json.dumps(item), parse_float=Decimal)
# Send record to database.
batch.put_item(Item=item_to_put)
Run Code Online (Sandbox Code Playgroud)
“items”是 Python 字典的列表。如果我打印出“item_to_put”字典的类型,它们都是 str 类型。
预先感谢您的任何帮助。