我希望我的 Android 应用程序根据当前 gps 位置显示最近的商店,我有 S3 实例,它为每个商店保存包含两个文件图像和 Html 文件的存储桶,我想在商店页面上显示它们,到目前为止一切都很好。
我的问题是如何根据我的 gps 位置选择最近的商店?我应该为每个存储桶保存另一个值纬度和经度点吗?我是否需要使用 RDS 等其他 aws 服务才能查询和选择要显示的正确存储桶,或者我可以在不使用其他 AWS 服务的情况下通过 S3 进行 sql 查询。谢谢,大卫
首先要做的事情:
您可能正在谈论为每个商店拥有一个存储桶和不同的前缀。每个商店都有一个存储桶,因此在每个存储桶中保留 2 个文件肯定是矫枉过正。
关于最近的商店问题:您无法对 S3 执行 SQL 查询。
您的解决方案实际上取决于您的应用程序的规模。如果您谈论的是 Web(或 Internet)规模的应用程序(甚至更少),您肯定想在 S3 前面添加一些东西。S3 是关于存储的,而不是关于查询或执行计算的。
我的建议将是以下之一,具体取决于您的客户群规模和商店规模:
1- 小规模:假设您只有几个客户和几个(<100 家)商店。您可以在 S3 前面有一个 m1.small 或类似的 EC2 实例,将您的存储列表保留在实例存储(或 S3 上,就此而言)并在您的实例的内存缓存中执行基于位置的查询。您可以使用您选择的服务器技术(Python、Java、node.js)来实现它。
2- 中等规模或更大:几个(或数百万)客户,几个(或数百万)商店:绝对坚持应用程序层和数据库层。您的应用程序层可以包含您喜欢的任何 AWS 技术(多个 EC2 实例 + 一个 ELB;Elastic Beanstalk 等),并且您的数据库层应该是 SQL(我推荐 RDS)或 NoSQL(例如 DynamoDB)。将您的商店建模到数据库层并让您的应用程序层对其执行查询。
您可以通过多种方式解决您的问题,但我的建议是坚持使用上述其中一种作为通用架构。