我正在创建一个网站来记录浏览器错误,用户可以在其中提交错误,并且用户可以提交这些错误的解决方案/解决方法。我会有类似的东西:
- 错误截图
- 浏览器渲染引擎
- 浏览器
- 每个错误的标签
- 错误类别(css、html、js)
- 每个错误的解决方案,包括代码片段
- 通常的日期/时间、作者、修改日期
因为我刚刚开始这个网站,所以我真的不需要缩小蝙蝠的规模。我只是想知道数据是否更适合 redis 之类的东西,还是我应该坚持使用 rdbms (在我的情况下是 Postgres )?
错误信息围绕产品和用户展开,数据受益于关系结构。(您可以查看许多现有的错误跟踪器作为示例)。如果您确实发现需要分层数据结构(如 redis 倾向于),传统 sql 中有几种不同的树结构实现,而 postgres 提供了一些额外的结构,如数组和 ltree 结构。此外,Postgres 具有相当成熟的存储二进制数据(如屏幕截图)和大型文本数据的方法,这取决于您的 nosql 引擎可能不像您希望的那样稳定。我想学习另一个系统可能会有一些好处(otoh,其他人会争辩说更好地学习你现有的工具更有益),但从技术角度来看,并没有真正的优势。
MySQL 以及 Postgress 开发团队不建议在数据库中存储图像和二进制数据。
相反,您可以将图像存储在某个目录中,文件名可以是数据库中的 ID,也可以是 md5(ID + secret),如果您担心人们可能会“破解”系统并看到他们不能看到的图像。
这样做您将受益于较小的数据库和更快的访问速度 - 您可以直接使用您的网络服务器提供图像。
我是 Redis 的忠实粉丝,但这个项目对我来说更像是 RDBMS。