Database Yelp是怎么做的;现在开门吗;?

Database Yelp是怎么做的;现在开门吗;?,database,data-structures,Database,Data Structures,Yelp是如何为企业存储时间信息的?它是如何查询和过滤出“现在开门”的企业的? 它不需要一些实时处理吗?解析日期-日期-时间信息并将其与“现在”进行比较。我会使用。它是一种数据结构,用于以一种方式存储时间间隔,从而可以高效地查询某个点所属的所有时间间隔。区间可以是整数区间,如(2,3)、(5,9)、(10,15)等 在yelp案例中,它们是代表企业工作时间的时间间隔。以毫秒分辨率获取当前时间很简单。例如,在java中,您将获得System.currentTimeMillis()。然后,如果您在段

Yelp是如何为企业存储时间信息的?它是如何查询和过滤出“现在开门”的企业的? 它不需要一些实时处理吗?解析日期-日期-时间信息并将其与“现在”进行比较。

我会使用。它是一种数据结构,用于以一种方式存储时间间隔,从而可以高效地查询某个点所属的所有时间间隔。区间可以是整数区间,如(2,3)、(5,9)、(10,15)等


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

将一天划分为30分钟间隔,并在
(Interval,BusinessID)
上创建数据库索引(其中
Interval
的示例值为
08:00-08:30
)。只需存储所有业务的所有开放时间间隔


这是一个简单、保证有效的黑客解决方案,任何人都可以实现和维护。这是一个很好的权衡。你也可以做一些聪明的事情。请参阅另一个答案。

我最终使用它在Django中实现- 它实现了jsonb中的逻辑,需要Postgres 9.4