簡體   English   中英

將圖表數據存儲在數據庫中

[英]Storing chart data in database

我有一個要用於創建圖表的Web應用程序(Rails)。 現在我要做的是:

  • 上傳包含我的數據的文件以顯示
  • 存儲此文件並將其關聯到模型樣本
  • 當我想查看此樣本時,我從先前上傳的文件中提取數據,並使用ChartJS創建圖表

但是我真的不喜歡這種解決方案,因為每次都會重新創建圖表,並且最重要的是我希望能夠在一段時間內對圖表數據進行一些統計 ,如果我將它們保存在文件中,這很困難...

每個樣本大約有1000行,因此每次創建樣本時要存儲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

我希望我的解釋很清楚...例如,在我的數據庫中,我將有一個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)
.....

謝謝

一般來說,擁有一個ChartData對象是一種很好的解決方法,正如您已經猜到的那樣。 但是,如果Sample has_many :chart_data ,則外鍵在ChartData表中需要為sample_id ,以便ChartData可以具有唯一的ID。

即使這不是經常使用的模型結構,任何中途的體面數據庫都可以毫無問題地存儲數百萬行(在SQLite中,最大值為2 ^ 64)。 您確實需要很多示例才能使它變得有問題,即使如此,也存在一些使之起作用的機制(即分區等)。

但是,也有其他可能性。 例如,如果您使用PostgreSQL,並且只要ChartData的唯一屬性是xy ,則可以考慮使用Point數組作為包含數據的屬性。

就像是

create_table :samples do |t|
  t.point :chart_data, array: true, default: []
end

點是Rails開箱即用支持的唯一幾何類型,從數據庫中檢索后將被視為數組

或者,您甚至可以使用JSON類型在數據庫中存儲哈希或數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM