在一个简单的场景中,我有许多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': ''})