首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设计一个数据库来保存数据,这些数据的结构在设计过程中并不总是已知的,并且可能会在以后更改?

如何设计一个数据库来保存数据,这些数据的结构在设计过程中并不总是已知的,并且可能会在以后更改?
EN

Stack Overflow用户
提问于 2009-12-02 22:50:06
回答 6查看 255关注 0票数 4

像IBM的store,swivel等网站存储了各种各样的数据,并允许用户可视化它们。他们如何设计他们的表格?例如,如果您打算将data.gov站点中的数据保存到数据库中,并允许用户对其执行操作,那么您将如何着手设计表呢?该结构需要足够通用,以容纳任何类型的数据。例如,data.gov拥有大量的数据,其中一些数据比其他数据更复杂。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-12-02 22:54:21

回答你的问题最简单的方法就是使用字符串-字符串字典。它是NOSQL社区中的一种流行结构,python和lua也构建在它之上。您可以通过添加时间维度来为您的域指定它--例如,hypertable可以做到这一点。

任何数据模型都可以序列化为字符串-字符串字典。我不知道具体细节,但MySql有一个BDB后端。BDB的核心数据结构是string-string。

另外,我也是半个关系狂热分子,所以如果数据很重要,我会对其进行关系建模:

票数 1
EN

Stack Overflow用户

发布于 2009-12-02 23:39:16

关键问题是,重要的是简单的数据检索,还是聚合和搜索数据。

Ie//你用这些数据做什么?

如果它只是数据(即//它只是一些随机的文本/二进制文件),我根本不会为数据库而烦恼。只需将其放入一系列文件中,剥离其编码,并使用grep / sed / awk / LISP在没有任何标签的情况下遍历它。数据只对搜索/检索操作有用,而不是深度趋势分析。

如果是单行或单元素的数据(如Stack Overflow问题或注释),我会考虑使用NOSQL模式(本质上就是查找)或OODB。

如果关系是重要的,我会像图一样建模,有边和节点。节点包含数据,边包含关系。在这一点上,我很想使用基于磁盘的指针手动实现它。

如果重要的是数据集(例如,将数据的特征放在一起考虑),我会仔细考虑关键分组,并以这种方式设计关系数据库表。如果设计需要更改以适应新的信息和集合,那么当我了解到新的需求时,我会操作表结构以更好地对其进行建模。

许多数据可以使用多维格式进行索引,以(时间,空间,标签)作为关键字,(属性集,可聚合特征,数据)作为有效负载。属性映射到维度,并可以使用可聚合的特征(计数、总和、最大/分钟、平均、stdev等)进行“汇总”。

你的问题有点模糊,但没有为什么,这是为什么,这是关键,这是弄清楚设计。

票数 2
EN

Stack Overflow用户

发布于 2009-12-02 22:54:24

我帮不了什么忙,但这篇文章How Friendfeed uses MySQL to store schemaless data可能会有一些用处。

您还可以查看面向文档的数据库,如CouchDBMongoDB

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1833373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档