分类目录归档:博客

使用模式构建:总结

现在到了我们总结使用模式构建系列的时候,这是一个很好的机会回顾一下这个系列涵盖的模式所解决的问题,并着重复习每个模式所具有的一些好处以及做出的权衡。关于模式设计,最常见的问题是“我正在设计一个要做某某事情的应用程序,如何对数据建模?”正如我们希望你在学习本系列过程中可以体会到的那样,要回答这个问题,[......]

阅读全文

使用模式构建:模式版本控制模式(The Schema Versioning Pattern)

有一种说法,生命中唯一不变的东西就是变化。这同样适用于数据库模式。我们会想要获取我们曾经认为不需要的信息。或者一些新上线的服务需要包含在数据库记录中。不管变更背后的原因是什么,一段时间之后,我们不可避免地需要对应用程序中的底层模式设计进行更改。虽然这经常会在传统的表格数据库系统中带来一些挑战甚至是麻[......]

阅读全文

使用模式构建:文档版本控制模式(The Document Versioning Pattern)

数据库,例如MongoDB,非常擅长查询大量数据并进行频繁更新。然而,在大多数情况下,我们只针对数据的最新状态执行查询。那如果有些场景下我们需要查询数据的以前状态呢?如果我们需要一些文档的版本控制功能怎么办?这就是我们可以使用文档版本控制模式的地方。

这个模式的关键是保持文档的版本历史记录处于可用[......]

阅读全文

常见问题:并发

 MongoDB使用何种类型的锁?

 MongoDB中锁的粒度有多细?

 如何在我的mongod实例上看到锁的状态?

 读取或写入操作是否会让渡(yield)锁?

 一些常见的客户端操作会采取什么样的锁定?

 哪些管理命令锁定数据库?

 MongoDB操作是否[......]

阅读全文

MongoDB分片到副本集改造实践

生产环境分片改造为复制集的解决方案

背景

生产线上使用 MongoDB Sharidng 的场景非常多,但由于业务初期评估不到位或者业务发展不符合预期,为了管理起来更方便,可能需要将 Sharding 改造为 复制集。
 
我就针对生产级业务环境需求提供最小影响服务将分片改造为复制集(含减分片场景)[......]

阅读全文

使用模式构建:预分配模式(The Preallocation Pattern)

MongoDB最明显的优势之一就是文档数据模型。它在模式设计和开发周期中均提供了很大的灵活性。用MongoDB文档可以很容易地处理那些不知道之后会需要哪些字段的场景。然而,有些时候当结构是已知的,并且能够被填充或扩充时,会使设计简单得多。这就是我们可以使用预分配模式的地方。

为避免性能问题,内存通[......]

阅读全文