Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C mongodb作为循环数据库_C_Ruby_Mongodb - Fatal编程技术网

C mongodb作为循环数据库

C mongodb作为循环数据库,c,ruby,mongodb,C,Ruby,Mongodb,我使用mongo db进行实时分析,我得到了500万美元 每天的数据点,在未来将增加到1000万 至少 我的问题是: 封顶集合是循环的,因此我的数据将在 它达到了上限,我不想失去这些数据 那么,我应该采取什么方法来保留旧数据并避免这些数据被覆盖,但仍然能够使用capped,因为它们速度很快 我在想一个算法,比如: 将当前集合重命名为旧集合并删除当前集合 将old附加到搜索友好型(未加上限)集合 我想你可能走错了方向。与其尝试“破解”封顶集合,为什么不为每个时间段创建一个新集合呢 因此,如果您可

我使用mongo db进行实时分析,我得到了500万美元 每天的数据点,在未来将增加到1000万 至少

我的问题是:

封顶集合是循环的,因此我的数据将在 它达到了上限,我不想失去这些数据

那么,我应该采取什么方法来保留旧数据并避免这些数据被覆盖,但仍然能够使用capped,因为它们速度很快

我在想一个算法,比如:

  • 将当前集合重命名为旧集合并删除当前集合
  • 将old附加到搜索友好型(未加上限)集合

    • 我想你可能走错了方向。与其尝试“破解”封顶集合,为什么不为每个时间段创建一个新集合呢

      因此,如果您可以每天处理5-10万个数据点,那么只需创建一个集合,将日期作为名称的一部分。您将在11月1日获得类似于
      db.data20101001
      ,然后在11月2日获得
      db.data20101002

      当您停止写入旧数据时,数据将从内存中“掉”出来,并将停止使用RAM。根据相同的度量,当天(可能是前一天)的索引可能总是在RAM中,因此插入将继续快速,同时仍保持历史记录

      此解决方案所需的额外步骤:

      • 您必须在代码中编写一些逻辑来插入正确的日期(请注意,新集合是自己创建的,所以这非常简单)
      • 您需要设置一个用于删除旧数据的例程,通常可以追溯到N天以前并执行此操作:
        db.data20100901.drop()
        。您不会回收空间,但Mongo将开始使用“旧”数据文件

      因此,通过选择活动天数,您可以有效地管理收藏的规模。

      我认为您的做法可能是错误的。与其尝试“破解”封顶集合,为什么不为每个时间段创建一个新集合呢

      因此,如果您可以每天处理5-10万个数据点,那么只需创建一个集合,将日期作为名称的一部分。您将在11月1日获得类似于
      db.data20101001
      ,然后在11月2日获得
      db.data20101002

      当您停止写入旧数据时,数据将从内存中“掉”出来,并将停止使用RAM。根据相同的度量,当天(可能是前一天)的索引可能总是在RAM中,因此插入将继续快速,同时仍保持历史记录

      此解决方案所需的额外步骤:

      • 您必须在代码中编写一些逻辑来插入正确的日期(请注意,新集合是自己创建的,所以这非常简单)
      • 您需要设置一个用于删除旧数据的例程,通常可以追溯到N天以前并执行此操作:
        db.data20100901.drop()
        。您不会回收空间,但Mongo将开始使用“旧”数据文件

      因此,您可以通过选择活动天数来有效地管理收藏的规模。

      您好,我不想对封顶收藏指手画脚。我只想有一个集合用作我的“网络传感器”的RRD,另一个集合用于进行搜索、生成统计数据等等。我确实更新了我的算法。这有意义吗?或者你对它仍然有相同的想法吗?:-)好吧,封顶收藏的一个问题是,你无法知道什么会“脱落”。因此,“不丢失数据”的要求毫无意义。您不能使用封顶集合而不丢失数据。你说“封顶收藏很快”,但它们并不比同样大小的常规收藏快。所以你有两个选择:1。就像我在上面做的那样。2.将数据写入两个集合:capped和archive。重命名和删除将不起作用,你将破坏你的数据。我正在测试,我正在使用C和mongo,我周五刚刚完成。Capped比普通收集速度快。我确实在这里添加了测试代码,如果您将集合创建为capped,然后您将看到normal。capped快20%。因此,如果capped比您的情况快得多,那么您必须对capped和归档集合进行“双重写入”。MongoDB没有触发器,所以您必须依赖于编写代码。嗨,我不想在capped集合周围进行黑客攻击。我只想有一个集合用作我的“网络传感器”的RRD,另一个集合用于进行搜索、生成统计数据等等。我确实更新了我的算法。这有意义吗?或者你对它仍然有相同的想法吗?:-)好吧,封顶收藏的一个问题是,你无法知道什么会“脱落”。因此,“不丢失数据”的要求毫无意义。您不能使用封顶集合而不丢失数据。你说“封顶收藏很快”,但它们并不比同样大小的常规收藏快。所以你有两个选择:1。就像我在上面做的那样。2.将数据写入两个集合:capped和archive。重命名和删除将不起作用,你将破坏你的数据。我正在测试,我正在使用C和mongo,我周五刚刚完成。Capped比普通收集速度快。我确实在这里添加了测试代码,如果您将集合创建为capped,然后您将看到normal。capped快20%。因此,如果capped比您的情况快得多,那么您必须对capped和归档集合进行“双重写入”。MongoDB没有触发器,所以您必须依赖于编写的代码。这个问题得到了回答吗?是否需要更多数据?新的自动过期TTL集合是否有助于此用例?这个有人接吗?是否需要更多数据?新的自动过期TTL集合是否有助于此用例?