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

War*_*ior 4 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
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*pel 8

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

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

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

您可能需要阅读使用Amazon EMR在Amazon DynamoDB中导出,导入,查询和连接表的详细信息,其中总结了使用类似SQL的语句(HiveQL)查询实时Amazon DynamoDB数据等.虽然HiveQL提供了比DynamoDB本身更多的功能,但它仍然是一种简单的类似SQL的查询语言,并且不包括像你这样的数学表达式.

对于这些,您需要深入了解Hadoop和MapReduce(由DynamoDB EMR集成提供),因为它允许您根据需要对数据执行任何操作(请参阅例如如何使用自定义JAR创建作业流程)).