我研究过动态模拟,比如行星运动或分子运动。
输出数据非常庞大,并且保存为文本数据。
Exp.
FILE* f = fopen("xyzFile.txt", "w");
for (int i=0;i<max;i++) {
// Ordinary differential equation.
ode(particle);
fprintf(f, "%.8f %.8f %.8f\n", particle.x, particle.y, particle.z);
}
fclose(f);我找不到文件名中的初始值、创建日期等。
我想高效地保存这些数据。
我必须使用任何数据库吗?我想Mongodb可以变得很好。让我知道好的解决方案。
提前谢谢。
发布于 2013-10-24 23:44:04
我在某种程度上使用过数据库,也使用过大量的数值模拟。我的建议是使用诸如Postgres或MySQL之类的SQL数据库(我推荐Postgres胜过MySQL,尽管两者都可以)。
用于存储粒子位置的表可以具有索引其他表中的上下文信息的一个或多个列。例如:位置表可以具有模拟时间戳(即,模拟世界中的时间)、x、y和z坐标,以及指向另一个表的粒子的索引,该另一个表具有用于粒子的初始位置的列以及可能的其他描述性数据。
使用这种数据库结构,您可以执行查询来查找所有粒子在给定时间的位置,或者两个时间之间的位置,或者单个粒子的所有位置。
据我所知,SQL比MongoDB或其他"NoSQL“数据库更适合这种用途。
https://stackoverflow.com/questions/19353080
复制相似问题