Sql 基于动态组计算收件箱

Sql 基于动态组计算收件箱,sql,hadoop,memcached,dynamic-data,infinispan,Sql,Hadoop,Memcached,Dynamic Data,Infinispan,我在为用户计算收件箱时遇到了这个问题: 一方面,我有一堆可能 许多读者都喜欢这张桌子。 每个读卡器都属于一个或多个已定义的用户组。 我有一个表DOC\u ACCES\u BY\u GROUP,DOC\u ID,GROUP\u ID 我需要知道用户是否阅读过文档。因此,我有一个表DOC\u未读,DOC\u ID,USER\u ID,因此如果一个文档在该表中,那么用户还没有读取该文档。 然后每个组可以随时更改参与者,因此我需要实时计算某个用户的收件箱 第一种猜测是:计算用户参与的所有组,然后在所有文

我在为用户计算收件箱时遇到了这个问题:

一方面,我有一堆可能 许多读者都喜欢这张桌子。 每个读卡器都属于一个或多个已定义的用户组。 我有一个表DOC\u ACCES\u BY\u GROUP,DOC\u ID,GROUP\u ID 我需要知道用户是否阅读过文档。因此,我有一个表DOC\u未读,DOC\u ID,USER\u ID,因此如果一个文档在该表中,那么用户还没有读取该文档。 然后每个组可以随时更改参与者,因此我需要实时计算某个用户的收件箱

第一种猜测是:计算用户参与的所有组,然后在所有文档和DOC\u ACCESS\u BY\u GROUP表之间进行联接,以获取该用户的所有文档以及相关数据,然后进行另一个联接以查看该用户是否读取了该文档

问题是,当我的DOCS表大幅增长时,我有许多用户和许多组。。。表演真的很差

我试图抽象出这个问题,实际上它有点复杂。放弃了按用户存储文档权限的可能性。我还认为这不是一个可以通过优化SQL查询来解决的问题,而是应该通过软件来解决的问题。我们还支持许多数据库,如Mysql、Posgre或MSSQL,因此我想它不能链接到特定的供应商解决方案

所以,问题是:是否有人知道任何机制、框架或算法,以不同的方式处理问题,并以最佳和高效的方式解决这个问题


内存缓存?英菲尼斯潘?Hadoop?

您可能希望具体化收件箱,并在用户每次阅读内容、组成员更改等时对其进行更新。具体化的收件箱可以存储在DB表中,也可以存储在像Infinispan/memcached这样的单独系统中