简体   繁体   English

数据/数据库设计模式?

[英]Data/Database Design Patterns?

I would like to study more on the subject of complete data design patterns. 我想更多地研究完整的数据设计模式。 Specifically, the different mixes of technologies to store, process, cache, and retrieve data. 具体而言,存储,处理,缓存和检索数据的不同技术组合。 In other words, look at how many components are used in large systems like facebook . 换句话说,看看在facebook等大型系统中使用了多少组件。

To my knowledge, we have RBMS and NoSQL flavors of database categories. 据我所知,我们有数据库类别的RBMSNoSQL风格。 However, many more technologies (outside of permanent data-storage) are critically in the real-world use of the data - such as memcached . 但是,许多其他技术(永久数据存储之外)对数据的实际使用至关重要 - 例如memcached Yet I can't find a lot on the overarching design patterns that should be in use to make the most of all architectures. 然而,我无法找到应该用于充分利用所有架构的总体设计模式。

Does anyone have links to articles about whole-package design patterns that can be accomplished with different mixes of database system components? 有没有人有关于整个包装设计模式的文章的链接,这些模式可以用不同的数据库系统组件混合来完成?

This is not a question for DB specific best practices like database normalization . 这不是数据库规范化数据库特定最佳实践的问题。 Nor is it a question about how best to use a certain technology . 关于如何最好地使用某种技术也不是一个问题。

What design patterns can be used to mix strange technologies correctly to leverage each ones strengths to design complete and efficient systems? 可以使用哪些设计模式正确地混合奇怪的技术,以利用每个优势来设计完整,高效的系统? From caching, to CRUD, to scaling, to data integrity. 从缓存,到CRUD,到扩展,再到数据完整性。

For example, on small shared hosts I can run things like blogs off SQLite since it's almost all reads and no writes. 例如,在小型共享主机上,我可以运行像SQLite这样的博客,因为几乎所有读取都没有写入。 On the other hand, some projects are on low-end VPS and I can use MySQL + APC cache (it is only one server after all) for amazing performance on high read/write. 另一方面,有些项目是低端VPS,我可以使用MySQL + APC缓存(毕竟只有一台服务器),在高读/写时具有惊人的性能。 With more than one VPS memcached is champ! 有超过一个VPS memcached是冠军!

I am also a fan of MongoDB and PostgreSQL. 我也是MongoDB和PostgreSQL的粉丝。 However, MongoDB does not use any form of RAM limitations so you should really have a separate server. 但是,MongoDB不使用任何形式的RAM限制,因此您应该拥有一个单独的服务器。 Nevertheless, storing large objects in MongoDB and leaving the rest of the important data on PostgreSQL is a win-win. 然而,在MongoDB中存储大型对象并将剩余的重要数据留在PostgreSQL上是双赢的。

However, these are all very basic design choices. 但是,这些都是非常基本的设计选择。 Large scale applications are designed with much more abstraction to promote scaling and reduce points of failure. 大规模应用程序设计具有更多抽象,以促进扩展和减少故障点。

My suggestion would be to read about databases in general, with an eye to understanding the different kinds of storage structures that have been used. 我的建议是阅读一般的数据库 ,着眼于理解已经使用的不同类型的存储结构

Once you have this background, it becomes easier to match the current technology ( NoSQL ) with the storage structure (schema-free, horizontal scalable). 一旦掌握了这个背景,就可以更容易地将当前技术( NoSQL )与存储结构(无架构,水平可伸缩)相匹配。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM