Amazon dynamodb 基于非主键的AWS DynamoDB查询
我是AWS DynamoDB的新手,想澄清一些事情。是否可以基于非主键属性查询表和筛选器。我的桌子如下所示 贮藏 Id:PrimaryKey 名称:简单字符串 位置:简单字符串 现在我想询问一下这个名字,但我想我也必须给出我所知道的钥匙?除此之外,我可以使用扫描,但随后我将加载所有数据。从: 查询操作根据主键值查找项目。您可以查询具有复合主键(分区键和排序键)的任何表或辅助索引 DynamoDB要求查询始终使用分区键 在您的情况下,您的选择是:Amazon dynamodb 基于非主键的AWS DynamoDB查询,amazon-dynamodb,Amazon Dynamodb,我是AWS DynamoDB的新手,想澄清一些事情。是否可以基于非主键属性查询表和筛选器。我的桌子如下所示 贮藏 Id:PrimaryKey 名称:简单字符串 位置:简单字符串 现在我想询问一下这个名字,但我想我也必须给出我所知道的钥匙?除此之外,我可以使用扫描,但随后我将加载所有数据。从: 查询操作根据主键值查找项目。您可以查询具有复合主键(分区键和排序键)的任何表或辅助索引 DynamoDB要求查询始终使用分区键 在您的情况下,您的选择是: 创建使用名称作为主键的全局辅助索引 如果表相对较
- 创建使用名称作为主键的全局辅助索引
- 如果表相对较小,或者您希望结果集包含表中的大多数记录,请使用“扫描+筛选”
- 设计表,用于查询和分离热数据和冷数据
- 创建用于从非键属性查询的索引(您有两个选项,可以随时定义全局二级索引和需要在表创建时指定的本地二级索引)李>
- 使用索引进行查询对于提高使用供应吞吐量的效率也很重要李>
- 尽管使用索引会消耗表的读取吞吐量,但它也会以某种方式节省从的读取吞吐量,如果您投射了正确数量的属性进行读取,那么它可以在读取中提供巨大的好处。检查以下示例
- 使用DynamoDB,您如何定义索引以优化查询,这一点非常重要,不仅从查询能力方面,而且从吞吐量方面
- KEYS_ONLY–索引中的每个项仅由表分区键和排序键值以及索引键值组成。KEYS_ONLY选项产生最小的二级索引
- INCLUDE–除了KEYS_中描述的属性外,次要索引还将包括您指定的其他非关键属性
- ALL–辅助索引包括源表中的所有属性。由于所有表数据在索引中都是重复的,所以ALL投影会产生最大的辅助索引
KeyConditionExpression
不是放置条件的正确位置。相反,请查看FilterExpression:然而,如果你想要的是一种在键本身上进行通配符匹配的查询方法,那么答案是,不幸的是,DynamoDB不支持这种类型的操作。在这种情况下,你必须重新考虑DynamoDB。也许基于ElasticSearch的解决方案可能更好。我只是不明白这是怎么回事流行。开始工作是一件非常痛苦的事情,更不用说数据查询的设置和维护是荒谬的,并且不允许像SUM或COUNT这样的聚合。老实说,这比它的价值更麻烦,95%的功能可以通过在关系数据库中的表上使用连接来复制。我的意思是什么Database要求您告诉它应该在解析器中返回什么??我已经告诉过您我在查询中想要什么!