问题标签 [amazon-dynamodb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
25015 浏览

amazon-web-services - 使用比较运算符的 DynamoDB 查询

亚马逊 AWS DynamoDB 问题。

是否有任何使用 RangeKeyCondition 和 ComparisonOperators 的示例,例如 CONTAINS、IN、BETWEEN。我正在尝试基于复合 RangeKey(连接和分隔)检索数据。例如书籍表的日期+作者+关键字。假设在这种情况下 HashValue 是“书”(它可以是书、DVD、视频、链接等)。我想选择所有包含关键字“magic”的书籍或作者“John Doe”的所有书籍。示例记录/项目如下所示:

哈希-----范围------------------------------ ----------------------- 属性 1 ... 属性 x

书------2012-1-20~john doe~adventure~magic~travel----description ...一些东西

在尝试使用条件运算符 IN 或 CONTAINS 时,我收到以下错误: object(CFSimpleXML)20 public '__type' => string 'com.amazon.coral.validate#ValidationException' (length=45) public 'message' = > 字符串 '尝试的条件约束不是可索引操作'

找不到使用这些比较运算符的任何示例。任何帮助将不胜感激。

谢谢。

0 投票
1 回答
7033 浏览

python - 如何使用 boto 遍历 DynamoDB 表中的所有项目?

我想查询一个 DynamoDB 表并检索所有项目并使用 boto 遍历它们。如何构建返回表中所有内容的查询或扫描?

0 投票
7 回答
42060 浏览

amazon-web-services - DynamoDB 的 UUID?

在向表中添加新项目时,是否可以让 DynamoDB 自动生成唯一 ID?

我注意到 Java API 提到了@DynamoDBAutoGeneratedKey,所以我假设有一种方法可以让它与 PHP 一起使用。

如果是,应用程序代码是生成这些 ID 还是在 DynamoDB 端完成?

0 投票
7 回答
28047 浏览

amazon-dynamodb - DynamoDB 中的项目大小

我正在尝试计算 dynamoDB 中项目的大小,但我无法理解定义。

我找到的定义:项目大小是其属性名称和值的长度之和(二进制和 UTF-8 长度)。因此,如果您保持属性名称简短,它会有所帮助。

这是否意味着如果我在数据库中放入一个数字,例如:1 它会占用一个 int 的大小?沿着?双?它会占用与 100 或 1000000 相同的空间,还是只占用相应二进制文件的大小?

String 的计算是什么?

有人知道如何计算吗?

谢谢

0 投票
4 回答
5699 浏览

php - DynamoDB for PHP 会话

我们目前正在使用 NAS 存储 PHP 会话文件,以存储一系列自动缩放负载平衡的应用程序服务器。

我们有兴趣用更强大的解决方案替换它,亚马逊的 DynamoDB 看起来很有趣。我在这里看到一个可能的问题,记录在这里:

http://thwartedefforts.org/2006/11/11/race-conditions-with-ajax-and-php-sessions/

我怀疑 DynamoDB 不支持对象锁定。您能想到的任何解决方法?

如果您对用于 PHP 会话的其他 NoSQL 系统有任何经验,也可以随意加入,因为学习内容可能相似。

提前致谢

0 投票
3 回答
2732 浏览

amazon-web-services - 可以在没有本地数据库的情况下使用 Amazon DynamoDB 吗?

由于我还不熟悉云服务,所以我必须问。

如果我要使用 AWS 的 DynamoDB,是否需要在本地安装?还是一切都在服务器端处理?

0 投票
1 回答
1651 浏览

nosql - Amazon DynamoDB - 规模和优势,但它是否合适

我有一个我已经构建的应用程序,如果一切顺利,可以生成大量数据。目前我正在使用 MySQL 数据库来存储信息,并在查询中使用 INNER 和 LEFT 连接来过滤数据。现在我无论如何都要玩 dynamodb,但我想我会问人们是否认为它适合以下数据结构,或者我是否应该使用关系数据库。

例如,假设我有一个以 project_id 作为主键的项目表。现在每个“项目”都可以有许多与之关联的用户。现在,当经理 A 登录时,他可能想查看他的团队成员拥有的所有项目。在 RDS 模型中,其结构可能如下:

现在,理论上我可以为 dynamodb 保留类似的结构,但是,如果 user_id 是一组 user_id,我首先必须为每个 user_id(大量读取)或可能的扫描从 project_to_user 中选择所有 project_id。然后我可以根据这些返回的 id 选择所有项目(可能通过代码删除重复项)。或者,我认为我可以废弃 project_to_user 表并在项目上有一个 user_ids 属性并对该表进行扫描。我知道扫描不是使用 dynamodb 的最佳方式,但这是否可以被第一种方法可能是大量读取的面孔所抵消?

我的应用程序没有很多表,据我了解,这使它成为 amazon dynamodb 的良好候选者,但我应该坚持使用关系模型吗?

我知道这看起来很开放,但我对 DynamoDB 提供的规模化前景感到兴奋,但我想知道它是否最适合这种事情。但是,如果我坚持使用关系模型,我可以看到数据库管理将成为一个令人头疼的问题。我已经重新设计了数据库以适应 dynamodb 模型,但正是这些“加入”点让我犹豫不决,并希望人们可能拥有任何见解。

在习惯 NoSQL 方面,我对 MongoDB 进行了一些尝试,但据我所知,我必须比使用 Amazon DynamoDB(这是亚马逊的专业人士)更多地管理该设置

非常感谢

* 编辑 * user_id 查询的搜索次数可能与 project_id 的搜索次数一样多,如果不是更多的话,但每个项目也需要单独标识

0 投票
5 回答
47479 浏览

ruby-on-rails - 在rails中使用amazon Dynamo DB时如何实现分页

我想将亚马逊 Dynamo DB 与 rails 一起使用。但我还没有找到实现分页的方法。

我将AWS::Record::HashModel用作 ORM。

这个 ORM 支持这样的限制:

但我不知道如何在 Dynamo DB 中实现以下 MySql 查询。

0 投票
1 回答
4263 浏览

nosql - DynamoDB:获取所有项目

我正在尝试以优化的方式从 DynamoDB 表中检索所有键。有数百万把钥匙。

在 Cassandra 中,我可能会为每个键创建一个包含一列的单行,这将消除进行全表扫描。DynamoDBs 64k 每个项目的限制似乎会排除此选项。

有没有一种快速的方法让我找回所有的钥匙?

谢谢。

0 投票
3 回答
24506 浏览

database - 您如何查询 DynamoDB?

我正在研究 Amazon 的 DynamoDB,因为它看起来消除了维护和扩展数据库服务器的所有麻烦。我目前正在使用 MySQL,维护和扩展数据库是一件令人头疼的事情。

我已经浏览了文档,我很难理解如何构建数据以便可以轻松检索它。

我对 NoSQL 和非关系数据库完全陌生。

从 Dynamo 文档看来,您只能在主哈希键上查询表,并且主范围键具有有限数量的比较运算符。

或者您可以运行全表扫描并对其应用过滤器。问题是它一次只能扫描 1Mb,因此您可能必须重复扫描才能找到 X 个结果。

我意识到这些限制使它们能够提供可预测的性能,但似乎很难将数据取出。执行全表扫描似乎效率很低,并且随着表的增长,效率只会随着时间的推移而降低。

例如,假设我有一个 Flickr 克隆。我的图像表可能类似于:

  • 图像 ID(编号、主哈希键)
  • 添加日期(数字,主要范围键)
  • 用户 ID(字符串)
  • 标签(字符串集)
  • ETC

因此,使用查询我将能够列出过去 7 天的所有图像,并很容易将其限制为 X 个结果。

但是,如果我想列出来自特定用户的所有图像,我需要进行全表扫描并按用户名过滤。标签也是如此。

而且因为您一次只能扫描 1Mb,您可能需要进行多次扫描才能找到 X 个图像。我也没有看到一种方法可以轻松地停在 X 个图像上。如果您尝试抓取 30 张图像,您的第一次扫描可能会找到 5 张,而第二次扫描可能会找到 40 张。

我有这个权利吗?它基本上是一种权衡吗?您可以获得真正快速、可预测的数据库性能,几乎无需维护。但权衡是您需要构建更多逻辑来处理结果?

还是我完全不在这儿?