database - Yelp "Open now"是怎么做的?

标签 database data-structures

Yelp 如何存储商家的时间信息以及它如何能够如此快速地查询和筛选出“立即营业”的商家? 难道不需要一些实时处理来解析日期-日期-时间信息并将其与“现在”进行比较吗?

最佳答案

我会使用segment tree 。它是一种用于存储间隔的数据结构,可以有效地查询一个点属于哪些所有间隔。间隔可以只是整数间隔,例如 (2,3)、(5,9)、(10, 15) 等,

在 yelp 案例中,它们是代表企业工作时间的时间间隔。获取毫秒分辨率的当前时间很简单。例如,在 java 中,您将得到 System.currentTimeMillis()。然后,如果您在线段树中存储了间隔,您只需查询当时(现在)哪些间隔(进而哪些企业)正在营业。就时间复杂度而言,您可以在 O(log n + k) 内完成此操作,其中 n 是数据库中的企业总数,k 是当前开放的企业数量。

关于database - Yelp "Open now"是怎么做的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224373/

相关文章:

algorithm - 最大堆和插入

ruby - 如何使用 Ruby DBI 为 KDB 创建数据库处理程序?

MySQL GROUP BY 和 ORDER BY 的错误结果

c - 在使用链表实现Stack的过程中出现Segmentation错误

c - 为什么我的循环仅适用于前几次迭代?

algorithm - 适合插入排序的数据结构是什么?

java - 如何在现有 Realm 数据库中添加新表?

python - Django 批处理/批量更新或创建?

php - 我想从 .txt 和数据库中找到相同的行,然后根据文本文件中的新行更新数据库

Java 数据结构存储平面 XML 数据以供以后访问