我研究了行星或分子运动等动态模拟。
输出数据很大,并保存为文本数据。
浓淡
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可以很好。 让我知道很好的解决方案。
提前致谢。
答案 0 :(得分:0)
我在某种程度上使用过数据库,并且我已经进行了大量的数值模拟。我的建议是使用一个SQL数据库,如Postgres或MySQL(我建议使用Postgres而不是MySQL,尽管其中任何一个都可以使用)。
存储粒子位置的表可以有一个或多个列,用于索引其他表中的上下文信息。例如:位置表可以具有模拟时间戳(即模拟世界中的时间),x,y和z坐标,以及指向另一个表的粒子的索引,该表具有用于初始位置的列。粒子和其他描述性数据。
使用这种数据库结构,您可以执行查询以查找给定时间内所有粒子的位置,或两次之间的位置,或单个粒子的所有位置。
据我所知,SQL比MongoDB或其他“NoSQL”数据库更适合此类用途。