基于动态组计算收件箱

wnavrhmk  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(358)

我在为用户计算收件箱时遇到以下问题:
一方面,我有一堆可能有许多读者的文档(docs表)。
每个读卡器都属于一个或多个已定义的用户组。
我有一个表doc\u acces\u by\u group with(doc\u id,group\u id)
我需要知道用户是否读过文档。因此,我有一个表doc\u unread with(doc\u id,user\u id),因此如果一个文档在该表中,那么用户还没有读取该文档。
然后每个组的参与者可以随时改变,所以我需要实时计算某个用户的“收件箱”。
第一种猜测是:计算用户所涉及的所有组,然后在所有文档和doc\u access\u by\u group表之间建立联接,以获取该用户的所有文档(关联数据),然后再建立一个联接,以查看该用户是否读取了该文档。
问题是,当我的docs表大幅增长,并且我有许多用户和许多组时。。。表演真的很差。
我想把问题抽象出来,其实有点复杂。放弃了为每个用户存储文档权限的可能性。我还认为这不是一个可以通过优化sql查询来解决的问题,而应该通过软件来解决。我们还支持许多数据库,如mysql、posgre或mssql,因此它不能链接到特定的供应商解决方案(我猜)。
所以,问题是:有没有人知道用什么机制、框架或算法来做不同的事情,并以最佳和高效的方式解决这个问题?
内存缓存?英菲尼斯潘?hadoop?

emeijp43

emeijp431#

您可能希望“物化”收件箱,并在用户每次读取内容、组成员身份更改等时更新收件箱。物化收件箱可以存储在db表中,也可以存储在infinispan/memcached等单独的系统中。

相关问题