美好的一天。我正在攻读“实现分布式NoSQL数据库”的硕士学位。在研究了比较NoSQL数据库的强度和弱点的材料与RDBMS相比,我面临着选择要解决的正确问题的步骤。我的任务是展示由Oracle和MongoDB支持的同一应用程序的典型开发,并表明在应用程序发展过程中,Mongo开始超越Oracle。我专注于许多写入和水平缩放。作为我的任务,我选择了一个典型的Twitter应用程序,其中包含复杂的进化域,Java和Spring Data作为我的工具。
我要求有经验的人为受益的评论家和替代任务表明对Mongo的青睐。我明白它高度依赖于架构,索引等,我仍然会问 我的场景中的Mongo可以通过以下方式击败Oracle:
答案 0 :(得分:2)
我的任务是展示由Oracle和MongoDB支持的同一应用程序的典型开发,并表明在应用程序发展过程中,Mongo开始超越Oracle。
我很抱歉非常坦率,但是什么样的学术工作从最终答案开始,你想要对这个问题进行逆向工程?!这不是毫无价值,因为它故意误导。
暂且不说,这里有一些提示:
在关系数据库中使用需要JOIN的内容,但可以将其建模为单个文档。我会想到博客文章。常见技巧包括将作者姓名放入文档中。阅读不需要JOIN,如果作者更改了他的名字(这在大多数系统中很少发生),你只需要一个像他的电子邮件地址这样的独特属性来更新名称:
{
title: "...",
content: "...",
date: "...",
author: { name: "...", email: "..." },
comments: [
{ name: "...", email: "...", text: "...", date: "..." },
...
]
}
保持您的数据足够小,以便它们适合RAM。 MongoDB可以很好地利用它,并且只会偶尔将信息刷新到磁盘(取决于您的配置),出于耐久性原因(符合ACID),RDBMS将始终使用磁盘。
我宁愿比较MySQL和MongoDB。这两个都是开源软件,非常相似。例如索引完全相同 - 只有b树(如果你坚持使用标准的磁盘存储引擎)。
最后的注意事项:我希望你能同意我的观点,即赢得这样一个不平衡的比较很容易,这让它变得毫无意义......
答案 1 :(得分:1)
点击此链接,我认为您将在此链接下找到所需信息