我正处于构建仿真的规划阶段,需要关于如何根据内存和速度考虑来表示数据的想法。对于仿真系统,哪种数据结构最合适?
在每个时间步骤,模拟过程创建10^3到10^4个新数据记录,并查看每个新的或现有记录(其中有10^6到10^8个),然后删除它或修改它。
每条记录都有3-10个简单字段,每个字段可以是一个整数,也可以是几个ASCII字符的字符串。另外,每个记录还有1-5个其他字段,每个字段都是一个包含整数的可变长度列表。典型的记录重量为100-500字节。
修改或删除过程如下工作:对于此记录,计算一个函数,其参数是某些此记录的字段的值,以及另一个记录的这些字段的值。根据结果,该过程准备以某种方式删除或修改其字段。
然后重复每个其他记录。然后移动到下一个记录并重复。当所有记录都被处理完毕后,仿真就可以转移到下一个时间步骤。
在转到下一个时间步骤之前,应用准备的所有删除和修改。
允许的记录越多,仿真效果越好。如果所有记录都在RAM中,则下行是仿真大小,并且可能上行速度。模拟不需要是实时的,但显然我不希望它太慢。
为了表示内存中的每条记录,我知道这些选项:列表或字典(其中嵌套一些列表)或类实例。为了将所有记录储存起来并在另一天继续进行模拟,我逐渐熟悉的选项是:一个csv文件,其中每行都是记录,或者只是将所有记录放入RAM中,然后将它们放入一个文件中(可能使用腌菜),或者使用某种数据库。
我学过Python基础知识,加上一些像发电机的概念,但没有学过数据库,没有尝试过酸洗,显然需要了解更多。如果可能的话,我会避免使用多台计算机,因为我只有1个并发数,因为它看起来太可怕了。
对于如何在内存中表示记录以及如何存储模拟系统,您有何建议?
先从最简单的方法开始,但是留下[只要]抽象以根据需要进行更改。无论如何,“关键值存储”或“持久哈希”存储可能值得研究。 – 2013-03-06 00:43:30