我非常精通关系数据库设计的理论和实践.
我知道什么是有效的,什么不可行的,什么是高效的,什么是可维护的(几乎 - 当你开始拥有真实的数据时,总会有调整的地方).
似乎我找不到关于分布式可扩展数据库的大量知识,例如谷歌的Bigtable(用于为谷歌应用程序引擎编写应用程序).有什么作用,什么没有,什么会扩展,为什么不会?
当然,有一些博客文章和文章,但是有关于为大型和类似数据库范例设计数据库的书籍或学术研究论文吗?
...是否有关于为大型和类似数据库范例设计数据库的书籍或学术研究论文?
好的Bigtable本质上是一个数据库本身,所以我认为你的问题更多的是如何建模并在某种程度上设计你的架构在这些Bigtable像数据库.更具体地说,您想知道如何在Google的App Engine上执行此操作.
使用GAE,您将使用Datastore API,它为Bigtable添加了一个重要的抽象层,因此在某种程度上,您不必像使用HBase这样的东西那样担心低级别的细节.SO上有一些帖子(这是我认为是GAE团队成员的Google工程师的一个很好的答案),它将指导您并提供有关如何处理这种新型数据库系统的提示.
有用的信息:
HBase的灵感来自Google的Bigtable(Alternate Link)论文
Hypertable也受到Bigtable论文的启发
Cassandra的数据模型受Bigtable论文的启发
Hadoop的灵感来自谷歌的GFS和MapReduce论文
关于非关系型数据库设计的最新文献我并不知道 - 虽然你可以通过在关系范式'赢'之前挖掘旧论文来获得一些有价值的见解.
当然,Bigtable等数据库的基本见解是,在Web应用程序和其他阅读繁重的应用程序中,考虑到廉价磁盘存储的可用性,最佳方法是优化读取,并在写入上做更多工作.规范化恰恰相反 - 最大限度地减少磁盘上数据的复制,从而使写入更容易,更便宜,但读取更难.几乎所有与关系数据库设计的差异都源于这一事实.
另一个可能引起更多关注的结果是,当你优化读取时,你必须知道你将提前使用什么类型的读取,而规范化结构或多或少是与读取无关的.