我一直听说,构建可伸缩网站的方法之一就是不使用joins。既然大多数数据都是关系型的,你是怎么做到的呢?
我有限的研究产生了这些想法:
A)如果你的数据本质上是关系型的,那么确实要使用关系型数据库,即使用合适的工具来完成这项工作。
B)维护数据的非规范化版本。
C)对于可以强制为非关系型的数据,您可以使用NOSQL。以一种不需要连接的方式进行数据架构。
D)如果您必须关联您的数据,那么应用层必须通过逐个获取数据集并手动关联结果来手动实现连接。
E)由于应用程序层的手动连接非常慢,因此尝试脱机执行这些操作(而不是在用户等待的时候)。
F)使用Map-Reduce。
这是正确的/还有其他答案吗?
发布于 2011-02-25 21:41:29
高可伸缩性在这方面有很好的文章。查看reddit one了解他们是如何处理连接的:http://highscalability.com/blog/2010/5/17/7-lessons-learned-while-building-reddit-to-270-million-page.html
然后已经有了一个堆栈溢出问题,答案中有一堆类似信息的链接:Techniques for writing a scalable website
发布于 2011-03-02 22:53:30
要使整个站点更快,请在最高层上缓存对象,即尝试缓存整个页面,如果这样做不起作用,则尝试缓存页面片段,然后使用提供数据的数据对象来填充页面等。
警告:有一句老话是对的:“计算机科学中只有两件难事--缓存失效和命名”,所以要小心你在缓存中放了什么和放了多长时间。
https://stackoverflow.com/questions/5117825
复制相似问题