我有一个包含 2000 行的 MySQL 表(Table1),每行存储一个 3d 对象的数据:大小、位置、名称等
。第二个表(Table2)包含 Table1 中列出的 3d 对象的属性列表;每个对象在此表中可以有多个条目,也可以没有。在这种特殊情况下,假设我们有 10.000 个条目。这是困难的部分:每个 Table2 条目之间都有一个组合,它给出了一个距离。所以这是第三张表(Table3),它看起来像:
row1: table2_entry1 table2_entry2 result
row2: table2_entry1 table2_entry3 result
....
rowN: table2_entry1 table2_entryN result
rowN+1: table2_entry2 table2_entry1 result
rowN+2: table2_entry2 table2_entry3 result
....
rowN+N: table2_entry2 table2_entryN result
....
....
rowN+N+...+N: table2_entryN table2_entryN-1 result
因此 Table3 将有 10.000.000 个条目。我知道,使用矩阵会将其减半,因为有成对的 (entry1, entry2, same_result) 和 (entry2, entry1, same_result)。
一个 mongoDB 文档看起来像这样(例如 entry1)
{
"_id": ObjectID("..."),
"location": "some_file_location",
...
"media_properties": {
{entry2: result,
entry3: result,
...
entryN: result,
}
}
因此“media_properties”对于存储在表 2 中的 10.000 个属性中的每一个都将具有 9.999 个字典对。
我不相信这是存储大量组合的最佳方法。
我应该使用单独的集合来存储 SQL 表中的所有组合,还是应该将字典嵌入媒体文档中(如上面的示例)?
我想摆脱开销,而不是两次存储相同的信息。在这种情况下,我可以有类似的东西:
entry1 - entry2 - result
entry2 - entry3 - result
等等
代替:
entry1 - entry2 - result
entry2 - entry1 - result
entry2 - entry3 - result
entry3 - entry2 - result
ETC
是否可以将半个矩阵“映射”到 mongoDB 文档中?
有没有更好的解决方案来存储它?
欢迎任何想法!
提前致谢。