假设上下文是Job Portal网站。
我的要求是这样的:
当求职者看到空缺时,空缺的观点数是 递增
我如何在网络中表示这一点?
据我所知,这取决于请求空缺的控制器,可能是这样的:
class VacancyController {
public function viewVacancy($vacancyId) {
$vacancy = $this->repo->find($vacancyId);
$vacancy->incrementView();
$this->repo->persist($vacancy);
return $vacancy;
}
}
有没有办法在域层中表示这样的规则?
答案 0 :(得分:2)
同步更新视图计数不是一个好主意,尤其是在使用RDBMS数据库时。
update vacancy_view set
count = count + 1
where vacancy_id = $id
如果很多用户在短时间内看到相同的空缺,行可能会被阻止。
我建议改用“插入”。插入可以是同步的或异步的,取决于基准。但是这个实现细节可能隐藏在applicationEvents抽象背后。视图计数可以在请求或缓存时进行总结,在此用例中,通常可以容忍最终的一致性。
class VacancyController {
public function viewVacancy($vacancyId) {
$vacancy = $this->repo->find($vacancyId);
$this->applicationEvents->raise(VacancyViewedEvent($vacancyId))
return $vacancy;
}
}
据说一些nosql数据库(如Cassandra)非常适合视图计数场景,但我还没有相关经验。