我正在构建一个应用程序,其数据库系统至关重要,并且需要可扩展,因为它的所有价值都将在数据中。
我正在制作一个现场投票系统。
我对 SQL 和 MongoDB 很满意,所以这几乎不是决定因素(尽管这些时候我更喜欢 MongoDB 结构和 JS :))
但从我在网上阅读的所有内容来看,我仍然对我的决定感到不舒服。
我想做的是结合两者的优势:
- 拥有对象的 noSQL 文档(用户、项目、评论等)
- 拥有用于关系的 SQL 表(表 User-Items、User-Comments 等)
- 每当有投票时或定期在 noSQL 文档中复制投票结果(在投票结果显示上也能提高速度)
我看到的巨大优势是:
- 在查询文档时(例如,用户显示他的个人资料),我拥有 NoSQL 的所有优势(速度、集中在一个位置、架构灵活性等)
- 在进行统计时(例如投票数),我拥有 SQL 的所有优势
- 并行化:我可以在 SQL 中获取投票,在 aSync 模式下获取文档
- 读快,写慢(在我的情况下没关系)
- 始终保持关系完整性
我的问题是:
- 这样做是个好习惯吗?网络似乎对此很害羞
- 即使数据库负载很高,我是否也在优化花生?(将文档获取与完整的 SQL 和查询进行比较,例如 select * from table where primary_key = XXX)