如何在记录更改时更新不同位置(表)的多个信息?

发布于 2024-08-05 00:50:30 字数 454 浏览 6 评论 0原文

这不是元问题。我仅使用 SO 作为示例。

在 StackoverFlow 中,每个答案、每个评论、每个问题、每个投票都有一个效果,会在某个时间点产生一个徽章。我的意思是在每次操作之后都会测试查询列表。

例如,如果 A 先生赞成 B 先生的回答。所以我们必须检查这个 B 先生的答案是否被点赞了 100 次,所以给 B 先生一个徽章,A 先生是否被点赞了 100 次,所以给他一个徽章。

这意味着我必须为每个操作运行至少 100 个查询/IfElse。

现在,我现实生活中的例子是我有一个应用程序,我可以从考勤机接收在线数据。当用户向机器出示他的卡时。我收到这个并将其存储为记录。现在根据这个记录我有多个计算。即他迟到了吗?他迟到了吗?已经持续三天了。他是右班(白班/夜班)吗?今天是假期。这是加班吗。他早吗……等等,等等。

针对这种需求的最佳策略是什么?

更新: SO 团队可以在这方面指导我们吗?

This is not SO Meta question. I am using SO only as example.

In StackoverFlow each answer, each comment, each question, each vote has a effect which produces a badge at some point of time. I mean after every action a list of queries are tested.

E.g. If Mr.A up votes Mr.B Answer. So we have to check is this Mr.B's answer upvoted 100 times so give the Mr.B a badge , Has Mr.A upvoted 100th time so give him a badge.

It means I have to run at least 100 queries/IfElse for each action.

Now my real life example is I have an application where I receive online data from an attendance machine. When a user shows his card to machine. I receive this and store it as a record. Now based on this record I have multiple calculations.i.e Is he late. Is he late for continues 3 days. Is he in a right shift(Day shift/Night Shift). Is today holiday. Is this a overtime. Is he early.......etc.,etc.,etc.

What is the best strategy for this kind of requirements.

Update:
Can SO team guide us on this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

手心的海 2024-08-12 00:50:30

您使用队列和工作流程。通过这种方式,您可以将更新时刻与实际通知分离,从而允许系统扩展。紧密耦合、基于触发器或类似的解决方案无法扩展,因为每次更新都必须等待所有相关方对通知做出反应。使用工作流的处理引擎的设计允许通过更改数据轻松添加步骤和通知消费者,而无需更改模式。

例如,了解 MSDN 如何使用队列来处理 MSDN 内容的类似问题:构建 MSDN聚合系统

You use queues and workflows. This way you decouple the moment of the update from the actual notifications, allowing the system to scale. Tighly coupled, trigger based or similar solutions cannot scale, as each update has to wait for all the interested parties to react to the notification. The design of processing engine using workflows allows to easily add steps and notifications consumers by changing the data, w/o changing the schema.

For instance see how MSDN uses queues to handle similar problems with MSDN content: Building the MSDN Aggregation System.

似狗非友 2024-08-12 00:50:30

难道您不能只使用“标志”(其他表、其他列等)来指示这些特殊情况何时发生吗?这样,您只需执行一次查找(针对特殊情况),而不是进行大量查找和/或连接。您可以在插入时记录更改(晚第三天等)。

Couldn't you just use "flags" (other tables, other columns, whatever) to indicate when those special cases occur? That way you would only have to do one lookup (per special case) than a ton of lookups and/or joins. You could record the changes (third day late, etc.) on insert.

活雷疯 2024-08-12 00:50:30

此外,检查内容取决于阈值。

例如,某人最近 3 天缺勤吗?仅当该人缺勤 2 天时才需要进行该检查。

我的意思是 - 你不需要每次都检查一切。
另外,有多少信息需要立即更新? SO 不会实时更新内容。

Also, what to check depends on a threshold.

e.g. Is a person absent from last 3 days? That check is required only when the person is absent for 2 days.

I mean - you need not check everything, everytime.
Also, how much of info needs to be updated immediately? SO doesn't update things real time.

鹿! 2024-08-12 00:50:30

可能您必须使用两个数据库并在它们之间进行在线复制 - 第一个用于获取实时数据,仅此而已,第二个您可以使用硬计算(例如每 10 分钟或按请求计算所有延迟)。将此数据库放置在不同的服务器上。

May be you must use two databases with online replication between them - one for getting realtime data and nothing else, in second you may use hard calculations (for example calculate all latings every 10 minutes or by requsts). Locate this databases on different servers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文