在Amazon Dynamo DB中编写复杂查询(数学表达式)

时间:2012-05-07 07:02:31

标签: php amazon-dynamodb

我已经从mysql切换到Dynamo DB。在mysql中,我使用了一个查询来获取更接近特定纬度和经度的所有用户。查询是

SELECT *,SQRT( POW( 69.1 * ( latitude - $latitude) , 2 ) + POW( 69.1 * ( $longitude - longitude ) * COS( latitude / 57.3 ) , 2 ) ) AS distance FROM coupon WHERE is_active='Y' HAVING distance<=$radius

是否可以像在Dynamo DB中一样创建查询。我使用PHP作为我的后端

1 个答案:

答案 0 :(得分:8)

不,Amazon DynamoDB不提供像开箱即用的复杂SQL查询,毕竟,当你想使用NoSQL数据库时必须要做的事情;)

然而,鉴于DynamoDB是专门针对需要快速且可预测的性能和无缝可伸缩性的用例而开发的,这通常意味着大数据集,它提供了与Amazon Elastic MapReduce (Amazon EMR)集成的用例和你一样:

  

Amazon DynamoDB还与Amazon Elastic MapReduce(亚马逊)集成   EMR)。 Amazon EMR允许企业执行复杂的分析   他们的大型数据集使用托管的即用即付Hadoop框架   AWS。 [...]企业也可以使用   Amazon EMR访问多个商店中的数据(即Amazon DynamoDB,   Amazon RDS和Amazon S3)对此进行了复杂的分析   数据集,并将此工作的结果存储在Amazon S3中。

您可能需要阅读Exporting, Importing, Querying, and Joining Tables in Amazon DynamoDB Using Amazon EMR for details,其中总结了使用类似SQL的语句(HiveQL)查询实时Amazon DynamoDB数据等。虽然HiveQL提供的功能比DynamoDB本身多一点,但它仍然是一个简单的类似SQL的查询语言,并且不包括像你这样的数学表达式。

对于这些,您需要深入了解Hadoop and MapReduce(由DynamoDB EMR集成提供),因为它允许您使用您的数据做任何您想要的任何事情(参见例如How to Create a Job Flow Using a Custom JAR )。