使用Spring Data访问MongoDB数据库

本文将引导我们如何使用Spring Data MongoDB构建应用程序,并使用应用程序在MongoDB(基于文档的数据库)中存储数据与检索数据。

需要新建什么

我们要使用Spring Data MongoDB将CustomerPOJO存储在MongoDB数据库中。

我们需要准备什么

 大约15分钟
 自己喜欢的文本编辑器或者IDE
 JDK 1.8 或者更高版本
 Gradle[......]

阅读全文

MongoDB用户和角色解释系列(上)

1、介绍

本文讨论保护MongoDB数据库所需的访问控制。具体来说,我们可以使用这些特性来确保只有经过授权的用户才能访问数据库。每个MongoDB用户应该只能访问他们在组织中所扮演的角色所需要的数据,这由组织中负责管理数据安全的人员来决定。这是管理数据和遵守国际要求所必需的良好特质。

1.1 访问控制

访问控制确保访问数据库的人员得到明确的标识,并且能够访问、更新或删除他们有权访问的数据。这[......]

阅读全文

事务背景介绍(1):MongoDB/WiredTiger中的底层时间戳

MongoDB中的一些最新特性(如多文档ACID事务)需要对底层的WiredTiger存储引擎中进行基础性的增强。

在这个由六篇文章组成的系列中,我们将一起看一下在MongoDB中使得数据库核心可以支持事务的一些变化。这些变化包括:

  • MongoDB/WiredTiger中的底层时间戳
  • MongoDB中的逻辑会话
  • 支持本地快照读
  • 实现全局逻辑时钟
  • 启用安全从节点读取
  • 增加可重试写入特性

我[......]

阅读全文

使用模式构建:总结

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

阅读全文

MongoDB 如何使用内存?为什么内存满了?

最近接到多个MongoDB内存方面的线上case及社区问题咨询,主要集中在:

  • 为什么我的 MongoDB 使用了 XX GB 内存?
  • 一个机器上部署多个 Mongod 实例/进程,WiredTiger cache 应该如何配置?
  • MongoDB 是否应该使用 SWAP 空间来降低内存压力?

MongoDB 内存用在哪?

Mongod 进程启动后,除了跟普通进程一样,加载 binary、依[......]

阅读全文

MongoDB killOp 案例详解

MongoDB 提供 currentOp 命令,列出当前正在执行的查询操作,并提供 killOp 命令,用于中止一些耗时比较长,影响线上业务的操作,作为一种应急手段。

下图是一个 currentOp 命令的输出项之一,用户在获取到 opid 后,调用 killOp() 并没有把这个请求干掉。

killop

为什么 opid 是负数?

opid 在 mongod 里是一个 uint32 类型的整数,当你[......]

阅读全文

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

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

如前所述,在一个表格式数据库中[......]

阅读全文

最常用的MongoDB命令对应的鼠标点击操作

工欲善其事必先利其器,学新技术亦然。
对于MongoDB而言,Studio 3T正是这样一件工具.这是一种MongoDB的图形化界面,用简便的上下文菜单替代了最常用的MongoDB命令,通过拖拽查询生成器、简易多格式导入和导出、以及适当的编辑(只要做一些命名工作)这些有力的特性,节省了程序员大量的时间。
要加速你的查询或者掌握聚合框架会花一些时间(别担心,我们有大量的MongoDB教程)。但是现在[......]

阅读全文