将折线图保存到SQL数据库中
因此,我一直在研究这个项目,包括保存折线图,捕获折线图并重新绘制以进行比较。事情是我只是不知道一个有效的方法来保存它。我目前正在使用名为Livecharts的库,我正在使用此example。我个人认为要保存每个单独的价值,但觉得这样会太过失控,因为会有很多线条图可以保存。所以我的问题是,有没有人知道更好的方式来保存线图?将折线图保存到SQL数据库中
任何帮助,将不胜感激。
你可以打造专业化序列化类,即持有ChartValues
[Serializable]
public class ChartValues
{
public DateTime time;
public int Value;
}
然后在SQL表与XML列保存XML序列化的数据和这样的还原:
foreach(ChartValue val in SavedChartValues)
{
ChartValues.Add(new MeasureModel
{
DateTime = val.Time,
Value = val.Value
});
}
为什么XML?这并不比将数据存储在单独的列中更有效率,这完全相反 –
这不是更有效率(并且它没有被要求有效率)。但它更清洁,因为单个图表将由单个行表示。而整个只需要触及的数据将在一个列中。这就是为什么我提出这个建议。出于好奇,会不会有XML会比任何其他解决方案更高效的情况? –
OP确实要求效率。 XML在某种程度上并不干净 - 它要复杂得多,比其他任何方式将复杂数据存储在一个单元格中要花费更多的空间。 - BLOB,JSON甚至是SQLCLR类型 –
怎么办你想比较吗?如果您想比较各个值,则需要存储各个值。如果你想比较图像,你需要将它们存储为斑点。无论如何,对于数据库而言,“不可用”意味着千兆字节。 BTW所有版本的SQL Server 2016 SP1都支持列存储索引,压缩和内存表 - 甚至Express和LocalDB –
您需要存储多少个点?你想要进行什么样的比较? SQL Server可以使用窗口并计算运行总和,平均值等,因此您可能需要为此只存储所有数据。如果您将两列都添加到聚集索引中,您将有快速范围查询,立即开启窗口 –
图表可能会运行大约5分钟。所以所有的x和y值。有多少可能。至于比较,我正在比较绘制的图。 – Hypergyzed