【发布时间】:2013-10-31 20:48:00
【问题描述】:
我正在努力为一个相当典型的调度应用程序找到一个好的数据表示。有点搞砸的要求是,每天都有两方,每方都有任意可用性,并且有或多或少在固定时间提供的课程(尽管这里也可能发生例外),而与是否有两方无关在那个时间是否可用。
由于稍后的挑战之一是为已安排的课程找到可用的提供者,我想知道是否有一种快速而优雅的方法是简单地将这些每周可用性模式存储在一个 64 位整数中,并带有一种位掩码。
我的理由是,基本上,每天有 24 小时(
过滤和识别潜在用户可以非常快速和简单地完成,只需将任何潜在约会转换为相同类型的掩码,然后只需执行按位运算即可仅选择可用的候选人,而无需担心进一步的规则等。
我想知道的原因是为什么我没有看到在位级别上发生更多过滤,因为它似乎相当简单,我猜希望实际上最终会比更冗长和明确的逻辑,有什么想法/想法吗?
【问题讨论】:
-
嗯,144 个插槽不是 144 位掩码,1 位表示每个插槽是否可用?在一个 8 位数字中,您只能说,用户在第 100 个插槽中可用 10 分钟。您可以使用 8 位掩码,其中每个位都是“正常”8 小时工作日中的可用小时。但不是在 144 个插槽中。但如果我错了,请纠正我。
-
好点,我觉得错过它很愚蠢;-) 实际上,在这种情况下,即使是 8 位掩码也可能就足够了。总的来说,我对使用这种掩码进行快速过滤非常感兴趣,而且我还没有真正看到在我见过的任何 Web 项目中这样做,所以我想知道原因是什么(或者如果我只是在看错误的项目...)所以最初的问题仍然与我高度相关...
标签: python django database-design architecture bit-manipulation