我正在尝试构建一个Web应用程序,用户可以在其中上传文件(特别是MDF文件格式)并以各种图表的形式查看数据。这些文件可以包含任意数量的基于时间的信号(各种数字数据类型),并且用户可以随意命名信号。
我保存数据的想法涉及两个步骤:
这带来了一个问题,我无法为数据表预定义Model
,因为在几乎所有上传的文件中,字段的数量,名称和数据类型都会有所不同。
我知道一些有助于构建运行时动态模型的库,但是它们都已过时,因此关于它们的问题基本上得到零答案。因此,尽管付出了很多努力,但我什至不确定我的方法是否是实现自己想做的最佳方法。
我也遇到了this Postgres特定模型字段,该字段可以采用嵌套数组(我认为它适合于基于2D时间的信号列表)。从理论上讲,我可以解析原始的上传文件并构造一个数组,并将所有数据基本上保存在一个字段中。不知道数据大小的限制,这对于以后的查询也可能是一场噩梦,因为创建图表通常一次只占用几列信号,而总共要接收多达数百个信号。
所以我的问题是:
是否有更好的方法来组织数据存储?又如何?
任何见识都将受到赞赏!
答案 0 :(得分:1)
如果每个用户的字段名称,编号和数据类型将有所不同,则您不需要ORM。您需要的是查询构建器或SQL字符串组合,例如Psycopg。您将以编程方式为用户和上载文件(如果不同)的每种组合创建一个表,并以编程方式插入记录。
使用postgresql可能是一个不错的选择,您也可以在数组上创建GIN索引以加快查询速度。
但是,如果您主要处理时间序列数据,那么使用InfluxDB之类的time-series database,Prometheus会更有意义。