代码之家  ›  专栏  ›  技术社区  ›  Pete

收集、存储和检索大量数字数据

  •  2
  • Pete  · 技术社区  · 15 年前

    (1) 优化磁盘空间、I/O速度或内存?

    对于仿真来说,总体速度很重要。我们希望数据的I/O(实际上,I)速度比计算引擎快,所以我们不受I/O限制。

    (2) 存储文本或其他内容(二进制数字)?

    (3)给出了一组(1)-(2)的选择,是否有任何突出的语言/库组合来完成这项工作——Java、Python、C++或其他什么?

    我将把这段代码归类为“写而忘”,因此效率高于代码的清晰性/紧凑性。我非常非常喜欢在模拟代码中使用Python(因为sims确实有很多变化,需要弄清楚)。所以好的蟒蛇解决方案的加分。

    编辑:这是一个Linux系统(Ubuntu)

    谢谢

    6 回复  |  直到 15 年前
        1
  •  1
  •   Steve Townsend    15 年前

    Fame 是时间序列存储的常用商业解决方案。

    如果你是认真的,建立自己的将是一个大工作。 HDF 可能是有用的,他们声称它适合于蜱数据处理,并具有C++访问。有Python支持 here .

    从有同样问题的人那里获得有用的现实经验 here ,包括HDF5参考文献。

        2
  •  3
  •   Michael Borgwardt    15 年前
    1. 二进制文件更紧凑(因此速度更快)。鉴于数据的数量,我怀疑人类可读性是否有任何价值。文本格式的唯一优点是,如果它被破坏或丢失了解析代码,就更容易找出并更正。

        3
  •  1
  •   Varriount    15 年前

    事实上,这与我正在做的非常相似,那就是监视玩家在游戏中对世界所做的改变。我目前正在使用一个带有python的sqlite数据库。 在程序开始时,我将磁盘数据库加载到内存中,以便快速编写程序。每一个变更都被列为两个列表。这些列表用于内存数据库和磁盘数据库。大约每x更新一次,内存数据库就更新一次,计数器就会向上推一次。这是重复的,当计数器等于5时,它被重置,磁盘的更改列表被刷新到磁盘数据库中,列表被清除。如果我也设置了对WOL的写更多(预写日志记录),我发现这很好。如果我每100次更新一次内存,并且磁盘计数器设置为每5次更新一次内存,则此方法每秒可支持大约100-300次更新。你应该尽量选择二进制,sense,除非你的数据源有错误,否则是最符合逻辑的

        4
  •  1
  •   CashCow    15 年前

    使用D-Bus格式发送信息可能对您有利。该格式是标准的、二进制的,D-Bus是用多种语言实现的,可用于在同一台计算机上通过网络和进程间发送。

        5
  •  0
  •   Å imon Tóth    15 年前

    如果您只是存储,那么使用系统工具。不要自己写。如果您需要在数据存储之前对其进行实时处理,那么这是完全不同的。

        6
  •  0
  •   Community Mohan Dere    9 年前

    storing integers efficiently given certain conditions 当我们将滴答数据存储为双倍或浮点数或其他形式时,我们浪费了很多位。 价格是量化的!

    所以我概述的方法是: (2) 之后将tick数据存储为两个字节,最左边的两个位用于编码tick类型(00=最后一个,01=出价,11=询问)

    我想这是一个CS会赞成的!