我有一个我想用来创建图表的网络应用程序(Rails)。现在我所做的是:
但我不太喜欢这个解决方案,因为每次都会重新创建图表,而且最重要的是我希望能够在我的图表数据上随时做一些统计如果我把它们存档,很难......
每个样本大约有1000行,所以它似乎不是常规的#34;每次创建样本时都要存储1000个新行?
今天我有:
Sample
..... id : int
..... attachment : txt file containing the data
可以将其更改为:
Sample
..... id : int
..... attachment : txt file containing the data
..... chart_data_id : associated ChartData
ChartData
..... id : int
..... x : int
..... y : int
我希望我的解释清楚......例如,在我的数据库中,我会有一个示例whiwh has_many ChartData:
Sample(id: 1, attachment: my_file, chart_id: 10)
ChartData(id: 10, x: 0, y: 1)
ChartData(id: 10, x: 3, y: 2)
ChartData(id: 10, x: 5, y: 7)
.....
由于
答案 0 :(得分:1)
一般来说,正如您已经猜到的那样,拥有一个ChartData
对象是一个非常好的方法。但是,如果Sample
has_many :chart_data
,则sample_id
表中的外键必须为ChartData
,以便ChartData
可以拥有唯一ID。
即使这不是经常使用的模型结构,任何中途不错的数据库都可以存储几百万行(在SQLite中最大为2 ^ 64)。你真的需要一个很多的样本才能成为问题,即使这样,也有机制让它工作(即分区等)。
然而,还有其他可能性。例如,如果你使用PostgreSQL,只要ChartData
的唯一属性是x
和y
,你可以考虑使用Point数组作为包含数据的属性
像
这样的东西create_table :samples do |t|
t.point :chart_data, array: true, default: []
end
点数是开箱即用的Rails支持的唯一几何类型,从数据库中检索时是will be treated as arrays。
或者您甚至可以使用JSON type在数据库中存储哈希或数组。