我必须存储实时流式传输'测试' mysql数据库中的数据和训练数据。我需要制作相同的Django模型。现在数据的结构完全相同,即time, value, label
。两个模型之间的唯一区别是一个用于训练数据,另一个用于保存实时测试数据(生产数据)。
哪种方式是在性能方面创建模型的更好方法:
现在,培训将在初始阶段完成,并且与测试数据相比尺寸要小得多。此外,测试数据量将是巨大的(~20-30GB)。
处理数据涉及对收集的数据运行分类算法。在我的特定情况下,必须经常访问每个分类任务的训练数据。
哪个用例会更快?
我是数据库查询优化的新手。因此,建议/指针将不胜感激。如果有其他方法可以做同样的事情(除了上面提到的两个),也欢迎这些建议。
答案 0 :(得分:1)
使用模型继承
class DataModel(model):
time = ...
value = ...
label = ...
class TrainDataModel(DataModel):
pass
class TestDataModel(DataModel):
pass
对于优化,你可以使用索引,就像Lara说访问django文档
答案 1 :(得分:0)
我会介意创建2个不同的模型,因为你会将它们用于不同的东西,即使数据几乎相同。你不知道,也许在将来你会因为一个特定的原因需要新的属性,你将不得不拆分模型......我认为你现在做得更好。
即使您的案例只有一个模型,您也需要查询两次,因为首先必须按标志“trainDataModel”进行过滤,然后对标志“testDataModel”进行过滤,我仍然认为分割它们会更好现在
关于查询优化,您可以在Django文档中查看此主题:
https://docs.djangoproject.com/en/dev/topics/db/optimization/
不要忘记在必要时创建索引,在最后一种情况下,您可以进行压力测试......
祝你好运!