像Google BigTable和Amazon SimpleDB这样的新学派数据存储范例专门用于可扩展性.基本上不允许加入和非正规化是这样的方式.
然而,在this年的话题中,共识似乎是在大桌子上加入不一定要太昂贵,而且非规范化在一定程度上被“高估”
那么为什么这些上述系统不允许连接并强制将所有内容集中在一个表中以实现可扩展性?是否需要将这些数据存储在这些系统中(数TB)?
数据库的一般规则是否仅适用于这些尺度?
是因为这些数据库类型是专门针对存储许多类似对象而量身定制的?
还是我缺少一些更大的图片?
解决方法
分布式数据库不像Orion所暗示的那样天真;在分布式数据集上优化完全关系查询方面已经做了相当多的工作.你可能想看看Teradata,Netezza,Greenplum,Vertica,AsterData等公司在做什么. (甲骨文终于在最近宣布了游戏,微软公司以以前称为DataAllegro的公司名义购买了他们的索赔).
话虽如此,当数据升级到TB时,这些问题变得非常不平凡.如果您不需要严格的事务性和一致性保证,您可以从RDBM获得,通常更容易进行非规范化,而不是进行联接.特别是如果你不需要交叉参考太多.特别是如果您没有进行临时分析,但需要进行任意转换的编程访问.
非规范化被高估了.只是因为在处理100 Tera时会发生什么,并不意味着每个开发人员都不应该使用这个事实,因为由于模式规划和查询优化的困难,每个开发人员都不用去了解数据库,并且无法查询数百万行或两行. .
但是,如果你在100 Tera范围,一切手段…
呵呵,这些技术的另一个原因是嗡嗡声,发现一些事情首先不属于数据库,并且意识到他们不是在特定领域中处理关系,价值对.对于不应该在数据库中的事情,Map-Reduce框架或一些持久的,最终一致的存储系统完全是可能的.
在不太全球的情况下,我强烈建议BerkeleyDB出现这些问题.