5

我已经从 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 作为后端

4

1 回答 1

9

不,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 创建作业流)。

于 2012-05-07T07:44:14.130 回答