场景:存在“n”个团队,每个团队都在他们的虚拟“墙”(如 facebook 的墙)上工作。每个团队只能看到他们自己的墙和上面的帖子。帖子可以由帖子的作者或其他团队成员编辑(如果这样配置。假设确实如此,因为它是必须的)。
设计/技术决策:使用 Restlet+ Glassfish/Java + Mysql 的 RESTful Web 应用程序(编辑:使用 Apache DBUtils 进行数据库访问。没有 ORM - 似乎有点矫枉过正)
问题:多个团队登录 T1、T2 和 T3(比如说),每个团队都有一定数量的成员。团队级别的数据访问存在并发性,但跨团队不存在 - 即不同的团队访问不相交的数据集。为了优化对 DB 的频繁读/写,我们正在考虑使用 TeamGateway 来控制对 DB 的访问以处理并发。网络服务器将缓存团队检索到的数据以加快读取速度(并帮助更新墙帖列表)
- Q1:这(每个团队的 TableGateway + 缓存)甚至是必需的吗?如果不是,您建议如何处理?
- Q2:如果是这样,TableGateway(每个团队)是否需要编码为线程安全(同步方法)?假设我们有一个带有静态方法的类/注册表 TableGatewayFinder,该方法返回 TableGateway 以供该特定团队使用(使用哈希图)。
如果每个 T1 - T3 有 6 人登录,那么将只创建 3 个 TableGateway,它是否有助于捕获并发写入(提交前的简单时间戳比较或“冲突标记”附加)并有效管理缓存(我们计划有实体的身份映射 - 需要跟踪 4-5 个不同的实体。组合层次结构中有 4 个实体,另外一个与 4) 中的每一个相关联?
一个单元如何测试网关(基于 TDD 或事后)?
提前致谢!