如何在不反复查询拥有数百万条记录的数据库的情况下提供来自特定位置的搜索结果?
我们有一个包含数十亿条记录的数据库,其中包含latitude
和longitude
。它每分钟都在增长。现在,我们需要将这些数据提供给我们的移动应用程序。因此,我们计划在以下类别中展示这一点。
- 显示最新的 10 个插入结果:
为此,我们使用一个表,当每个新记录出现时,我们将其插入到队列表中,如果最后一个值大于 10,则删除它。 - 显示来自用户位置的最新 10 个结果:
为此,我们需要聚合数据并每 5 分钟向本地用户显示一次,我们可以为该位置的所有用户提供相同的数据 5 分钟。
现在,我需要帮助,
- 如何划分区域?例如,如果我以正方形的形式划分世界,那么我可以在接下来的 5 分钟内为每个正方形提供相同的数据。是否有任何算法可以使用地理位置划分相似模型中的区域,或者您认为任何其他模型更适合此?
- 如何以及在何处缓存每个区域的内容以仅在接下来的 5 分钟内提供服务,并且需要使用新数据进行刷新。DB本身是否存在任何缓存算法,或者是否存在任何其他技术?
例如,如果我们将区域 A 和 B 分成 2 个正方形,并且如果来自“A”的用户请求数据,那么我们需要缓存结果并需要提供相同的结果而不向所有请求的用户查询数据库接下来 5 分钟从同一个正方形“A”开始,之后需要刷新它。这样我就可以节省服务器带宽。但是如何做到这一点?
任何服务器缓存?临时表或如何?
请指导我。或者,如果您认为有更好的方法,请告诉我。任何参考也非常受欢迎。提前感谢大家。