<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=5">
    <title>数据库:mongodb与关系型数据库相比的优缺点zz 详解大数据 | 云图网</title>
    <meta name="keywords" content="分布式文件系统，分布式数据库,并行处理（MPP）数据库，数据挖掘,开源大数据平台,数据中台,数据分析,数据开发,数据治理,数据湖,数据采集">
<meta name="description" content="与关系型数据库相比，MongoDB的优点：①弱一致性（最终一致），更能保证用户的访问速度：举例来说，在传统的关系型数据库中，一个COUNT类型的操作会锁定数据集，这样可以保证得到“当前”情况下的精确值。这在某些情况下，例 如通过ATM查看账户信息的时候很重要，但对于Wordnik来说，数据是不断更新和增长的，这种“精确…">
<meta property="og:type" content="article">
<meta property="og:url" content="https://blog.ytso.com/tech/bigdata/9614.html">
<meta property="og:site_name" content="云图网">
<meta property="og:title" content="数据库:mongodb与关系型数据库相比的优缺点zz 详解大数据">
<meta property="og:image" content="http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif">
<meta property="og:description" content="与关系型数据库相比，MongoDB的优点：①弱一致性（最终一致），更能保证用户的访问速度：举例来说，在传统的关系型数据库中，一个COUNT类型的操作会锁定数据集，这样可以保证得到“当前”情况下的精确值。这在某些情况下，例 如通过ATM查看账户信息的时候很重要，但对于Wordnik来说，数据是不断更新和增长的，这种“精确…">
<link rel="canonical" href="https://blog.ytso.com/tech/bigdata/9614.html">
<meta name="applicable-device" content="pc,mobile">
<meta http-equiv="Cache-Control" content="no-transform">
<link rel="shortcut icon" href="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg">
<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />
<style id='wp-img-auto-sizes-contain-inline-css' type='text/css'>
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<link rel='stylesheet' id='stylesheet-css' href='https://blog.ytso.com/wp-content/themes/justnews/css/style.css?ver=6.21.5' type='text/css' media='all' />
<link rel='stylesheet' id='material-icons-css' href='https://blog.ytso.com/wp-content/themes/justnews/themer/assets/css/material-icons.css?ver=6.21.5' type='text/css' media='all' />
<link rel='stylesheet' id='remixicon-css' href='https://cdnjs.cloudflare.com/ajax/libs/remixicon/4.2.0/remixicon.min.css?ver=6.9.4' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://blog.ytso.com/wp-content/themes/justnews/themer/assets/css/font-awesome.css?ver=6.21.5' type='text/css' media='all' />
<style id='wp-block-library-inline-css' type='text/css'>
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
/*wp_block_styles_on_demand_placeholder:69c8cdb58878d*/
/*# sourceURL=wp-block-library-inline-css */
</style>
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */
</style>
<link rel='stylesheet' id='wpcom-member-css' href='https://blog.ytso.com/wp-content/plugins/wpcom-member/css/style.css?ver=1.7.19' type='text/css' media='all' />
<script type="text/javascript" src="https://blog.ytso.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script type="text/javascript" src="https://blog.ytso.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.ytso.com/xmlrpc.php?rsd" />
<meta name='description' content='与关系型数据库相比，MongoDB的优点：①弱一致性（最终一致），更能保证用户的访问速度：举例来说，在传统的关系型数据库中，一个COUNT类型的操作会锁定数据集，这样可以保证得到“当前”情况下的精确值。这在某些情况…' />
<meta name='keywords' content='分布式文件系统，分布式数据库,并行处理（MPP）数据库，数据挖掘,开源大数据平台,数据中台,数据分析,数据开发,数据治理,数据湖,数据采集' />
<style>:root{--theme-color: #08c; --theme-hover: #07c; --logo-height: 32px; --logo-height-mobile: 26px; --menu-item-gap: 28px; --member-login-bg: url('https://blog.ytso.com/loginwall.jpg'); --header-bg-color: #fff; --header-bg-image: none; --theme-border-radius-s: 3px; --theme-border-radius-m: 5px; --theme-border-radius-l: 8px; --theme-border-radius-xl: 12px; --thumb-ratio-default: 480 / 300; --thumb-ratio-post: 480 / 300; --post-video-ratio: 860 / 482;}</style>
<link rel="icon" href="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg" sizes="32x32" />
<link rel="icon" href="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg" sizes="192x192" />
<link rel="apple-touch-icon" href="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg" />
<meta name="msapplication-TileImage" content="https://imgcdn.ytso.com/wp-content/uploads/2024/10/20241015181503433.jpg" />
    <!--[if lte IE 11]><script src="https://blog.ytso.com/wp-content/themes/justnews/js/update.js"></script><![endif]-->
</head>
<body class="wp-singular post-template-default single single-post postid-9614 single-format-standard wp-theme-justnews lang-cn el-boxed header-fixed">
<header class="header header-fluid">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse" aria-label="menu">
                <span class="icon-bar icon-bar-1"></span>
                <span class="icon-bar icon-bar-2"></span>
                <span class="icon-bar icon-bar-3"></span>
            </button>
                        <div class="logo">
                <a href="https://blog.ytso.com/" rel="home">
                    <img src="https://imgcdn.ytso.com/wp-content/uploads/2021/12/20211207181156143.png" alt="云图网">
                </a>
            </div>
        </div>
        <div class="collapse navbar-collapse mobile-style-0">
            <nav class="primary-menu"><ul id="menu-justnews-footer-menu" class="nav navbar-nav wpcom-adv-menu"><li class="menu-item"><a href="https://blog.ytso.com/category/industrynews">业界资讯</a></li>
<li class="menu-item current-post-ancestor active menu-item-style menu-item-style-1 dropdown"><a target="_blank" href="https://blog.ytso.com/category/tech" class="dropdown-toggle">技术专区</a>
<ul class="dropdown-menu menu-item-wrap menu-item-col-5">
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/cloud">云计算</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/ai">人工智能</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/safety">信息安全</a></li>
	<li class="menu-item current-post-ancestor current-post-parent active"><a href="https://blog.ytso.com/category/tech/bigdata">大数据</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/dev">研发管理</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/webdev">大前端</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/opensource">开源</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/aiops">智能运维</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/pnotes">编程笔记</a></li>
	<li class="menu-item"><a href="https://blog.ytso.com/category/tech/wp">WordPress</a></li>
</ul>
</li>
<li class="menu-item"><a href="https://blog.ytso.com/category/enterprise-strategic-planning">企业战略规划</a></li>
<li class="menu-item"><a href="https://blog.ytso.com/category/download">下载专区</a></li>
<li class="menu-item"><a href="https://blog.ytso.com/category/it%e6%b1%9f%e6%b9%96%e5%8f%b2">江湖史</a></li>
<li class="menu-item"><a href="https://blog.ytso.com/category/notes">随笔记录</a></li>
</ul></nav>            <div class="navbar-action">
                <div class="navbar-search-icon j-navbar-search"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-search"></use></svg></i></div><form class="navbar-search" action="https://blog.ytso.com/" method="get" role="search"><div class="navbar-search-inner"><i class="wpcom-icon wi navbar-search-close"><svg aria-hidden="true"><use xlink:href="#wi-close"></use></svg></i><input type="text" name="s" class="navbar-search-input" autocomplete="off" maxlength="100" placeholder="输入关键词搜索..." value=""><button class="navbar-search-btn" type="submit" aria-label="搜索"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-search"></use></svg></i></button></div></form>                    <div id="j-user-wrap">
                        <a class="login" href="https://blog.ytso.com/login">登录</a>
                        <a class="login register" href="https://blog.ytso.com/register">注册</a>
                    </div>
                                            <a class="wpcom-btn btn-primary btn-xs publish" href="https://blog.ytso.com/contribute">
                            <i class="fa fa-edit"></i> 投稿                        </a>
                                </div>
        </div>
    </div><!-- /.container -->
</header>

<div id="wrap">    <div class="wrap container">
        <ol class="breadcrumb" vocab="https://schema.org/" typeof="BreadcrumbList"><li class="home" property="itemListElement" typeof="ListItem"><a href="https://blog.ytso.com" property="item" typeof="WebPage"><span property="name" class="hide">云图网</span>首页</a><meta property="position" content="1"></li><li property="itemListElement" typeof="ListItem"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-right-3"></use></svg></i><a href="https://blog.ytso.com/category/tech" property="item" typeof="WebPage"><span property="name">技术专区</span></a><meta property="position" content="2"></li><li property="itemListElement" typeof="ListItem"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-right-3"></use></svg></i><a href="https://blog.ytso.com/category/tech/bigdata" property="item" typeof="WebPage"><span property="name">大数据</span></a><meta property="position" content="3"></li></ol>        <main class="main">
                            <article id="post-9614" class="post-9614 post type-post status-publish format-standard hentry category-bigdata tag-117 tag-mpp tag-121 tag-125 tag-119 tag-120 tag-123 tag-124 tag-122 entry">
                    <div class="entry-main">
                                                                        <div class="entry-head">
                            <h1 class="entry-title">数据库:mongodb与关系型数据库相比的优缺点zz 详解大数据</h1>
                            <div class="entry-info">
                                                                <time class="entry-date published" datetime="2021-07-19T11:26:16+08:00" pubdate>
                                    2021年7月19日 11:26                                </time>
                                <span class="dot">•</span>
                                <a href="https://blog.ytso.com/category/tech/bigdata" rel="category tag">大数据</a>                                                            </div>
                        </div>
                        
                                                <div class="entry-content text-indent text-justify">
                            <div id="cnblogs_post_body">
<div>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;"><strong>与关系型数据库相比，MongoDB的优点：<br /></strong><span style="color: #0000ff;">①弱一致性（最终一致），更能保证用户的访问速度：<br /></span>举例来说，在传统的关系型数据库中，一个COUNT类型的操作会锁定数据集，这样可以保证得到“当前”情况下的精确值。这在某些情况下，例 如通过ATM查看账户信息的时候很重要，但对于Wordnik来说，数据是不断更新和增长的，这种“精确”的保证几乎没有任何意义，反而会产生很大的延 迟。他们需要的是一个“大约”的数字以及更快的处理速度。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">但某些情况下MongoDB会锁住数据库。如果此时正有数百个请求，则它们会堆积起来，造成许多问题。我们使用了下面的优化方式来避免锁定：<br />每次更新前，我们会先查询记录。查询操作会将对象放入内存，于是更新则会尽可能的迅速。在主/从部署方案中，从节点可以使用“-pretouch”参数运行，这也可以得到相同的效果。&nbsp;<br />使用多个mongod进程。我们根据访问模式将数据库拆分成多个进程。&nbsp;<br /><span style="color: #0000ff;">②文档结构的存储方式，能够更便捷的获取数据。<br /></span>对于一个层级式的数据结构来说，如果要将这样的数据使用扁平式的，表状的结构来保存数据，这无论是在查询还是获取数据时都十分困难。<br />举例1：<br />就拿一个“字典项”来说，虽然并不十分复杂，但还是会关系到“定义”、“词性”、“发音”或是“引用”等内容。大部分工程师会将这种模型使用关系型数据库 中的主键和外键表现出来，但把它看作一个“文档”而不是“一系列有关系的表”岂不更好？使用 “dictionary.definition.partOfSpeech='noun'”来查询也比表之间一系列复杂（往往代价也很高）的连接查询方便 且快速。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">举例2：在一个关系型数据库中，一篇博客（包含文章内容、评论、评论的投票）会被打散在多张数据表中。在MongoDB中，能用一个文档来表示一篇博客， 评论与投票作为文档数组，放在正文主文档中。这样数据更易于管理，消除了传统关系型数据库中影响性能和水平扩展性的“JOIN”操作。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;"><span style="color: #0000ff;">CODE↓<br /></span>&gt; db.blogposts.save({ title : "My First Post", author: {name : "Jane", id :1},<br />&nbsp; comments : [{ by: "Abe", text: "First" },<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { by : "Ada", text : "Good post" }]<br />})</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">&gt; db.blogposts.find( { "author.name" : "Jane" } )</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">&gt; db.blogposts.findOne({ title : "My First Post", "author.name": "Jane",<br />&nbsp; comments : [{ by: "Abe", text: "First" },<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { by : "Ada", text : "Good post" } ]<br />})<br />&gt; db.blogposts.find( { "comments.by" : "Ada" } )</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">&gt; db.blogposts.ensureIndex( { "comments.by" : 1 } );<br />举例③：<br />MongoDB是一个面向文档的数据库，目前由10gen开发并维护，它的功能丰富，齐全，完全可以替代MySQL。在使用MongoDB做产品原型的过程中，我们总结了MonogDB的一些亮点：<br />使用JSON风格语法，易于掌握和理解：MongoDB使用JSON的变种BSON作为内部存储的格式和语法。针对MongoDB的操作都使用JSON风格语法，客户端提交或接收的数据都使用JSON形式来展现。相对于SQL来说，更加直观，容易理解和掌握。<br />Schema-less，支持嵌入子文档：MongoDB是一个Schema-free的文档数据库。一个数据库可以有多个Collection，每 个Collection是Documents的集合。Collection和Document和传统数据库的Table和Row并不对等。无需事先定义 Collection，随时可以创建。<br />Collection中可以包含具有不同schema的文档记录。&nbsp;这意味着，你上一条记录中的文档有3个属性，而下一条记录的文档可以有10个属 性，属性的类型既可以是基本的数据类型（如数字、字符串、日期等），也可以是数组或者散列，甚至还可以是一个子文档（embed&nbsp;document）。这 样，可以实现逆规范化（denormalizing）的数据模型，提高查询的速度。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;"><noscript><img fetchpriority="high" decoding="async" style="border-width: 0px;" src="http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif" data-original="http://dl.iteye.com/upload/picture/pic/78474/24b8e210-9010-3e6e-bded-75b44dcc5566.png" alt="图1 MongoDB是一个Schema-free的文档数据库" width="252" height="300"></noscript><img fetchpriority="high" decoding="async" style="border-width: 0px;" class="j-lazy" src="https://blog.ytso.com/wp-content/themes/justnews/themer/assets/images/lazy.png" data-original="http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif" data-original="http://dl.iteye.com/upload/picture/pic/78474/24b8e210-9010-3e6e-bded-75b44dcc5566.png" alt="图1 MongoDB是一个Schema-free的文档数据库" width="252" height="300"></p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">图1 MongoDB是一个Schema-free的文档数据库</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">图2是一个例子，作品和评论可以设计为一个collection，评论作为子文档内嵌在art的comments属性中，评论的回复则作为 comment子文档的子文档内嵌于replies属性。按照这种设计模式，只需要按照作品id检索一次，即可获得所有相关的信息了。在MongoDB 中，不强调一定对数据进行Normalize&nbsp;，很多场合都建议De-normalize，开发人员可以扔掉传统关系数据库各种范式的限制，不需要把所有 的实体都映射为一个Collection，只需定义最顶级的class。MongoDB的文档模型可以让我们很轻松就能将自己的Object映射到 collection中实现存储。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;"><noscript><img decoding="async" style="border-width: 0px;" src="http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif" data-original="http://dl.iteye.com/upload/picture/pic/78476/7c798e78-d431-354e-9cfe-e9f4a62120a7.png" alt="图2 MongoDB支持嵌入子文档" width="300" height="279"></noscript><img decoding="async" style="border-width: 0px;" class="j-lazy" src="https://blog.ytso.com/wp-content/themes/justnews/themer/assets/images/lazy.png" data-original="http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif" data-original="http://dl.iteye.com/upload/picture/pic/78476/7c798e78-d431-354e-9cfe-e9f4a62120a7.png" alt="图2 MongoDB支持嵌入子文档" width="300" height="279"></p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">图2 MongoDB支持嵌入子文档</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;"><span style="color: #0000ff;">③内置GridFS，支持大容量的存储。<br /></span>&nbsp; GridFS是一个出色的分布式文件系统，可以支持海量的数据存储。<br />&nbsp; 内置了GridFS了MongoDB，能够满足对大数据集的快速范围查询。<br /><span style="color: #0000ff;">④内置Sharding。<br /></span>提供基于Range的Auto&nbsp;Sharding机制：一个collection可按照记录的范围，分成若干个段，切分到不同的Shard上。<br />Shards可以和复制结合，配合Replica&nbsp;sets能够实现Sharding+fail-over，不同的Shard之间可以负载均衡。查询是对 客户端是透明的。客户端执行查询，统计，MapReduce等操作，这些会被MongoDB自动路由到后端的数据节点。这让我们关注于自己的业务，适当的 时候可以无痛的升级。MongoDB的Sharding设计能力最大可支持约20&nbsp;petabytes，足以支撑一般应用。<br />这可以保证MongoDB运行在便宜的PC服务器集群上。PC集群扩充起来非常方便并且成本很低，避免了“sharding”操作的复杂性和成本。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;"><span style="color: #0000ff;">⑤第三方支持丰富。(这是与其他的NoSQL相比，MongoDB也具有的优势)<br /></span>现在网络上的很多NoSQL开源数据库完全属于社区型的，没有官方支持，给使用者带来了很大的风险。<br />而开源文档数据库MongoDB背后有商业公司10gen为其提供供商业培训和支持。<br />而且MongoDB社区非常活跃，很多开发框架都迅速提供了对MongDB的支持。不少知名大公司和网站也在生产环境中使用MongoDB，越来越多的创新型企业转而使用MongoDB作为和Django，RoR来搭配的技术方案。<br /><span style="color: #0000ff;">⑥性能优越：<br /></span>在使用场合下，千万级别的文档对象，近10G的数据，对有索引的ID的查询不会比mysql慢，而对非索引字段的查询，则是全面胜出。 mysql实际无法胜任大数据量下任意字段的查询，而mongodb的查询性能实在让我惊讶。写入性能同样很令人满意，同样写入百万级别的数 据，mongodb比我以前试用过的couchdb要快得多，基本10分钟以下可以解决。补上一句，观察过程中mongodb都远算不上是CPU杀手。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;"><strong>与关系型数据库相比，MongoDB的缺点：<br /></strong><span style="color: #0000ff;">①mongodb不支持事务操作。<br /></span>&nbsp; 所以事务要求严格的系统（如果银行系统）肯定不能用它。(这点和优点①是对应的)<br /><span style="color: #0000ff;">②mongodb占用空间过大。<br /></span>&nbsp; 关于其原因，在官方的FAQ中，提到有如下几个方面：<br />1、空间的预分配：为避免形成过多的硬盘碎片，mongodb每次空间不足时都会申请生成一大块的硬盘空间，而且申请的量从64M、128M、256M那 样的指数递增，直到2G为单个文件的最大体积。随着数据量的增加，你可以在其数据目录里看到这些整块生成容量不断递增的文件。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">2、字段名所占用的空间：为了保持每个记录内的结构信息用于查询，mongodb需要把每个字段的key-value都以BSON的形式存储，如果 value域相对于key域并不大，比如存放数值型的数据，则数据的overhead是最大的。一种减少空间占用的方法是把字段名尽量取短一些，这样占用 空间就小了，但这就要求在易读性与空间占用上作为权衡了。我曾建议作者把字段名作个index，每个字段名用一个字节表示，这样就不用担心字段名取多长 了。但作者的担忧也不无道理，这种索引方式需要每次查询得到结果后把索引值跟原值作一个替换，再发送到客户端，这个替换也是挺耗费时间的。现在的实现算是 拿空间来换取时间吧。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">3、删除记录不释放空间：这很容易理解，为避免记录删除后的数据的大规模挪动，原记录空间不删除，只标记“已删除”即可，以后还可以重复利用。</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">4、可以定期运行db.repairDatabase()来整理记录，但这个过程会比较缓慢</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;"><span style="color: #0000ff;">③MongoDB没有如MySQL那样成熟的维护工具，这对于开发和IT运营都是个值得注意的地方。</span></p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;">&nbsp;</p>
<p style="text-align: left; padding-bottom: 0px; line-height: 25px; margin-top: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; margin-bottom: 0px; font-size: 14px; padding-top: 0px;"><span style="color: #0000ff;">文章转自：<a href="http://www.cnblogs.com/end/archive/2012/04/25/2470236.html">http://www.cnblogs.com/end/archive/2012/04/25/2470236.html</a></span></p>
</p></div>
</div>
<div class="entry-readmore"><div class="entry-readmore-btn"></div></div>                                                        <div class="entry-copyright"><p>原创文章，作者：奋斗，如若转载，请注明出处：https://blog.ytso.com/tech/bigdata/9614.html</p></div>                        </div>

                        <div class="entry-tag"><a href="https://blog.ytso.com/tag/%e5%88%86%e5%b8%83%e5%bc%8f%e6%96%87%e4%bb%b6%e7%b3%bb%e7%bb%9f%ef%bc%8c%e5%88%86%e5%b8%83%e5%bc%8f%e6%95%b0%e6%8d%ae%e5%ba%93" rel="tag">分布式文件系统，分布式数据库</a><a href="https://blog.ytso.com/tag/%e5%b9%b6%e8%a1%8c%e5%a4%84%e7%90%86%ef%bc%88mpp%ef%bc%89%e6%95%b0%e6%8d%ae%e5%ba%93%ef%bc%8c%e6%95%b0%e6%8d%ae%e6%8c%96%e6%8e%98" rel="tag">并行处理（MPP）数据库，数据挖掘</a><a href="https://blog.ytso.com/tag/%e5%bc%80%e6%ba%90%e5%a4%a7%e6%95%b0%e6%8d%ae%e5%b9%b3%e5%8f%b0" rel="tag">开源大数据平台</a><a href="https://blog.ytso.com/tag/%e6%95%b0%e6%8d%ae%e4%b8%ad%e5%8f%b0" rel="tag">数据中台</a><a href="https://blog.ytso.com/tag/%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90" rel="tag">数据分析</a><a href="https://blog.ytso.com/tag/%e6%95%b0%e6%8d%ae%e5%bc%80%e5%8f%91" rel="tag">数据开发</a><a href="https://blog.ytso.com/tag/%e6%95%b0%e6%8d%ae%e6%b2%bb%e7%90%86" rel="tag">数据治理</a><a href="https://blog.ytso.com/tag/%e6%95%b0%e6%8d%ae%e6%b9%96" rel="tag">数据湖</a><a href="https://blog.ytso.com/tag/%e6%95%b0%e6%8d%ae%e9%87%87%e9%9b%86" rel="tag">数据采集</a></div>
                        <div class="entry-action">
                            <div class="btn-zan" data-id="9614"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-thumb-up-fill"></use></svg></i> 赞 <span class="entry-action-num">(0)</span></div>
                                                    </div>

                        <div class="entry-bar">
                            <div class="entry-bar-inner">
                                                                <div class="entry-bar-info entry-bar-info2">
                                    <div class="info-item meta">
                                                                                    <a class="meta-item j-heart" href="javascript:;" data-id="9614"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-star"></use></svg></i> <span class="data">0</span></a>                                        <a class="meta-item" href="#comments"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-comment"></use></svg></i> <span class="data">0</span></a>                                                                            </div>
                                    <div class="info-item share">
                                                                                    <a class="meta-item mobile j-mobile-share" href="javascript:;" data-id="9614" data-qrcode="https://blog.ytso.com/tech/bigdata/9614.html">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-share"></use></svg></i> 生成海报                                            </a>
                                                                                    <a class="meta-item wechat" data-share="wechat" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-wechat"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item weibo" data-share="weibo" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-weibo"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item qq" data-share="qq" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-qq"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item qzone" data-share="qzone" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-qzone"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item douban" data-share="douban" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-douban"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item linkedin" data-share="linkedin" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-linkedin"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item facebook" data-share="facebook" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-facebook"></use></svg></i>                                            </a>
                                                                                    <a class="meta-item twitter" data-share="twitter" target="_blank" rel="nofollow noopener noreferrer" href="#">
                                                <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-twitter"></use></svg></i>                                            </a>
                                                                            </div>
                                    <div class="info-item act">
                                        <a href="javascript:;" id="j-reading"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-article"></use></svg></i></a>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                                            <div class="entry-page">
                    <div class="entry-page-prev entry-page-nobg">
                <a href="https://blog.ytso.com/tech/bigdata/9613.html" title="压缩 MongoDB 的数据文件详解大数据" rel="prev">
                    <span>压缩 MongoDB 的数据文件详解大数据</span>
                </a>
                <div class="entry-page-info">
                    <span class="pull-left"><i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-left-double"></use></svg></i> 上一篇</span>
                    <span class="pull-right">2021年7月19日 11:26</span>
                </div>
            </div>
                            <div class="entry-page-next entry-page-nobg">
                <a href="https://blog.ytso.com/tech/bigdata/9615.html" title="Python MongoDB Spatial Query详解大数据" rel="next">
                    <span>Python MongoDB Spatial Query详解大数据</span>
                </a>
                <div class="entry-page-info">
                    <span class="pull-right">下一篇 <i class="wpcom-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-right-double"></use></svg></i></span>
                    <span class="pull-left">2021年7月19日 11:26</span>
                </div>
            </div>
            </div>
                                                                <div class="entry-related-posts">
                            <h3 class="entry-related-title">相关推荐</h3><ul class="entry-related cols-3 post-loop post-loop-list"><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/9105.html" target="_blank" rel="bookmark">
        <span>java连接zookeeper服务器出现“KeeperErrorCode = ConnectionLoss for ...”详解大数据</span>
    </a>
    <span class="date">2021年7月19日</span>
</li><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/9288.html" target="_blank" rel="bookmark">
        <span>HDFS shell命令详解大数据</span>
    </a>
    <span class="date">2021年7月19日</span>
</li><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/313714.html" target="_blank" rel="bookmark">
        <span>数据分析和商业智能平台的魔力象限</span>
    </a>
    <span class="date">2024年6月13日</span>
</li><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/9690.html" target="_blank" rel="bookmark">
        <span>spring集成mongodb的常规配置详解大数据</span>
    </a>
    <span class="date">2021年7月19日</span>
</li><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/9645.html" target="_blank" rel="bookmark">
        <span>Redis详解（五）------ redis的五大数据类型实现原理大数据</span>
    </a>
    <span class="date">2021年7月19日</span>
</li><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/9443.html" target="_blank" rel="bookmark">
        <span>大数据技术之倒排索引（多job串联)详解大数据</span>
    </a>
    <span class="date">2021年7月19日</span>
</li><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/9572.html" target="_blank" rel="bookmark">
        <span>Hive order by/sort by/distribute by/cluster by作用详解大数据</span>
    </a>
    <span class="date">2021年7月19日</span>
</li><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/9609.html" target="_blank" rel="bookmark">
        <span>Memcached内存分配优化及使用问题详解大数据</span>
    </a>
    <span class="date">2021年7月19日</span>
</li><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/9663.html" target="_blank" rel="bookmark">
        <span>MongoDB 更改数据库位置详解大数据</span>
    </a>
    <span class="date">2021年7月19日</span>
</li><li class="item">
    <a href="https://blog.ytso.com/tech/bigdata/9040.html" target="_blank" rel="bookmark">
        <span>Hadoop学习总结之五：Hadoop的运行痕迹详解大数据</span>
    </a>
    <span class="date">2021年7月19日</span>
</li></ul>                        </div>
                    <error>
    <code>wp_die</code>
    <title><![CDATA[WordPress &amp;rsaquo; Error]]></title>
    <message><![CDATA[&lt;h1&gt;Error establishing a Redis connection&lt;/h1&gt;
&lt;p&gt;To disable Redis, delete the &lt;code&gt;object-cache.php&lt;/code&gt; file in the &lt;code&gt;/wp-content/&lt;/code&gt; directory.&lt;/p&gt;
]]></message>
    <data>
        <status>500</status>
    </data>
</error>
<!--
Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com

Retrieved 2215 objects (532 KB) from Redis using Predis (v2.4.0).
-->
