分类目录归档:博客

使用模式构建:树形模式(The Tree Pattern)

到目前为止,我们讨论的许多设计模式都强调省去JOIN操作的时间是有好处的。那些会被一起访问的数据也应该存储在一起,即便导致了一些数据重复也是可以的。像扩展引用(Extended Reference)这样的设计模式就是一个很好的例子。但是,如果要联接的数据是分层的呢?例如,你想找出从某个员工到CEO的[......]

阅读全文

使用模式构建:近似值模式(The Approximation Pattern)

假设现在有一个相当规模的城市,大约有3.9万人。人口的确切数字是相当不稳定的,人们会搬入搬出、有婴儿会出生、有人会死亡。我们也许要花上整天的时间来得到每天确切的居民数量。但在大多数情况下,39,000这个数字已经“足够好”了。同样,在许多我们开发的应用程序中,知道“足够好”程度的数字就可以了。如果一[......]

阅读全文

使用模式构建:扩展引用模式(The Extended Reference Pattern)

贯穿整个《使用模式构建》,我希望你已经了解到一件事,即模式是什么样子取决于数据的访问方式。如果我们有许多相似的字段,属性模式可能是一个很好的选择。为了适配一小部分数据的访问会极大地改变我们的应用程序吗?也许异常值模式是值得考虑的。还有一些模式,例如子集模式,会引用额外的集合,并依赖JOIN操作将每个[......]

阅读全文

有坑勿踩(一):MongoDB PSS vs PSA

前言

在技术社区混了这么长时间,因为一些常见的技术问题反复被问到,总是想写写文章把它们讲清楚。无奈很多时候看似基础的技术问题背后都隐藏着很深的原因,想要一次性说清楚太花时间,而平时又没有很多时间能花在上面(主要是懒),所以产生了写一系列文章的想法,讲讲我或我的客户使用MongoDB过程中经常遇到的[......]

阅读全文

使用模式构建:子集模式(The Subset Pattern)

在多年前,第一代PC拥有高达256KB的RAM和两个5.25英寸的软盘驱动器。没有硬盘,因为在当时它们极为昂贵。这些限制导致在处理大量(对那时来说)数据时由于内存不足,必须在物理上交换软盘。如果当时有办法只把我经常使用的数据(如同整体数据的一个子集)放入内存就好了。

现代应用程序也无法幸免于资源消[......]

阅读全文