3

我们有一个 MySQL 数据库表,其中包含我们想要以图表形式呈现的统计数据,时间戳用作 x 轴。我们希望能够在 1 天和 2 年的分辨率之间放大和缩小图表。

在缩小状态下,我们不希望从表中获取所有数据,因为这意味着通过服务器传输的数据量很大,而且图形分辨率无论如何都会用更少的数据来解决问题。

在 MySQL 中,您可以进行仅选择例如每十个值和类似值的查询,这在这种情况下可能是可用的。但是,存储在数据库中的值之间的时间间隔并不一致,两个值之间的间隔可能少至 10 分钟,多至 6 小时,甚至更多。

所以问题是很难为查询计算一个好的步进间隔,如果我们跳过每十分之一的值来获得一些结果,这可能会在其间连续 10 分钟工作,但是对于 6 小时的间隔,我们会扔掉太多,而且图表的分辨率最终会太低而无法舒适。

我的印象是 MySQL 不能有一个取决于时间的步进间隔,因此它会跳过例如在包含行的五分钟附近的行。

一种解决方案可能是将 6 小时设置为图表的最小分辨率要求,因此我们不会丢弃值,除非 6 小时由图表中足够小的距离表示。我担心如果间隔实际上更小,这可能会导致通过系统读取和发送的数据过多。

另一种解决方案是让 Java 代码更智能,从低分辨率向下迭代读取数据集,直到数据足够好。

有什么想法可以让我们在一次读取中获得最佳分辨率,而不会从数据库中读取太大的结果集,同时不会给数据库带来太多负载?我有关于安装中间 NoSQL 组件来存储值的疯狂想法,这可能会以我想要的方式支持时间间隔 - 不确定这是否真的是组织中的一个选项。

4

0 回答 0