反向通用关系和通用关系-数据库设计改进

时间:2019-07-16 17:09:11

标签: python django postgresql

在一个简单的场景中,我有许多measurements表来描述来自特定协议的度量,并且每个度量都链接到各自的父设备,我一直在寻找数据库的优化方案,将所有测量结果合并到一个表中,并从该表中引用相应的设备。

现在,请记住该表在读/写,尤其是在过滤操作中大量使用,我一直在寻找一个更智能的解决方案...我发现了Django Generic Relations and Reverse Relations,但是这种方法根本不说服我,因为像现在一样,通过简单的选择来解决问题,但是使用通用关系,ORM会生成很多内部联接(如果我没记错的话),这是我想避免的一个方面。

那么,有更聪明的主意吗?

我的目标是删除代码中大量的if,这些代码现在用于根据协议类型决定要查询的表,如下所示:

#MODBUS
if smartdevice_device_parent == 'smart_device_modbus':
    ...Select from the right table and serialize the data...

#RS485
elif smartdevice_device_parent == 'smart_device_rs485':
    ...Select from the right table and serialize the data...

#OPC
elif smartdevice_device_parent == 'smart_device_opc':
    ...Select from the right table and serialize the data...

#MQTT
elif smartdevice_device_parent == 'smart_device_mqtt':
    ...Select from the right table and serialize the data...
else:
    return JsonResponse({'success': True, 'message': (_(ERROR)),
                         'data': ''})

0 个答案:

没有答案