是否可以使用代码而不是NoSQL数据库进行过滤?

时间:2015-10-13 23:38:32

标签: amazon-dynamodb nosql

我们正在使用DynamoDB,并且有一些复杂的查询,使用代码可以很容易地处理,而不是尝试编写复杂的DynamoDB扫描操作。是编写扫描操作还是使用查询操作(查询散列键或二级索引)来获取最少量的数据并进一步过滤和减少调用代码本身?这被认为是不好的做法还是在NoSQL中可以做的事情?

1 个答案:

答案 0 :(得分:1)

不幸的是,这取决于。

如果你的表格比较适中,则表扫描不实用。

如果您有复杂的查询需求,使用DynamoDB解决这个问题的最佳方法是使用全局二级索引(GSI)作为所需字段的投影。您可以使用稀疏索引(在仅存在于对象子集上的字段上创建GSI)和复合属性键(连接两个或多个属性并将其用作新属性来创建GSI)等技术。

然而,要直接解决“使用代码而不是使用NoSQL数据库进行过滤是否可以?”的问题。答案是肯定的,这是一种可接受的方法。在DynamoDB中执行过滤器的原因不是降低查询的“成本”,实际上是相同的,而是减少通过网络进行不必要的数据传输。

理想的解决方案是使用GSI将返回的范围缩小到尽可能接近您想要的范围,但如果有必要,可以通过过滤器消除某些记录。在DynamoDB中或使用您自己的代码。

相关问题