2010-10-20 111 views
10

我想了解更多关于完整数据设计模式的主题。具体而言,存储,处理,缓存和检索数据的技术的不同组合。换句话说,看看有多少组件在大型系统中使用,如facebook数据/数据库设计模式?

据我所知,我们有RBMSNoSQL风味的数据库类别。然而,更多的技术(非永久性数据存储)在数据的真实使用中非常关键 - 例如memcached。然而,我无法找到应该用来充分利用所有体系结构的总体设计模式。

有没有人有链接到关于整个包的文章可以用不同的数据库系统组件混合完成的设计模式?

这不是针对数据库特定最佳实践的问题,如database normalization。这也不是关于如何最好地使用certain technology的问题。

什么设计模式可以用来正确混合奇怪的技术,以利用每个优势来设计完整和高效的系统?从缓存到CRUD,扩展到数据完整性。

例如,在小型共享主机上,我可以运行诸如SQLite之类的博客,因为它几乎全部读取并且没有写入。另一方面,有些项目采用低端VPS,我可以使用MySQL + APC缓存(毕竟它只有一台服务器),因为它们在高读/写时具有惊人的性能。拥有多个VPS memcached就是冠军!

我也是MongoDB和PostgreSQL的粉丝。但是,MongoDB不使用任何形式的RAM限制,所以你应该真的有一个单独的服务器。尽管如此,将大型对象存储在MongoDB中并将其他重要数据留在PostgreSQL上是双赢的。

但是,这些都是非常基本的设计选择。大规模应用程序的设计具有更多的抽象,以促进缩放和减少故障点。

回答

1

我的建议是一般阅读databases,着眼于了解已使用的不同种类的storage structures

一旦你有了这样的背景,将当前技术(NoSQL)与存储结构(无模式,水平可伸缩)相匹配变得更加容易。

+0

是的,对软件目标(有这么多!)的基本理解是非常重要的,所以你不要试图强迫它做错了任务。如果项目改变方向并停止使用它,那么这非常危险! – Xeoncross 2010-10-22 20:47:31

+0

呵呵,你赢了。 ;) – Xeoncross 2010-10-29 15:26:52

+0

谢谢。非常感谢你。 – 2010-10-29 17:07:28