像IBM的store,swivel等网站存储了各种各样的数据,并允许用户可视化它们。他们如何设计他们的表格?例如,如果您打算将data.gov站点中的数据保存到数据库中,并允许用户对其执行操作,那么您将如何着手设计表呢?该结构需要足够通用,以容纳任何类型的数据。例如,data.gov拥有大量的数据,其中一些数据比其他数据更复杂。
发布于 2009-12-02 22:54:21
回答你的问题最简单的方法就是使用字符串-字符串字典。它是NOSQL社区中的一种流行结构,python和lua也构建在它之上。您可以通过添加时间维度来为您的域指定它--例如,hypertable可以做到这一点。
任何数据模型都可以序列化为字符串-字符串字典。我不知道具体细节,但MySql有一个BDB后端。BDB的核心数据结构是string-string。
另外,我也是半个关系狂热分子,所以如果数据很重要,我会对其进行关系建模:
发布于 2009-12-02 23:39:16
关键问题是,重要的是简单的数据检索,还是聚合和搜索数据。
Ie//你用这些数据做什么?
如果它只是数据(即//它只是一些随机的文本/二进制文件),我根本不会为数据库而烦恼。只需将其放入一系列文件中,剥离其编码,并使用grep / sed / awk / LISP在没有任何标签的情况下遍历它。数据只对搜索/检索操作有用,而不是深度趋势分析。
如果是单行或单元素的数据(如Stack Overflow问题或注释),我会考虑使用NOSQL模式(本质上就是查找)或OODB。
如果关系是重要的,我会像图一样建模,有边和节点。节点包含数据,边包含关系。在这一点上,我很想使用基于磁盘的指针手动实现它。
如果重要的是数据集(例如,将数据的特征放在一起考虑),我会仔细考虑关键分组,并以这种方式设计关系数据库表。如果设计需要更改以适应新的信息和集合,那么当我了解到新的需求时,我会操作表结构以更好地对其进行建模。
许多数据可以使用多维格式进行索引,以(时间,空间,标签)作为关键字,(属性集,可聚合特征,数据)作为有效负载。属性映射到维度,并可以使用可聚合的特征(计数、总和、最大/分钟、平均、stdev等)进行“汇总”。
你的问题有点模糊,但没有为什么,这是为什么,这是关键,这是弄清楚设计。
发布于 2009-12-02 22:54:24
我帮不了什么忙,但这篇文章How Friendfeed uses MySQL to store schemaless data可能会有一些用处。
您还可以查看面向文档的数据库,如CouchDB或MongoDB
https://stackoverflow.com/questions/1833373
复制相似问题