克隆Django模型还是在第二个模型中添加差异化字段?

2024-04-25 06:55:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须存储实时流'测试'数据和培训数据在一个mysql数据库。我需要做同样的Django模型。现在数据的结构完全相同,即time, value, label。两个模型之间的唯一区别是一个模型将用于训练数据,另一个模型将保存实时测试数据(生产数据)。你知道吗

在性能方面,哪种方法更适合创建模型:

  1. 创建两个模型TrainDataModel和TestDataModel。你知道吗
  2. 创建单个模型“Data”,并添加一个布尔字段,如“training”,以指示数据是否是测试/训练数据集的一部分。你知道吗

现在,培训将在初始阶段进行,与测试数据相比,规模要小得多。此外,测试数据量将是巨大的(~20-30GB)。你知道吗

处理数据涉及对收集的数据运行分类算法。在我的特殊情况下,每个分类任务都必须频繁地访问训练数据。你知道吗

  • 对于第一种情况,我必须查询两个表。查询训练数据会很快,因为数据量非常小。你知道吗
  • 对于第二种情况,数据库将变得巨大,这将影响查询响应时间,但只能访问单个表。你知道吗

对于我的用例,哪个更快?你知道吗

我是数据库查询优化的新手。因此,建议/建议将不胜感激。如果有任何其他方法可以做到这一点(除上述两种方法外),也欢迎提出这些建议。你知道吗


Tags: 数据django方法模型数据库timevaluemysql
2条回答

使用模型继承

class DataModel(model):
    time = ...
    value = ...
    label = ...

class TrainDataModel(DataModel):
    pass

class TestDataModel(DataModel):
    pass

对于优化,你可以使用索引,就像Lara说的,访问django文档

我会介意创建两个不同的模型,因为您将使用它们处理不同的事情,即使数据几乎相同。你不知道,也许在未来你会因为一个特定的原因需要新的属性,你会不得不拆分模型。。。我认为你最好现在就做。你知道吗

即使您的案例只有一个模型,您也需要查询两次,因为首先您必须按标记“trainDataModel”进行筛选,其次是按标记“testDataModel”进行筛选,我仍然认为现在拆分它们更好。你知道吗

关于查询优化,您可以在Django文档中查看此主题:

https://docs.djangoproject.com/en/dev/topics/db/optimization/

如果有必要,不要忘记创建索引,在最后一种情况下,您可以进行压力测试。。。你知道吗

http://en.wikipedia.org/wiki/Stress_testing_(software)

祝你好运!你知道吗

相关问题 更多 >