我有一个用于捕获带宽统计数据的MS SQL数据库。我们有一个原始数据表,并在不同的钻井水平上提高报告速度,我们每小时,每周和每周汇总和汇总数据以分开表。

NOSQL数据库(例如Mongo或Raven)是否会成为此类应用程序的好候选人?

有帮助吗?

解决方案

不同的NOSQL解决方案解决了不同用途的不同问题 - 因此,首先要做的就是查看您的问题并将其分解

  • 你在写作 沉重 为了存放,写速度对您很重要
  • 您想对该数据执行聚合操作,并具有易于查询的结果
  • 从事物的声音来看,阅读速度并不重要,至少在“ Web应用程序必须对数百万人的响应中”
  • 我不知道您是否需要动态查询

让我们以高水平的通用方式看沙发,蒙哥和乌鸦

掠夺

  • 快速写作
  • 快速查询(最终是一致的,预先计算的,通过MAP/RELAD的聚合)
  • 可以进行动态查询,但并不真正适合您的用例,因为您很可能会按日期进行查询等

蒙哥

  • 盲目的快速写入(在我看来,危险地说,因为断电意味着丢失数据;-))
  • 缓慢读取(相对),通过MAP/RELAD聚集,未预先计算
  • 动态查询只是what_you_do,但是如果您需要在此类数据上进行任何形式的性能,则可能必须在列上定义索引

长椅

  • 快速写作
  • 快速读取(预先计算,但仅在阅读时才更新(IIRC)
  • 不可能动态查询,全部通过地图或映射/减少功能预先定义

因此,基本上 - 您是否需要此类数据的动态查询?阅读速度对您来说非常重要吗?如果您需要动态查询,那么您将需要Raven或Mongo(因为这种事情可能不是您要寻找的东西)。

我认为Mongo的唯一用例是伐木,因此您可能在那里有一个Anwer。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top