我在我的项目中已经使用了MongoDB,但我即将扩展它,我想看看这是否合理地使用了文档样式集合模型。
基本上我有许多不同类型的电路板,我正在模拟它们的布线。我的数据集并不大,所以我并不担心效率,但我不想让它变得可怕。所以这是我的布局:
我有8种左右的电路板类型,我打算将所有这些放入一个集合中,它们的架构略有不同,如下所示:
{
"id_num" : "int",
"Board Type" : "string",
"Signal Name" : "string",
"FPGA #" : "int",
"FPGA Pin #" : "int",
"FPGA Page" : "int",
"FPGA Address" : "int",
"Net Name" : "string"
}
{
"id_num" : "int",
"Board Type" : "string",
"Signal Name" : "string",
"Feedback Pin" : "int",
"Pin Functions" : "array of strings",
}
{
"id_num" : "int",
"Board Type" : "string",
"Signal Name" : "string",
"FSW Handle" : "string"
}
我总共会有大约5000份文件,所以没什么大不了的,我想知道这是否是构建单个集合的合理方法。我将主要通过Signal Name进行查询,因此我不想将它们分成8个集合,并且必须进行8次查询才能获得具有特定信号名称的所有电线。将它们全部放入一个集合中是否有任何负面影响?
答案 0 :(得分:1)
是的,它是合理的,适合MongoDB“灵活架构”主题。但是,考虑一下当文档数量增长时会发生什么 - 你只有8种板类型,所以这是一个糟糕的索引选择。有多少个信号名称?从本质上讲,要获得索引的好处,您需要在值中有很多“多样性”。如果选择的数量有限,那么MongoDB会转到正确的索引,但随后会逐个文档扫描所有共享相同索引值的文档。希望它有意义。