教 程 目 录
DynamoDB教程
DynamoDB是一种完全托管的NoSQL数据库服务,旨在提供快速且可预测的性能.它在其设计的本质中使用Dynamo模型,并改进了这些功能.它最初是一种管理假日季节负载所带来的网站可扩展性挑战的方法.
本教程向您介绍创建和部署高度可扩展且以性能为中心的数据库所需的关键DynamoDB概念.
受众
本教程面向希望掌握基本DynamoDB概念的IT专业人士,学生和管理专业人员.
完成本教程后,您将获得DynamoDB的中级专业知识,并轻松地利用您的知识来解决更具挑战性的问题.
先决条件
本教程假定您具备数据库技术,编程,Java或类Java编程语言以及查询语言的一般知识.它还假设您熟悉应用程序中的典型数据库操作.
本文地址:https://itbaoku.cn/tutorial/dynamodb-index.html
相关问答
我需要在最大计数为 10 的 jsp 上显示搜索结果,并且它应该有一个分页来作为分页功能来回遍历. Dynamodb 有一个 lastevaluatedkey,但返回上一页无济于事,尽管我可以通过 lastevaluatedKey 移动到下一个结果集. 任何人都可以帮忙解决这个问题. 我使用 Java SPRING 和 DynamoDB 作为堆栈. 谢谢萨提亚 解决方案 要启用前进/后退,您只需要保持 the first key,它是之前返回页面的第一条记录的hash key + sort key(如果要查询第一页,则为null). 和 the last key 检索页面的hash key + sort key,即之前返回页面最后一条记录的hash key + sort key 然后要向前或向后导航,您需要在查询请求中传入以下参数: Forward: last key as the ExclusiveStartKey, order = ascend Backward: first key as the ExclusiveStartKey, order = descend 我在 2016 年的一个项目中实现了这一点.DynamoDB 现在可能会提供一些类似的便捷 API,但我不确定,因为我已经很长时间没有检查
)
我一直在阅读有关 Amazon 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)? 解决方案 您是对的,因为容量与正在读取/写入的对象的大小紧密相关. 2016 年 2 月更新 AWS 更新了他们计算吞吐量的方式,并且他们的计算对象已从 1 KB 增加到 4 KB
)
DynamoDB 中是否有任何 API 可以更新一批项目?有一个 API 可以批量写入新项目 (BatchWriteItem) 并使用 UpdateItem 更新单个项目,但是是否可以在一次调用中更新多个项目? 解决方案 DynamoDB 中目前没有可用的批量更新项 API. DynamoDB API 操作列表 其他解决方案 我现在知道这是一个老问题,但DynamoDB最近添加了一个支持更新的事务api: Update — 启动 UpdateItem 操作以编辑现有项目的属性或将新项目添加到表中(如果尚不存在).使用此操作可以有条件地或无条件地添加、删除或更新现有项目的属性. https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transaction-apis.html 其他解决方案 BatchWriteItem 无法更新项目.要更新项目,请使用 UpdateItem 操作.BatchWriteItem 操作在一个或多个表中放置或删除多个项目 参考:http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html
)
我正在尝试进行设置,以便CircleCi可以在我的测试中使用DynamoDB本地.我看到了 this 有关如何安装的链接DynamoDB local在Circleci上,但看起来已经过时了,因为它们现在已经使用Circleci 2移至新语法. 如何在Circleci的最新版本上实现这一目标? 解决方案 您可以使用构建步骤'命令'将旧说明调整为新指令.由于我不熟悉该软件,因此您将不得不玩一些工作才能使它起作用: version: 2 jobs: build: docker: - image: some-docker-image-that-has-java-or-even-dynamodb steps: - stuff (usually 'checkout') - run: name: install java command: | apt-get update && apt-get install default-jre default-jdk - run: name: setup container command: |
)
我是 DynamoDB 的新手,想知道我们如何使用 Java 使用 IN 子句查询 DynamoDB 中的表. 我有一个名为 items. 的表,它的架构是 1. Product (Partition Key of type String) 2. ID (Sort Key of type int) 3. Date ( attribute of type String) 我想查询类似 SELECT ID FROM items WHERE Product IN ("apple","orange"). 或 SELECT Product FROM items WHERE ID IN (100,200). 解决方案 由于需要获取不带分区键的产品,所以有两种选择. 1) 在排序键属性Id上创建 GSI(全局二级索引)以使用查询 API 2) 扫描整个表以获取产品 - 效率不高,因为它扫描了整个表 这两个选项都使用 DynamoDB 上可用的 IN 运算符. 使用 ID 扫描的示例代码:- Map attributeValues = new HashMap(); attributeValues.put(":id1", new AttributeValue().withN("100"));
)
嗨,目前我正在加载 Dynamodb 中的每一行,这是非常慢的. 我有大量数据要通过 JAVA API 加载到 DynamoDb. 但这需要大量时间.例如加载 100 万条数据,我需要 2 天才能加载到 Dynamo. DynamoDb 中是否可以进行批量加载.我没有找到有关批量加载或批量加载的任何信息. 感谢这里的任何帮助. 解决方案 我知道这是一个旧帖子,但我们很快就探索了如何优化它,因此开始了一项科学发现:) http://tech.equinox.com/driving-miss-dynamodb/ 总而言之 EMR 上的 Hive 是一个很好的选择(我知道,它是“老派").使用和调整这些参数可以解决问题(有关详细信息,请参阅博客): SET dynamodb.throughput.write.percent = x; SET mapred.reduce.tasks = x; SET hive.exec.reducers.bytes.per.reducer = x; SET tez.grouping.split-count = x;
)