我正在构建一个应用程序,其数据库系统将至关重要,并且需要可扩展,因为其所有值都将存储在数据中。混合数据库系统:用于数据的NoSQL,用于关系的SQL。最佳实践?
我正在制作一个实时投票系统。
我熟悉SQL和MongoDB,所以它几乎没有决策的因素(虽然我倾向于喜欢MongoDB的结构和JS更加这些时间:))
但是从一切我读过在网络上,我的决定仍然感到不舒服。
我想要做的是两者的结合优势:
- 具有对象(用户,项目,评论等)
- 具有关系SQL表(表用户资料NOSQL文档,用户评论等)
- 复制一个文件NOSQL了投票结果每当有一个投票或以规则的间隔(以获得速度也表决结果的显示器上)
大ADVA我看到的是:
- 查询文档时(例如,用户显示他的个人资料),我把所有的NoSQL的好处(速度,都在一个地方,模式灵活性等)
- 在做统计数据(如数量的选票),我把所有的SQL好处
- 并行化:我可以获取在SQL投票和
- 快速阅读在异步模式下的文件,写slowish(它不会在我的情况不要紧)
- 关系的完整性总是保留
我的问题是:
- 这是否是一个很好的做法?网络似乎很害羞
- 我是否优化花生,即使是高DB负载? (比较文件获取到完整的SQL和像SELECT * FROM表,其中primary_key = XXX查询)
好问题。我一直在使用各种NoSQL技术玩一点同样的想法。一旦我有一点时间真正写出答案,可能会稍后回答。 – 2013-04-24 13:11:11
如果我正确理解这个,你想使用MongoDB就像某种缓存?从你所描述的,我不认为这是一个坏主意,你只需要确保MongoDB在应用层与你的RDBMS保持一致(基本上提高了代码的复杂性) – LMeyer 2013-04-24 16:10:02