【发布时间】:2010-10-20 16:46:40
【问题描述】:
我想研究更多关于完整数据设计模式的主题。具体来说,是存储、处理、缓存和检索数据的不同技术组合。换句话说,看看在facebook 这样的大型系统中使用了多少组件。
据我所知,我们有 RBMS 和 NoSQL 风格的数据库类别。然而,更多技术(永久数据存储之外)在数据的实际使用中至关重要 - 例如memcached。然而,我找不到太多关于应该用于充分利用所有架构的总体设计模式。
谁有关于whole-package设计模式的文章的链接,这些设计模式可以通过不同的数据库系统组件组合来实现?
这不是 DB 特定最佳实践(如 database normalization)的问题。也不是如何最好地使用certain technology 的问题。
可以使用哪些设计模式来正确混合奇怪的技术,以利用每种技术的优势来设计完整而高效的系统?从缓存到 CRUD,再到扩展,再到数据完整性。
例如,在小型共享主机上,我可以在 SQLite 上运行博客之类的东西,因为它几乎都是读取而没有写入。另一方面,有些项目在低端 VPS 上,我可以使用 MySQL + APC 缓存(毕竟它只是一个服务器)在高读/写上获得惊人的性能。拥有多个 VPS 的 memcached 是冠军!
我也是 MongoDB 和 PostgreSQL 的粉丝。但是,MongoDB 不使用任何形式的 RAM 限制,因此您应该拥有一个单独的服务器。尽管如此,将大型对象存储在 MongoDB 中并将其余重要数据保留在 PostgreSQL 中是双赢的。
但是,这些都是非常基本的设计选择。大型应用程序的设计具有更多抽象性,以促进扩展并减少故障点。
【问题讨论】: