首先,我正在研究大约300个元素之间的相互作用。每个元素都将与所有其他元素及其自身交互。在少数这种情况下,会发生反应,我会标记这种反应。
由于这基本上是一个包含大约90,000个可能的交互的矩阵,我想用代码来管理这些数据,所以我可以很容易地测试我想要的交互,直到我对它们进行全部测试。由于我显然不会一次性完成所有这些操作,因此数据必须以某种方式存储在磁盘上。
这是我的问题:这对于理想的数据结构设计是什么?我通常使用关系数据库进行数据存储,这个特殊问题似乎与RDB没有很好的联系。如果我不清楚,请告诉我。
答案 0 :(得分:2)
这里的RDBMS没有任何问题:重要的是没有获取数据,但之后报告数据,并且无法从您的描述中了解您的需求。
至于存储300x300的结果:您只需要记录反应,而不是每次测试。那,以及你在测试中得到的矩阵有多远。
请注意,90k记录并不是真正的数据,因此如果您愿意,可以保留所有数据。
编辑:您只需要几张表:
Elements
--------
ItemID
... -- whatever identifying info you need
Crossref
--------
ItemX int
ItemY int
Results -- whatever data you need
对于它的价值:如果元组{ItemX,ItemY}等同于{ItemY,ItemX},那么你没有进行300x300比较,你正在做(300 + 299 + 298 + ... + 1 )= 45150。
答案 1 :(得分:0)
我认为在数据结构方面,您已在帖子中回答了您的问题。我认为,矩阵是最简单的方法。就存储它而言,正如egrunin所说,90k记录不是很多。您可以将其存储在某个位置的DB或平面文件中。只需存储已经过测试的对,即(A1,A2),(A1,A3)......