当前位置: 首页 > 知识库问答 >
问题:

项目的数据库设计?

袁康裕
2023-07-13

需求描述

有一个项目,面向学校德育评价,打算留一个发布通知的模块,现在拿不准如何设计数据库

个人方案

我个人有预想两种方案去解决

  • 在mysql中建一个系统通知表
  • 直接存redis中

第一种方案的优点是可以实现数据的持久化,但是对于一些时效性较强的通知【例如系统维护通知等】需要进行额外处理【因为基本上过了时效以后这条记录几乎不会再用到了】

第二种方案的优点是可以比较轻松的处理时效性问题,但是需要考虑数据的持久化【因为需要考虑到服务器重启问题】

想问一下哪种方案更合理一些,需要两种方案结合使用吗

共有1个答案

谭灿
2023-07-13

mysql+redis的方案

把通知和通知对象持久化到MySQL

再把每个用户的通知列表缓存一份到redis,后续有新通知是新增这个列表,客户端每个用户都是通过redis里的缓存拿通知列表和详情

MySQL里的持久化数据是为了方便恢复重建redis缓存

 类似资料:
  • 参考《项目建议书》、《需求说明书》、用户界面原型、以及各种标准和规范对数据库设计如下: (1). 结构设计: * 找实体: 实体是实体-关系模型的基本对象,是现实世界中各种事物的抽象。 凡是可以相互区 开并可以被识 的事、物、概念等对象均可认为是实体。 基本的实体列表如下: 会员 类别 商品 订单 订单详情 收货地址 商品评论 商品图片 友情链接 站内公告 ... * 找属性: 每个实体都有一组特

  • 需求描述 有一个项目,面向学校德育评价,其数据库中有如下表结构: 用户登录表:含一个“个人信息”字段,该字段依赖于下面的用户信息表 用户信息表:根据需求,分为学生表、教师表、运维表 ps:考虑到后期程序的灵活性及学校的发展性,可能后期运维人员可能会陆续增加,所以单独设置了运维表 问题描述 首先因为上面说到的缘故,为了兼顾后期项目的灵活性问题【后面运维人员可能不止一个】,不考虑常用的预分配运维账号的

  • 初始化数据库脚本 脚本目录 ./demos/project/init/sql/ CREATE TABLE IF NOT EXISTS `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, # 用户ID `email` varchar(255) DEFAULT NULL, # 邮箱地址 `password` varchar(2

  • Github : ThinkORM - 从ThinkPHP5.1独立出来的数据库ORM类库 安装 composer require topthink/think-orm 创建数据库配置 修改 Conf/Config.php 文件,在userConf方法中添加如下配置,这里仅列出连接mysql必须的配置项,完整配置项可以参考think-orm类库目录下的config.php文件 private fu

  • 我正在编写一个android聊天应用程序,并试图使用自定义FirebaceRecyclerAdapter在RecyRCleView中使用Firebase数据库实现无休止的滚动。对于第一个消息加载,我使用对数据排序的查询从Firebase数据库获取数据。orderByChild()和。limitToFirst(specificCount)到目前为止还不错。但当用户滚动到最后一个可见项时,我必须获取消

  • 我正在做一个包含子项目的Node.js项目。一个子项目将有一个Mongodb数据库,Mongoose将用于包装和查询DB。但问题是 > mongoose不允许在单个mongoose实例中使用多个数据库,因为模型是在一个连接上构建的。 要使用多个mongoose实例,Node.js不允许多个模块实例,因为它在中有缓存系统。我知道在node.js中禁用模块缓存,但我认为这不是一个好的解决方案,因为它只