当前位置:  开发笔记 > 编程语言 > 正文

MongoDB 之旅(一) 简介

MongoDB之旅(一)简介Postedon随着Nosql的兴起,一直希望了解这个领域。伴随着新工作的开始,决定好好地学习一下Mongodb,近日无事,故将知识点简单总结一下,以方便日后使用:一、简单介绍首先,MongoDB最初是为一个要求数据库能在多台机器间优雅伸

MongoDB 之旅(一) 简介Posted on 随着Nosql的兴起,一直希望了解这个领域。伴随着新工作的开始,决定好好地学习一下Mongodb,近日无事,故将知识点简单总结一下,以方便日后使用: 一、简单介绍 首先,MongoDB最初是为一个要求数据库能在多台机器间优雅伸

MongoDB 之旅(一) 简介 Posted on

随着Nosql的兴起,一直希望了解这个领域。伴随着新工作的开始,决定好好地学习一下Mongodb,近日无事,故将知识点简单总结一下,香港虚拟主机,以方便日后使用:

一、简单介绍

  首先,MongoDB最初是为一个要求数据库能在多台机器间优雅伸缩的平台而开发的,

  其次,MongoDB是作为Web应用程序的数据存储设计的。

  一点可以区别它和现代数据库系统的是:MongoDB被设计为可水平伸缩的主要数据存储。也为解决关系型数据库的复杂的表关联提供了一种表示丰富、有层级的数据结构。

  二、MongoDB的主要特性

  1)MongoDB的数据模型是面向文档的。

  文档基本上是一组属性名和属性值的集合。属性值的数据类型:字符串、数字、 日期、数组或者其他文档。(丰富的结构和无需定义Schema,降低了数据库的复杂的逻辑设计和提高了应用程序的开发)

  2)即时查询

  意思是,无需预先定义系统接受的查询类型。无疑,关系型数据库是具有个能力,它们会严格遵照指示执行任何完备的SQL查询,但是,并非所有的数据库都支持动态查询。MongoDB尽量保持着这种能力。

  3)二级索引

  B树实现,虚拟主机,在MongoDB里,每个集合最多可以创建64个索引。

  4)复制

  MongoDB中,称为副本集(replica set)的拓扑结构提供了复制功能。通过将数据分布在多台机器上以实现冗余,提供自动故障转移的功能,扩展了数据库的读能力。构成于一个主节点和多个从节点。在此,并不做详细讲解,后面会详细介绍。

  5)速度和持久性

  在数据库系统领域内,写速度和持久性存在一种相反的关系。写速度可以理解为在给定时间内数据库可以处理的插入、更新和删除操作的数量。持久性则是指保持这些写操作结果不变的时间长短。因此,数据库设计者需要在速度和持久性中做出权衡,以平衡两者的关系。

  在MongoDB中,我们可以选择写入语义,决定是否开启Journaling日志记录,通过此方式来控制速度和持久性间的平衡。

  写操作解读:MongoDB默认所有的写操作都是fire-and-forget的,即:写操作通过TCP套接字发送,不要求数据库应答。如果用户需要获得应答,可以使用特殊的安全模式发起写操作,所有的驱动都提供这个安全模式。在MongoDB2.0中,服务器空间,Journaling日志是默认开启的。所有的写操作都会提交到一个只能追加的日志里。这是运行MongoDB最安全的方式。

  6)数据库扩展

  垂直扩展:增加硬件,同时也增加了成本;

  水平扩展:MongoDB的水平扩展非常易于管理,它通过基于范围的分区机制,即自动分片(auto-sharding)来实现这一设计目标,自动分片机制会自动管理各个节点之间的数据分布。

  三、MongoDB的核心服务器和工具

  1)核心服务器

  执行mongod(windows上是mongodb.exe)可以运行核心服务器。mongod服务器进程使用一个自定义的二进制协议从网络套接字上接受命令。mongod进程的所有数据文件默认都存储在/data/db里。它没有内存等参数的配置,减少了开发者的任务,数据文件是通过mmap()系统调用被映射成了系统的虚拟内存。

  2)Javascript Shell

  基于Javascript的一个工具,用于管理数据库和操作数据。

  3)命令行工具

  ·mongodump:用原生的BSON格式将数据库的数据保存下来,优势是热备时非常有用。备份后能方便地用mongorestore恢复。

  ·mongoexport:支持JSON、CSV、TSV数据,通过mongoimport导入,它还能用于大数据集的初始导入。

  ·mongosniff:一个网络嗅探工具,用来观察发送到数据库的操作。基本就是吧网络上传输的BSON转换为易于人们阅读的Shell语句。

  ·mongostat:与iostat类似。持续轮询MongoDB和系统以便提供有帮助的统计信息,包括每秒操作数(插入、删除、更新、查询等)、分配的虚拟内存数量以及服务器的连接数。 

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有