我已经从 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 作为后端
No, 亚马逊动态数据库 http://aws.amazon.com/dynamodb/不提供像这个开箱即用的复杂 SQL 查询,毕竟,当您想要使用NoSQL http://en.wikipedia.org/wiki/NoSQL数据库 ;)
然而,鉴于 DynamoDB 是专门为需要的用例而开发的快速且可预测的性能以及无缝的可扩展性,这通常意味着各自的大数据集,它提供了与亚马逊弹性MapReduce(亚马逊EMR) http://aws.amazon.com/elasticmapreduce/对于像您这样的用例:
Amazon DynamoDB 还与 Amazon Elastic MapReduce 集成(Amazon
电子病历)。 Amazon EMR 允许企业执行复杂的分析
他们的大型数据集使用托管的即用即付 Hadoop 框架
AWS。 [...]企业还可以使用
Amazon EMR 可访问多个存储中的数据(即 Amazon DynamoDB、
Amazon RDS 和 Amazon S3),对此组合进行复杂的分析
数据集,并将这项工作的结果存储在 Amazon S3 中。
您可能想阅读使用 Amazon EMR 导出、导入、查询和联接 Amazon DynamoDB 中的表了解详细信息 http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.html,总结了使用类似 SQL 的语句 (HiveQL) 查询实时 Amazon DynamoDB 数据,除其他外。尽管HiveQL https://cwiki.apache.org/confluence/display/Hive/HiveQL提供的功能比 DynamoDB 本身多一点,它仍然是一个简单的类似 SQL 的查询语言,并且不包括像您这样的数学表达式。
对于这些你需要深入研究Hadoop 和 MapReduce http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/elasticmapreduceandHadoop.html(由 DynamoDB EMR 集成提供),因为它允许您对数据执行几乎任何您想要的操作(参见例如如何使用自定义 JAR 创建作业流程 http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/CLI_JobFlowUsingCustomJAR.html).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)