支持表或数据库中任意数量列的数据结构设计

数据挖掘 数据集 数据 数据库
2022-02-28 10:12:39

我目前正在研究一种元建模器,以构建免费的 Web 服务,以便人们可以输入数据并在该数据上运行多个模型。

我目前正在努力的任务是:用户需要逐列输入数据,其中包括 n 个 ID、m 个属性和 k 个类,条件是 n、m > 0 和k >= 0。数据是异构的,因此索引可以是数字或文本,属性和类也是如此。为简单起见,我假设数据中不会有空值。

我目前正在考虑:

1)创建一个包含足够多的列(全部为空值)的表,这样我就可以只使用非空列(将从用户输入中获得)。然而,这将限制人们可以输入的数据集的大小。

2)诉诸于在编程语言上创建一个专门的数据结构,在那里完成所有的工作,最后,动态地创建一个表来存储结果数据。

3)使用专门用于此类数据的数据库(可能是基于文档的数据库)。

4)在RDBMS本身上创建一个数据结构(我使用的是PostgreSQL),假设是一个可变大小的数组,这样我就可以直接从用户输入创建表,只使用3个变量数组(一个用于索引,一个用于属性和一个用于类)。但是,我记住属性和索引可能是不同的类型,因此数组必须支持异构数据类型,我不知道这在 RDBMS 或 SQL 上是否可行。

我一直在寻找有关信息的信息,但直到现在都没有结果。任何对软件包、语言库、扩展或论文、论文、技术报告以及相关信息的指导将不胜感激。此外,做类似事情的个人经验可能会很有用。

2个回答

我已经使用mongoDB完成了您所描述的事情——我认为您最好使用某种 NoSQL 方法来利用您的时间,而不是创建一个专门的一次性解决方案。如果您使用的是 Python,那么我在使用PyMongo处理我的代码中的读取和写入方面拥有出色的经验。

我强烈警告您不要采用您的方法#1。这在未来很容易被破坏,并且有数据库旨在处理您的确切问题!

您应该在上面的场景中使用 2) 和 3) 的组合。

对于 2) 使用 JSON,因为它允许您动态构建任意结构,其中包含您需要的任意数量的列,而无需将自己绑定到固定模式。JSON 还具有广泛的语言采用(例如 Python、R、Java、Scala)。

对于 3) 我同意 MongoDB 是最简单的,因为它旨在用于 JSON。