我目前正在开发一个允许用户进行分析的网络应用程序。可视化数据。例如,其中一个用例是用户将执行主成分分析并存储它。可以有其他类似的分析,如火山图,热图等。
我想将这些分析和可视化存储在后端的数据库中。我面临的挑战是如何设计一个有效地实现这一目标的关系数据库模式。以下是我的一些担忧:
考虑到这些,我想知道是否应该尝试使用像MySQL这样的关系数据库来解决这个问题。或者我应该看看MongoDB?更一般地说,我如何看待这个问题?我尝试在网上寻找一些博客/教程,但找不到有用的东西。
答案 0 :(得分:2)
在考虑技术设计之前,您应该做的第一步,包括关系或非SQL平台,是一种数据模型,它以独立于平台的方式清晰地描述数据之间的结构和关系。我在下面看到了以下有趣的要点:
可视化如何与其可视化的数据对象相关联?当可视化显示对象类型的数据时(让我们说每月的销售数量),这是微不足道的。但如果它涵盖多种对象类型(每月销售数量,产品类别和国家/地区),则必须决定将其链接到哪一个。没有一个正确的解决方案,但它取决于用户的要求'观点:他们从哪个起源找到这种可视化?如果它们总是来自同一个来源(让我们说国家),那么将视觉效果链接到该对象类型就足够了。
从可视化生成的时间点开始,您将如何处理基本数据的插入,删除和更新?如果没有可能与视觉效果相关的操作,那么它很简单:只需存储选择标准(country =" Austria",product category =" Toys")视觉,每个人都会知道它的意义。但是,如果可以更改基本数据,则应实现覆盖历史数据的数据模型,即能够重建原始视觉所基于的数据值。当然,在做出决定之前,您需要澄清要求:如果基本数据发生变化,原始视觉效果仍然有意义,还是需要重新生成以反映变化?
< / LI>使用NOSQL数据库既不简化也不复杂。
无论这些要求和数据建模工作的结果如何,我都会坚持以下原则:
将视觉效果与基本数据分开,即使视觉效果与一组基本数据密切相关。原因:视觉效果只是基本数据的结果,可以在丢失的情况下重新计算。所以要求例如对于基本数据而言,数据备份将比对视觉效果更严格。
不要冗余地存储基本数据,以显示每个单一视觉的基础。每个基本数据记录的时间戳逻辑以及生成的可视化的时间戳将以更少的工作量和存储量实现相同的目的。