`
风雪涟漪
  • 浏览: 508793 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9070
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18487
社区版块
存档分类
最新评论
阅读更多

简介

MongoDB并不是在实验室中的环境中设计的。我们是根据构建可伸缩,高可用,灵活系统的实际经验来构建MongoDB。我们并不是从头开始的,我们要去发现问题并去解决。因此我设想如果你要取代MySQL以及要改变关系模型,你可以选择MongoDB,并获得很多很好的特性:为了速度而优化的嵌入文档(embedded docs),可管理的,灵活schema数据库的敏捷开发,因为没有join,所以更加容易水平扩展。也有很多关系型数据库的优势:索引,动态查询以及更新等等,并且使用方式并没有改变什么。举个例子,在MongoDB中,设计索引的方法和MySQL或者Oracle基本一致,你仅仅要在内嵌字段索引上做个选择。


 

为什么选择MongoDB?

  • 面向文档的存储
    • 文档(对象)能更好的映射编程语言的数据类型
    • 内嵌文档和数组可以减少join的需求
    • 动态字段更容易schema的扩展
    • 没有join以及事务处理,性能会更好,可扩展性更强
  • 高性能
    • 没有join和嵌入会使读写更为迅速
    • 支持嵌入文档和数组的索引
    • 可选择异步的写入
  • 高可用
    • 支持复制,并且支持主服务器的自动切换
  • 容易扩展
    • 自动sharding(把数据水平扩展到很多服务器上)
      • 数据的读写分布于shards上
      • 没有join和事务可以使分布式查询更为快速
    • 最终一致性的读取数据可以分布于复制的服务器上。
  • 丰富的查询语言

大型MongoDB的部署

 

1.一个或者多个shards,每个shard保存了部分数据(自动管理)。读取和写入自动的被路由到适合的shards。每个shard都可以使用复制集(replica set)-当然复制的数据仅仅是那个shard保存的数据。
一个复制集(replica set)是由一个或者多个服务器组成,每个服务器都保存一些数据的拷贝。在给定的时间范围内,一个是主并且剩下的为候选。如果主挂掉了,候选的会自动变为主。所有的写入和一致性的读都会访问主,并且所有最终一致性的读会分布于其他的候选服务器上。


2. 多个配置服务器(config servers), 每个配置服务器都保存data的基础信息,如哪些数据保存在哪些shard。

3. 一个或者多个路由(routers),对于一个或多个客户端来说,每个都作为一个服务器。客户端的查询/更新都是通过这个路由并且路由通过配置服务器的存储的信息再把它们路由给适合的shard。

4.一个或多个客户端,每一个都是用户的应用(或者部分是)并且通过MongoDB提供相应的语言包发送命令给路由。 

mongod 是服务端程序 (数据或者配置服务器). mongos 是路由程序.



 

Mongo的数据模型

  • 一个Mongo 系统(看如上的部署)包含了一组数据库
  • 一个database包含了一组collection(集合)
  • 一个collelction包含了一组document(文档)
  • 一个document包含了一组字段
  • 一个字段就是一个key-value对
  • key是名字
  • value可以是如下
    • 基本类型,如string,integer,float,timestamp,binary,等。
    • 一个document或者
    • 一数组的value

Mongo 查询语言

从一个db的collection重获取想要的documents,你要做的就是一个查询document的字段要和需要document字段相吻合。如,{name: {first: 'John', last: 'Doe'}}  会匹配上所有名字为John Doe的document。同样的{name.last: 'Doe'}会匹配last name为Doe的所有文档。同样的, {name.last: /^D/}会匹配所有last name以D开头字母的document(/^D/正则表达式)。查询语句也可以匹配嵌入数组(embedded arrays)。如{keywords: 'storage'}会匹配keywords数组包含storage的所有document。同样的,{keywords: {$in: ['storage', 'DBMS']}},会匹配数组包含storage或者DBMS的documents。

如果一个collection有很多的documents并且你想快速的查到所需要的document,那么就创建索引吧。举个例子,索引语法是ensureIndex({name.last: 1}) 或者ensureIndex({keywords: 1})。注意,索引需要更多的硬盘空间并且会降低写入的速度,因此要恰当的使用索引。


 

  • 大小: 9.9 KB
分享到:
评论

相关推荐

    MongoDB介绍

    MongoDB是一种流行的开源、分布式文档型数据库,专为现代应用程序设计,强调数据的灵活性、可扩展性和高性能。作为NoSQL数据库的一员,它摒弃了传统的关系型数据库模式,提供了更简便的方式来存储和处理大规模的数据...

    mongodb介绍及环境搭建

    ### MongoDB介绍及环境搭建 #### MongoDB概述 MongoDB是一种非关系型、无模式的文档型数据库,被广泛应用于现代Web应用程序开发中。相比于传统的关系型数据库,MongoDB提供了更高的性能、可靠性和扩展性。 - **高...

    MongoDB北京2014 - MongoDB介绍 - Kamal Brar

    ### MongoDB介绍及应用价值 #### 一、MongoDB概述 MongoDB是一款面向现代应用程序的敏捷且可扩展的文档型数据库。作为一款通用目的的开源文档数据库,MongoDB因其灵活的数据模型、高性能以及易于扩展的特点而受到...

    MongoDB介绍和副本集群搭建

    ### MongoDB介绍和副本集群搭建 #### 一、MongoDB基础 **1.1 简介** MongoDB 是一个基于分布式文件存储的开源 NoSQL 数据库系统,它使用C++语言编写,支持面向文档的存储方式,使得数据的存储与查询变得简单且...

    MongoDB介绍与使用文档

    ### MongoDB介绍与使用文档 #### mongoDB概述 MongoDB是一个介于关系数据库和非关系数据库之间的产品,它属于NoSQL数据库的一种,具有高度灵活性和强大的查询能力。与传统的关系型数据库相比,MongoDB采用了面向...

    MongoDB介绍、安装、使用

    MongoDB介绍、安装、使用,详细介绍了改数据库的操作,很有用的

    MongoDB介绍及开发指南_20200409224211.pdf

    MongoDB介绍及开发指南。 特性介绍: 1. 基于分布式文件存储的数据库、介于关系数据库和非关系数据库之间的产品,支持对数据建立索引 2. 支持数据格式:bson格式(Binary JSON,类似json,无Date和BinData类型),...

    mongodb介绍

    mongodb关于数据的介绍

    CHRIS对MongoDB介绍

    ### MongoDB与NoSQL运动简介 #### NoSQL运动的定义与特点 在理解MongoDB之前,首先需要了解NoSQL运动的概念及其重要性。NoSQL(Not Only SQL)运动是指一类非关系型数据库系统的统称,这类系统主要针对大规模数据...

    01mongodb介绍 安装 使用.zip

    接下来,我们将介绍MongoDB的安装步骤: 1. **下载安装包**:访问MongoDB官网(https://www.mongodb.com/download-center/community),根据操作系统选择相应的版本。 2. **安装过程**:对于Windows,通常是一个...

    01-MongoDB介绍及安装

    MongoDB是一种分布式文档数据库,是NoSQL数据库的一种,它以其灵活性、高性能和可扩展性而闻名。MongoDB采用JSON格式存储数据,这种格式被称为BSON(Binary JSON),它结合了JSON的易读性和二进制数据的效率。...

    第四十一章:Mongodb介绍与部署应用1

    MongoDB 是一个高性能、开源、无模式的分布式文档型数据库,由 C++ 语言编写,设计目标是为了处理海量数据,并提供高可用性和可扩展性。MongoDB 的主要特点包括其面向集合、文档存储的特性,高效二进制数据存储以及...

    MongoDB简介与实践.pdf

    4. MongoDB介绍: MongoDB是一种面向文档(Document)的NoSQL数据库,支持多平台如Windows、Linux、Mac OS X、FreeBSD等,并且其核心是用C++实现的Solaris。MongoDB提供多语言驱动支持,包括Ruby/Ruby-on-Rails、Java...

    MongoDB学习视频.zip

    2. **安装与配置**:"MongoDB介绍和安装"这部分内容可能涉及如何在不同的操作系统上安装MongoDB,如Windows、Linux和macOS。Windows用户可能需要安装MSU(Microsoft Update)文件,例如`Windows6.1-KB2731284-v3-x64...

    Mongodb视频-燕十八 mongodb视频教程全集21讲+mongodb高级实战开发视频教程

    **第1讲:MongoDB介绍与安装** - MongoDB的历史背景和发展现状。 - MongoDB的特点及其与其他数据库系统的区别。 - 在Windows/Linux/MacOS上安装MongoDB的方法。 - 启动与停止MongoDB服务的基本命令。 **第2讲:...

    09 MongoDb 数据库介绍、安装、使用1

    MongoDB 数据库介绍、安装、使用 MongoDB 数据库是当前最流行的 NoSQL 数据库之一,以其灵活的数据模型、高速的读写性能和强大的扩展性而闻名。下面是 MongoDB 数据库的详细介绍、安装和使用方法。 数据库和文件...

    MongoDb 数据库介绍、安装、使用1

    MongoDB 数据库介绍、安装与使用 MongoDB 是一种流行的开源文档数据库,属于 NoSQL 数据库的一种。NoSQL 数据库与传统的 SQL 关系型数据库相比,具有不同的特性和优势,尤其在处理非结构化或半结构化数据、高并发...

    MongoDB 手册和MongoDB权威指南

    "Mongodb介绍.mht" 和 "MongoDB入门简介.mht" 是针对初学者的快速入门教程,它们通常会概述MongoDB的核心概念,如文档、集合、数据库,以及如何创建、读取、更新和删除数据(CRUD操作)。这些教程还会讲解如何安装...

    mongodb pdf

    - **MongoDB-A Developer's Tour**:开发者视角下的 MongoDB 介绍。 - **Updates**:版本更新日志。 - **Structuring Data for Mongo**:数据结构设计。 - **Design Overview**:设计概述。 - **Document-...

Global site tag (gtag.js) - Google Analytics