2013-12-09 61 views
-1

美好的一天。我正在做“实施分布式NoSQL数据库”的硕士学位。在研究了比较RDBMS与NoSQL数据库的优缺点的材料之后,我面临着选择合适的问题来解决的问题。我的任务是展示由Oracle和MongoDB支持的相同应用程序的典型开发,并显示在应用程序发展过程中,Mongo开始超越Oracle。我专注于许多写入和水平缩放。由于我选择了一个典型的Twitter应用程序,包括具有复杂演化领域的应用程序,Java和Spring Data作为我的工具。MongoDB利润用例


我请求有经验的人为受益评论家和替代任务展示蒙戈的青睐。据我所知,这在很大程度上取决于架构,索引,等等,我还是问 蒙戈在我的情况下可以击败甲骨文:

  1. 许多写入
  2. 水平缩放
  3. 读操作
  4. 模式不断发展的
  5. 拆分\复制
+1

这是作为堆栈溢出书面过于宽泛。在某些情况下,您可能会构建一个偏好特定技术的应用程序。许多商业星展在其许可证中都有条款,特别禁止发布性能基准,您可能会提出这些基准。您也可能想要阅读大型公司等大型公司试用“NoSql”数据库的各种实验,以发现炒作与其竞争对手的性能数据不匹配。 – WiredPrairie

+0

@WiredPraerie,感谢您的评论。如果我理解你是对的,那么你的意思是理论上很难预测,但有些案例专门针对对手的弱点而不是清醒的缘故。 Twitter域/逻辑场景呢? – OneMoreVladimir

+1

很多大型社交网络公司都在使用MySql作为主存储,然后根据需要使用其他技术。 – WiredPrairie

回答

2

我的任务是显示由Oracle和MongoDB支持同一应用程序的典型发展,并显示出该应用程序的进化过程中蒙戈开始超越甲骨文。

对不起,我非常坦率,但是什么样的学术工作从最终答案开始,你想对这个问题进行逆向工程?!这是没有价值的,因为它故意误导。

离开那一边,这里有一些提示:

  • 使用的东西,它需要的JOIN在关系数据库中,但可以模拟成一个单一的文件。博客帖子会出现在我的脑海里。常用技巧包括将作者姓名放入文档中。没有JOIN需要阅读,如果笔者改变了他的名字(这将在大多数系统中很少发生),你只需要像他的电子邮件地址更新处处名称的独特属性:

    { 
        title: "...", 
        content: "...", 
        date: "...", 
        author: { name: "...", email: "..." }, 
        comments: [ 
        { name: "...", email: "...", text: "...", date: "..." }, 
        ... 
        ] 
    } 
    
  • 让您的数据小足够,所以他们适合内存。 MongoDB可以很好地利用它,并且只会偶尔将信息刷新到磁盘(取决于您的配置),RDBMS将始终以磁盘形式出于持久性原因(符合ACID)。

  • 使用“不安全”连接设置。不要等待数据库实际处理请求,而是立即返回(像UDP一样随意丢失)。这在交易系统中是不可能的。如果您在云中进行测试,则可以放大此数据,例如,EBS支持的EC2实例具有非常高的磁盘延迟。
  • 使用像Hibernate这样很重的ORM。尽管我不确定性能增益有多大,但可能要避免使用Morphia(如果你使用Java),并使用普通Java驱动程序的ODM(对象文档映射器),但我确信有一些如果做得好。
  • 在MongoDB中使用复制,并允许从辅助节点读取(从而牺牲一致性,但获得性能)。
  • 使用分片。
  • 除了系统的性能,你可能想看看开发人员的生产力。 MongoDB非常适合开始使用,并且我感觉开始使用起来要快得多。不知道从长远来看,这是否会变成相反 - 严格的模式在长期的IMHO中确实占有一席之地。

我宁愿比较MySQL和MongoDB。这两个都是开源软件,非常相似。例如,索引是完全一样的 - 只有b树(如果你坚持标准的磁盘存储引擎)。

最后说明一点:我希望你能同意我的意见,这是很容易赢得如此disbalanced比较,这使得它非常没有意义的......

+1

你已经毁了我的梦想,是的,你是绝对正确的,成为一个毫无意义的研究。感谢您的回复。 – OneMoreVladimir

1

请点击此链接,我想你会发现在牛逼需要的信息他的链接

NoSql vs Relational database

+1

感谢您的回复,我发现这个链接非常有用。 Colud你仍然提出一个具体的案例? – OneMoreVladimir