<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NoSQLFan</title>
	<atom:link href="http://blog.nosqlfan.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.nosqlfan.com</link>
	<description>关注NoSQL相关的新闻与技术</description>
	<lastBuildDate>Wed, 18 Jan 2012 10:08:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MongoDB新的数据统计框架介绍</title>
		<link>http://blog.nosqlfan.com/html/3648.html</link>
		<comments>http://blog.nosqlfan.com/html/3648.html#comments</comments>
		<pubDate>Wed, 18 Jan 2012 10:07:15 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[统计]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3648</guid>
		<description><![CDATA[目前的MongoDB在进行复杂的数据统计计算时都需要写MapReduce来实现，包括在SQL中比较常用的group by查询也需要写一个reduce才能实现，这是比较麻烦的。在MongoDB2.1中，将会引入一套全新的数据统计计算框架，让用户更方便的进行统计操作。
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="从MySQL到MongoDB(添加MongoDB循环插入数据方法)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F287.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11641035.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">从MySQL到MongoDB(添加MongoDB循环插入数据方法)</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB数据文件内部结构" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3515.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/12/05/11937302.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB数据文件内部结构</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB 1.4.3 发布" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F231.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB 1.4.3 发布</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB索引内部实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3132.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/02/17/2795732.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB索引内部实现</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="【译】 MongoDB 入门教程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F342.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/09/14/30594564.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">【译】 MongoDB 入门教程</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>目前的<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/mongodb" title="查看 MongoDB 的全部文章" target="_blank">MongoDB</a></span>在进行复杂的数据<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/%e7%bb%9f%e8%ae%a1" title="查看 统计 的全部文章" target="_blank">统计</a></span>计算时都需要写MapReduce来实现，包括在SQL中比较常用的group by查询也需要写一个reduce才能实现，这是比较麻烦的。在MongoDB2.1中，将会引入一套全新的数据统计计算框架，让用户更方便的进行统计操作。</p>
<p>下面我们就来看看几个新的操作符：</p>
<h3>$match</h3>
<p>$match的作用是过滤数据，通过设置一个条件，将数据进行筛选过滤，例子：</p>
<pre>db.runCommand({ aggregate : "article", pipeline : [
    { $match : { author : "dave" } }
]});</pre>
<p>这相当于将article这个collection中的记录进行筛选，筛选条件是author属性值为dave，其作用其实相当于普通的find命令，如：</p>
<pre>&gt; db.article.find({ author : "dave" });
</pre>
<p>所以，那这个命令有什么用呢？与find不同，find的结果是直接作为最终数据返回，而$match只是pipeline中的一环，它筛选的结果数据可以再进行下一级的统计操作。</p>
<h3>$project</h3>
<p>$project命令用于设定数据的筛选字段，就像我们SQL中select需要的字段一样。例子：</p>
<pre>db.runCommand({ aggregate : "article", pipeline : [
    { $match : { author : "dave" } },
    { $project : {
        _id : 0,
	author : 1,
        tags : 1
    }}
]});</pre>
<p>上面就是将所有author为dave的记录的author和tags两个字段取出来。（_id:0 表示去掉默认会返回的_id字段）</p>
<p>其实上面这个功能也能用我们平时用的find命令来实现，如：</p>
<pre>&gt; db.article.find({ author : "dave" }, { _id : 0, author : 1, tags : 1);
</pre>
<h3>$unwind</h3>
<p>$unwind命令很神奇，他可以将某一个为array类型字段的数据拆分成多条，每一条包含array中的一个属性。<br />
比如你使用下面命令添加一条记录：</p>
<pre>db.article.save( {
    title : "this is your title" ,
    author : "dave" ,
    posted : new Date(4121381470000) ,
    pageViews : 7 ,
    tags : [ "fun" , "nasty" ] ,
    comments : [
        { author :"barbara" , text : "this is interesting" } ,
        { author :"jenny" , text : "i like to play pinball", votes: 10 }
    ],
    other : { bar : 14 }
});</pre>
<p>这里面tags字段就是一个array。下面我们在这个字段上应用$unwind操作</p>
<pre>db.runCommand({ aggregate : "article", pipeline : [
    { $unwind : "$tags" }
]});</pre>
<p>上面命令的意思就是按tags字段来拆分，此命令执行的结果如下：</p>
<pre>{
        "result" : [
                {
                        "_id" : ObjectId("4eeeb5fef09a7c9170df094b"),
                        "title" : "this is your title",
                        "author" : "dave",
                        "posted" : ISODate("2100-08-08T04:11:10Z"),
                        "pageViews" : 7,
                        "tags" : "fun",
                        "comments" : [
                                {
                                        "author" : "barbara",
                                        "text" : "this is interesting"
                                },
                                {
                                        "author" : "jenny",
                                        "text" : "i like to play pinball",
                                        "votes" : 10
                                }
                        ],
                        "other" : {
                                "bar" : 14
                        }
                },
                {
                        "_id" : ObjectId("4eeeb5fef09a7c9170df094b"),
                        "title" : "this is your title",
                        "author" : "dave",
                        "posted" : ISODate("2100-08-08T04:11:10Z"),
                        "pageViews" : 7,
                        "tags" : "nasty",
                        "comments" : [
                                {
                                        "author" : "barbara",
                                        "text" : "this is interesting"
                                },
                                {
                                        "author" : "jenny",
                                        "text" : "i like to play pinball",
                                        "votes" : 10
                                }
                        ],
                        "other" : {
                                "bar" : 14
                        }
                }
        ],
        "ok" : 1
}</pre>
<p>我们可以看到，原来的tags字段是一个包含两个元素的数组，通过$unwind命令后，被拆分成两条记录，每一条记录的tags字段是原来数组中的一个元素。</p>
<h3>$group</h3>
<p>$group命令比较好理解，功能就是按某一个key将key值相同的多条数据组织成一条。<br />
比如我们使用下面命令再往article这个collection中写入一条记录，这时候我们就有两条记录了：</p>
<pre>db.article.save( {
    title : "this is some other title" ,
    author : "jane" ,
    posted : new Date(978239834000) ,
    pageViews : 6 ,
    tags : [ "nasty" , "filthy" ] ,
    comments : [
        { author :"will" , text : "i don't like the color" } ,
        { author :"jenny" , text : "can i get that in green?" }
    ],
    other : { bar : 14 }
});</pre>
<p>我们可以先用上面的$unwind按tags将记录拆成多条，然后再将记录按tags字段重新组织，将同一个tag对应的所有author放在一个array中。只需要像下面这样写：</p>
<pre>db.runCommand({ aggregate : "article", pipeline : [
    { $unwind : "$tags" },
    { $group : {
	_id : "$tags",
        count : { $sum : 1 },
	authors : { $addToSet : "$author" }
    }}
]});</pre>
<p>这时候你就能得到如下结果了</p>
<pre>{
        "result" : [
                {
                        "_id" : "filthy",
                        "count" : 1,
                        "authors" : [
                                "jane"
                        ]
                },
                {
                        "_id" : "fun",
                        "count" : 1,
                        "authors" : [
                                "dave"
                        ]
                },
                {
                        "_id" : "nasty",
                        "count" : 2,
                        "authors" : [
                                "jane",
                                "dave"
                        ]
                }
        ],
        "ok" : 1
}</pre>
<p>上面是2.1版本将会推出的一些新的统计类命令的介绍，在易用性方面它们提供给我们很多便利，但是MongoDB MapReduce的最大硬伤，单个mongod中无法并行执行，貌似还是没有解决。虽然其命令中采用了pipeline 的组织模式，但是貌似还是完全串行且分降段完成的。</p>
<p>来源：<a href="http://blog.mongodb.org/post/16015854270/operations-in-the-new-aggregation-framework" target="_blank">blog.mongodb.org</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="从MySQL到MongoDB(添加MongoDB循环插入数据方法)" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F287.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11641035.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">从MySQL到MongoDB(添加MongoDB循环插入数据方法)</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB数据文件内部结构" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3515.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/12/05/11937302.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB数据文件内部结构</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB 1.4.3 发布" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F231.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB 1.4.3 发布</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB索引内部实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3132.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/02/17/2795732.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB索引内部实现</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="【译】 MongoDB 入门教程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F342.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3648.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/09/14/30594564.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">【译】 MongoDB 入门教程</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3648.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>redmon：Redis监控管理Web工具</title>
		<link>http://blog.nosqlfan.com/html/3644.html</link>
		<comments>http://blog.nosqlfan.com/html/3644.html#comments</comments>
		<pubDate>Mon, 16 Jan 2012 14:46:49 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[Redis]]></category>
		<category><![CDATA[redmon]]></category>
		<category><![CDATA[监控]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3644</guid>
		<description><![CDATA[redmon是那种一眼看上去就觉得不错的小工具，而且必然会很轻量级，目前它已经支持实时查看Redis的流量，请求，配置信息，命令行操作等功能，后续还将添加Web端配置修改，慢日志查询等功能。<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="使用Cacti监控MongoDB和Redis" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3208.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/09/8799502.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">使用Cacti监控MongoDB和Redis</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Redis Web界面管理工具" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F471.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11641555.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Redis Web界面管理工具</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Radish：Redis监控与分析服务" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1764.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11638653.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Radish：Redis监控与分析服务</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Redis教程一篇" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F169.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Redis教程一篇</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Redis Pipelining功能介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F786.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/11/8484268.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Redis Pipelining功能介绍</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/redmon" title="查看 redmon 的全部文章" target="_blank">redmon</a></span>是那种一眼看上去就觉得不错的小工具，而且感觉很轻量级，目前它已经支持实时查看<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/redis" title="查看 Redis 的全部文章" target="_blank">Redis</a></span>的流量，请求，配置信息，命令行操作等功能，后续还将添加Web端配置修改，慢日志查询等功能。如果有兴趣，你可以去下载一个试玩一下。</p>
<p>下载：<a href="https://github.com/steelThread/redmon" target="_blank">https://github.com/steelThread/redmon</a></p>
<p>简单安装（目前还木有gem包）</p>
<pre>$ bundle install
$ ruby sample/app.rb</pre>
<p>你可以用它提供的这个脚本给Redis来点压力，以便你试用redmon</p>
<div>
<pre>$ ruby sample/load_sim.rb</pre>
</div>
<p>然后打开浏览器，访问 0.0.0.0:4567，就能看到下面的界面了</p>
<p><a href="http://pic.yupoo.com/iammutex/BFLYIhhN/KPxSy.png" target="_blank"><img class="alignnone" src="http://pic.yupoo.com/iammutex/BFLYIhhN/medium.jpg" alt="" width="500" height="288" /></a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="使用Cacti监控MongoDB和Redis" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3208.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/09/8799502.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">使用Cacti监控MongoDB和Redis</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Redis Web界面管理工具" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F471.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11641555.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Redis Web界面管理工具</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Radish：Redis监控与分析服务" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1764.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11638653.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Radish：Redis监控与分析服务</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Redis教程一篇" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F169.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Redis教程一篇</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Redis Pipelining功能介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F786.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3644.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/11/8484268.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Redis Pipelining功能介绍</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3644.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>quickdb简介，基于内存文件系统的key-value存储</title>
		<link>http://blog.nosqlfan.com/html/3638.html</link>
		<comments>http://blog.nosqlfan.com/html/3638.html#comments</comments>
		<pubDate>Mon, 09 Jan 2012 14:08:20 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[NoSQL杂谈]]></category>
		<category><![CDATA[quickdb]]></category>
		<category><![CDATA[内存文件系统]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3638</guid>
		<description><![CDATA[quickdb是由七夜同学开发的一个key-value存储系统，与普通的NoSQL系统不同的是，它是基于内存文件系统的，也正是通过内存文件系统来提高数据的访问速度。
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="redisfs – Redis＋FUSE 构建的文件系统" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1471.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/10/11715176.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">redisfs – Redis＋FUSE 构建的文件系统</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="小文件存储的方案对比：nginx、Redis、Moosefs" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2469.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/05/8484084.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">小文件存储的方案对比：nginx、Redis、Moosefs</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB数据文件内部结构" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3515.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/12/05/11937302.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB数据文件内部结构</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="虚拟内存实现原理" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2956.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/24/8483878.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">虚拟内存实现原理</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB部署与运维" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2125.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/04/8484216.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB部署与运维</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/quickdb" title="查看 quickdb 的全部文章" target="_blank">quickdb</a></span>是由<a href="http://www.cellphp.com/" target="_blank">七夜</a>同学开发的一个key-value存储系统，与普通的NoSQL系统不同的是，它是基于<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/%e5%86%85%e5%ad%98%e6%96%87%e4%bb%b6%e7%b3%bb%e7%bb%9f" title="查看 内存文件系统 的全部文章" target="_blank">内存文件系统</a></span>的，也正是通过内存文件系统来提高数据的访问速度。</p>
<p>下面是来自其七夜的简介：</p>
<blockquote><p>quickdb 是一款基于内存文件系统的 HashTable数据结构的Key-Value数据引擎，什么是内存文件系统了？就是操作系统把系统内存划出一部分当作硬盘使用。你可以像操作磁盘那样的操作内存。但效率远远比硬盘来的快多了。通俗叫做内存文件系统，只要服务器不重起数据将一直都在。</p>
<p>通俗的来讲 redis、memcached是自己申请内存管理数据。当进程重启或者挂了就会丢失数据。quickdb是把实体数据储存在内存文件系统里的。当quickdb进程挂了，  实体数据依然还在。 一个进程可能因为各种原因比如修改了配置文件或者要调试数据。要经常重启。但是一个服务器不可能三天两天的重启或者死机。 一般服务器都是半年，或者 好几年都不重起的。 如果你的服务器经常断电或者死机重启那就不叫服务器了。叫家用电脑了。嘿嘿  为了起见,quickdb可以定期的从内存文件系统的数据同步到磁盘中去。这样当服务器重启，也不会丢失数据。 简单的来讲，进程可能会经常因为各种原因要重启或者挂了，但是服务器不可能经常重启或者死机。这样很大程度上保证了数据持久性，也保证了读写效率。</p></blockquote>
<p>quickdb性能很高，下面是其测试数据：</p>
<ul>
<li>写入3145739条数据 花费4.38秒（qps： ~<span style="color: #ff0000;"><strong>72w</strong></span>）</li>
<li>读取 3145739条数据花费3.88秒（qps： ~<span style="color: #ff0000;"><strong>81w</strong></span>）</li>
</ul>
<p>quickdb下载地址：<a href="http://code.google.com/p/loongsso/downloads/detail?name=quickdb-beta1.tar.bz2&amp;can=2&amp;q=#makechanges" target="_blank">code.google.com</a></p>
<p>更多详细介绍请参见作者博客的介绍：<a href="http://www.cellphp.com/article-read-nosql-40-quickdb-nosql-data-disk-persistent.html" target="_blank">www.cellphp.com</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="redisfs – Redis＋FUSE 构建的文件系统" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1471.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/10/11715176.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">redisfs – Redis＋FUSE 构建的文件系统</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="小文件存储的方案对比：nginx、Redis、Moosefs" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2469.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/05/8484084.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">小文件存储的方案对比：nginx、Redis、Moosefs</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB数据文件内部结构" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3515.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/12/05/11937302.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB数据文件内部结构</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="虚拟内存实现原理" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2956.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/24/8483878.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">虚拟内存实现原理</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB部署与运维" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2125.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3638.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/04/8484216.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB部署与运维</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3638.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Redis-Dump：将Redis数据dump成json格式</title>
		<link>http://blog.nosqlfan.com/html/3632.html</link>
		<comments>http://blog.nosqlfan.com/html/3632.html#comments</comments>
		<pubDate>Sun, 08 Jan 2012 16:05:45 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[Redis]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[redis-dump]]></category>
		<category><![CDATA[redis-load]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3632</guid>
		<description><![CDATA[Redis-Dump是一个将Redis数据导入/导出为json格式数据的小工具，目前还在Alpha版本，目前提供两个命令，将Redis数据层出成json的redis-dump命令，以及将json文件导入到redis中的redis-load命令，喜欢尝鲜的同学可以试玩一下。<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="redis_warp、redis_graph、redis_queue － Python下的Redis二次开发" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2785.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/11/8483997.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">redis_warp、redis_graph、redis_queue － Python下的Redis二次开发</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="锋利的Redis" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F129.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">锋利的Redis</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Redis教程一篇" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F169.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Redis教程一篇</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="REDIS TO GO：一个Redis存储服务" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1940.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/14/12130942.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">REDIS TO GO：一个Redis存储服务</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="django-redis-cache：用Redis作django的缓存层" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2875.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/03/8483772.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">django-redis-cache：用Redis作django的缓存层</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/redis" title="查看 Redis 的全部文章" target="_blank">Redis</a></span>-Dump是一个将Redis数据导入/导出为<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/json" title="查看 json 的全部文章" target="_blank">json</a></span>格式数据的小工具，目前还在Alpha版本，目前提供两个命令，将Redis数据层出成json的<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/redis-dump" title="查看 redis-dump 的全部文章" target="_blank">redis-dump</a></span>命令，以及将json文件导入到redis中的<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/redis-load" title="查看 redis-load 的全部文章" target="_blank">redis-load</a></span>命令，喜欢尝鲜的同学可以试玩一下。</p>
<p>另外个人认为这也是一个适合新手的Redis数据结构学习工具，通过将Redis几种数据结构dump成json，可以让我们更直观的认识Redis数据结构及其操作。</p>
<p>下面是使用简介：</p>
<pre>$ redis-dump
$ redis-dump -u 127.0.0.1:6371 &gt; db_full.json
$ redis-dump -u 127.0.0.1:6371 -d 15 &gt; db_db15.json

$ &lt; db_full.json redis-load
$ &lt; db_db15.json redis-load -d 15
# OR
$ cat db_full | redis-load
$ cat db_db15.json | redis-load -d 15

# You can specify the redis URI via an environment variable
$ export REDIS_URI=127.0.0.1:6371
$ redis-dump</pre>
<p>层出的json数据格式如下，包括了db，key，ttl，数据的type，以及相应的数据</p>
<pre>{"db":0,"key":"hashkey","ttl":-1,"type":"hash","value":{"field_a":"value_a","field_b":"value_b","field_c":"value_c"},"size":42}
{"db":0,"key":"listkey","ttl":-1,"type":"list","value":["value_0","value_1","value_2","value_0","value_1","value_2"],"size":42}
{"db":0,"key":"setkey","ttl":-1,"type":"set","value":["value_2","value_0","value_1","value_3"],"size":28}
{"db":0,"key":"zsetkey","ttl":-1,"type":"zset","value":[["value_0","100"],["value_1","100"],["value_2","200"],["value_3","300"],["value_4","400"]],"size":50}
{"db":0,"key":"stringkey","ttl":79,"type":"string","value":"stringvalue","size":11}</pre>
<p>而实际上Redis作者也在昨天开启了一个关于将Redis数据转换成json或csv的讨论(<a href="https://github.com/antirez/redis/issues/288" target="_blank">issues-288</a>)。目前正广泛收集需求中。</p>
<p>项目地址：<a href="https://github.com/delano/redis-dump" target="_blank">github.com</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="redis_warp、redis_graph、redis_queue － Python下的Redis二次开发" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2785.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/11/8483997.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">redis_warp、redis_graph、redis_queue － Python下的Redis二次开发</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="锋利的Redis" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F129.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">锋利的Redis</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Redis教程一篇" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F169.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Redis教程一篇</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="REDIS TO GO：一个Redis存储服务" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1940.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/14/12130942.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">REDIS TO GO：一个Redis存储服务</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="django-redis-cache：用Redis作django的缓存层" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2875.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3632.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/03/8483772.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">django-redis-cache：用Redis作django的缓存层</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3632.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Replica Sets系列文章之：选举</title>
		<link>http://blog.nosqlfan.com/html/3621.html</link>
		<comments>http://blog.nosqlfan.com/html/3621.html#comments</comments>
		<pubDate>Sun, 08 Jan 2012 13:38:36 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[Replica Sets]]></category>
		<category><![CDATA[选举]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3621</guid>
		<description><![CDATA[MongoDB核心开发工程师 Kristina Chodorow 最近在她的博客上表示，她会发表一系列关于MongoDB Replica Sets 相关的文章，向大家详细的进行一次 Replica Sets 的知识培训。本文就是其文章的第一篇，关于 replica sets 的选举机制。<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Warning:MongoDB Replica Sets配置注意事项" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2523.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/07/21/18262722.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Warning:MongoDB Replica Sets配置注意事项</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB Replica Sets 简明搭建教程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F826.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB Replica Sets 简明搭建教程</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB Replica Sets-让你的数据荡然无存？" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F580.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB Replica Sets-让你的数据荡然无存？</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB 1.7.x版本中的5个Replica Sets新特性" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F965.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB 1.7.x版本中的5个Replica Sets新特性</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak与MongoDB的对比" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2705.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/08/05/21193878.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak与MongoDB的对比</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<div><span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/mongodb" title="查看 MongoDB 的全部文章" target="_blank">MongoDB</a></span>核心开发工程师 Kristina Chodorow（@<a href="http://www.twitter.com/kchodorow" target="_blank">kchodorow</a>） 最近在她的博客上表示，她会发表一系列关于MongoDB <span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/replica-sets" title="查看 Replica Sets 的全部文章" target="_blank">Replica Sets</a></span> 相关的文章，向大家详细的进行一次 Replica Sets 的知识培训。其系列文章内容包括下面一些章节：</div>
<ul>
<li><a href="http://blog.nosqlfan.com/html/3621.html">Elections（选举）</a></li>
<li>Creating a set（创建一个replica sets）</li>
<li>Reconfiguring（重新配置）</li>
<li>Syncing（同步）</li>
<li>Initial Sync（初始化同步）</li>
<li>Rollback（数据回滚）</li>
<li>Authentication（权限控制）</li>
<li>Debugging（故障排除）</li>
</ul>
<p>本文就是其文章的第一篇，关于 replica sets 的<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/%e9%80%89%e4%b8%be" title="查看 选举 的全部文章" target="_blank">选举</a></span>机制。</p>
<p>本文假定你已经知道什么是 replica sets，并且你已经配置并使用过它，而且你已经了解 primary 和 secondary 的概念。</p>
<p>对 replica sets 来说，其最大的特点是能够自动选举出 primary，所以作为本系列的第一篇文章，我们先来讨论一下选举过程。</p>
<h2>Replica Set 选举过程</h2>
<h3>心跳检测</h3>
<p><img class="alignright" title="心跳监测" src="http://pic.yupoo.com/iammutex/BEy4pLK2/Paecd.gif" alt="" width="350" height="247" />假设我们有三个节点的replica sets：X，Y和Z节点。在replica sets结构中，这三个节点每2秒会各自向其它两个节点发送一个心跳检测请求。比如X节点向Y和Z节点各发送了一个心跳检测请求，在正常情况下，Y、Z会返回一个包含自身信息的回复包，回复包中主要包括了下面一些信息：它们现在是什么角色（primary 还是 secondary)，他们是否能够在必要的时候成为 primary，以及他们当前时钟时间等等。</p>
<p>X节点在收到回复包后，会用这些信息更新自己的一个状态映射表，更新的内容包括：是否有新的节点加入或有老的节点宕掉，这个请求的网络传输时间等等。</p>
<p>而当X节点的映射表发生了变化，那X会进行下面的逻辑判断：如果X是 primary，而另外一个节点出现故障，那么它会那自己是否还能和集群中大多数节点进行通信，如果不能与大多数节点通信，那么他会把自己从 primary 降级为 secondary。（在replica sets中，primary 必须能够和集群中的大多数节点进行通信，以免发生网络断开形成两个或多个节点群各自为政的情况，这样会影响到数据的一致性）</p>
<h3>关于降级</h3>
<p>在节点从 primary 降级为 secondary 的过程中，会有一些问题出现。在 MongoDB 中，写操作默认是通过 fire-and-forget 的模式来进行的，也就是说写操作通常不关心是否成功，发完请求后客户端就认为成功了。但如果这时候 primary 进行降级操作，那么客户端并不知道这时候 primary 已经降级成为 secondary 了，客户端可能还会将后续的写操作发送给这个节点。这时候刚刚降级的这个 secondary 可以发送一个包说“我已经不是 primary 了&#8221;，但是我们上面说过了，客户端根本就无视你这个包。所以客户端根本不知道这次写入已经失败了。</p>
<p>对于这个问题，你可能会说”那我们每次都使用安全写入不就行了“（安全写入意思是说等待服务器返回成功后客户端才认为写成功了），但是很明显，这非常不靠谱。所以我们的做法是，在一个 primary 降级成为 secondary 后，它会将原来的所有连接关闭。这样客户端在下一次写入的时候就会出现 socket 错误。而客户端在发现这个错误之后，就会重新向集群获取新的 primary 的地址，并将后续的写操作都往新的服务器上写入。</p>
<h3>选举</h3>
<p>我们回头再来看心跳监测请求：如果X是一个 secondary，那么X会定时检测是否需要选举自己成为 primary。其检测内容包括：是否集群中有其它节点认为自己是 primary？X节点自己是否已经是 primary？X节点自己是否有资格成为 primary？如果这三个问题中的任何一个回答是否定的，那么X节点就不会试图把自己变成primary。（也就是说，只有当X节点是一个能够当 primary 的secondary，并且其它节点都不是primary时，X才会发起选举并选自己为primary）</p>
<p>而当X发现现在需要一个 primary 并且自己又正好可以充当时，它就会发起一轮选举：X节点会向Y、Z节点各发起一个请求包，告知他们”我认为我可以接管 primary 的角色，你们觉得怎么样？“</p>
<p><img class="alignleft" title="选举" src="http://pic.yupoo.com/iammutex/BEy4pC9r/PHdPr.jpg" alt="" width="300" height="227" /></p>
<p>当Y和Z收到上面的请求包时，他们会进行下面几项检测：他们是否已经知识集群中有一个 primary了？他们自己的数据是否比X节点更新？是否有其它节点的数据比X节点更新？如果上面条件有任何一个满足，那么他们都会认为X不够资格成为 primary，他们会发送一个返回包告知X说”停止选举！“。而如果三个条件都不成立，也就是说他们认为目前集群中确实没有 primary，并且X的数据又是最新的，那么他们会发送返回包告知X说”没问题“。</p>
<p>如果X收到”停止选举！“的返回，那么他会马上停止选举并保持自己为 sencondary 状态。</p>
<p>如果X收到所有其它节点都返回说”没问题“，那么他会进入选举过程的第二阶段。</p>
<p>在第二阶段中，X会向其它节点发送一个包，说”我宣布我已经是 primary 了“。这时候，Y和Z节点再进行一些最终的确认：上面的判断过的所有条件是否依然表明X可以做 primary，如果确实如此，那么他们会在本轮 primary 选举中向X出赞成票。并且他们投完赞成票后，30秒内不会再做其它投票决定。</p>
<p>上面是说如果第二次确认还是通过的情况，那么如果最终确认没有通过呢。他们会投一个反对票，反对X成为 primary，如果有反对票产生，那么这一轮选举就失败了。X还是保持 secondary 的身份。</p>
<p>下面我们假设一种情况，如果Y给X投了赞成票，而Z给X投了反对票。那这时候Y由于投了赞成票，它在30秒内不能再进行投票。所以如果这时候Z发起选举想让自己成为 primary，那么Z这时候必须要获得X的赞成票。因为这时候Y不能投票，为了获取多数票，Z必须获得X的赞成票。</p>
<p>所以投票的规则是这样的：如果没有人投反对票，并且赞成票的比例过半，那么本轮选举对象就能够成为 primary。</p>
<p>来源：<a href="http://www.snailinaturtleneck.com/blog/2012/01/04/replica-set-internals-bootcamp-part-i-elections/" target="_blank">www.snailinaturtleneck.com</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Warning:MongoDB Replica Sets配置注意事项" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2523.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/07/21/18262722.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Warning:MongoDB Replica Sets配置注意事项</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB Replica Sets 简明搭建教程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F826.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB Replica Sets 简明搭建教程</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB Replica Sets-让你的数据荡然无存？" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F580.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB Replica Sets-让你的数据荡然无存？</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB 1.7.x版本中的5个Replica Sets新特性" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F965.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB 1.7.x版本中的5个Replica Sets新特性</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak与MongoDB的对比" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2705.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3621.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/08/05/21193878.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak与MongoDB的对比</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3621.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>2011最值得收藏的Cassandra演讲</title>
		<link>http://blog.nosqlfan.com/html/3615.html</link>
		<comments>http://blog.nosqlfan.com/html/3615.html#comments</comments>
		<pubDate>Thu, 05 Jan 2012 02:03:00 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[Cassandra]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3615</guid>
		<description><![CDATA[2012已经来了，Datastax总结了2011年最值得听的几个Cassandra演讲，NoSQLFan将其转给有兴趣的同学。
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Digg使用Cassandra的惨痛经验" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F585.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11640245.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Digg使用Cassandra的惨痛经验</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="cassandra观止" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F51.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">cassandra观止</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Cassandra运维之道" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F455.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cassandra运维之道</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Cassandra SF 会议精华集锦" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2528.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/07/21/18265716.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cassandra SF 会议精华集锦</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Cassandra 发布 0.6.2 版本 修复bug 20个" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F246.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cassandra 发布 0.6.2 版本 修复bug 20个</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>2012已经来了，Datastax总结了2011年最值得听的几个<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/cassandra" title="查看 Cassandra 的全部文章" target="_blank">Cassandra</a></span>演讲，NoSQLFan将其转给有兴趣的同学。</p>
<h3>英文大型演讲</h3>
<ul>
<li><a href="http://www.slideshare.net/rbranson/how-do-i-cassandra" target="_blank">How do I Cassandra?</a> Rick Branson在Memphis Python User Group大会的的演讲，是本年度介绍Cassandra介绍相关的演讲中最好的一个，可能也是最具独创性的一个。</li>
<li><a href="http://www.slideshare.net/jbellis/cassandra-tokyo-2011" target="_blank">Cassandra 1.0 and the future of big data</a>, Jonathan Ellis在Cassandra Tokyo上的演讲，主要内容包括了NoSQL与Big Data的关系，内容围绕在Cassandra和Hadoop之间，包括了对 <a href="http://www.datastax.com/products/enterprise" target="_blank">DataStax Enterprise</a>的介绍。Q&amp;A环节包含了<a href="http://www.datastax.com/dev/blog/questions-from-the-tokyo-cassandra-conference" target="_blank">英语</a> 和 <a href="http://www.gemini-bigdata.com/2011/10/cassandra-talk-session-with-jonathan.html" target="_blank">日语</a> 版本.</li>
<li><a href="http://www.slideshare.net/adrianco/migrating-netflix-from-oracle-to-global-cassandra" target="_blank">Replacing Datacenter	Oracle with Global Apache Cassandra on AWS</a>, Adrian Cockroft 在 Cassandra SF 上的一个演讲。内容包括了Netflix在尝试Amazon的SimpleDB后将数据迁移到Cassandra的过程，<a href="http://blip.tv/datastax/replacing-datacenter-oracle-with-global-apache-cassandra-on-aws-5515987" target="_blank">这里</a>是视频内容。 Adrian 的一篇相关博客 <a href="http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html" target="_blank">scaling Cassandra to over one million writes per second</a>。</li>
<li><a href="http://www.slideshare.net/eonnen/from-100s-to-100s-of-millions" target="_blank">From 100s to 100s of Millions</a>, Erik Onnen 在 Cassandra SF 大会的一个演讲。Erik 介绍了 Urban Airship 在 PostgreSQL，MongoDB，以及 Cassandra 方面的一些经验，<a href="http://blip.tv/datastax/migration-from-100s-to-100s-of-millions-5501984" target="_blank">这里</a>是视频内容。</li>
<li><a href="http://www.slideshare.net/nmilford/cassandra-for-sysadmins" target="_blank">Cassandra 101 for system administrators</a>, Nathan Milford 在 Cassandra NYC 的演讲。他从系统工程师的角度对Cassandra进行了介绍。<a href="http://youtu.be/wPs4yyQr-Q8" target="_blank">这里</a>是视频内容.</li>
<li><a href="http://www.slideshare.net/jericevans/cql-sql-in-cassandra" target="_blank">CQL: SQL for Cassandra</a>, Eric Evans 在 Cassandra NYC 的一个演讲. Eric 向大家介绍了CQL（Cassandra Query Language）的现状和发现。如果你在使用Cassandra，并且在使用其ThriftAPI的使用上有问题，那强烈建议看看本<a href="http://www.youtube.com/watch?v=_l_ymGJ3oPk&amp;feature=youtu.be" target="_blank">视频</a>。</li>
</ul>
<h3>闪电演讲</h3>
<p>Cassandra SF 包括了一个 <a href="http://en.wikipedia.org/wiki/Lightning_Talk" target="_blank">闪电演讲</a>环节，五分钟的演讲通常会很有新意，Matt Dennis 的演讲 <a href="http://www.slideshare.net/mattdennis/cassandra-antipatterns" target="_blank">Cassandra antipatterns</a> (<a href="http://blip.tv/datastax/cassandra-antipatterns-5501515" target="_blank">视频</a>) 就是这样。</p>
<h3>非英语演讲</h3>
<p>除了上面一些以外，在其它一些国家也都有一些不错的会议发言，像<a href="http://www.slideshare.net/mfiguiere/breizhcamp-jun-2011-haute-disponibilit-et-lasticit-avec-cassandra" target="_blank">法国</a>，<a href="http://www.slideshare.net/bcoverston/nosqlbr-cassandra" target="_blank">葡萄牙</a> 和 <a href="http://www.slideshare.net/yukim/cassandra-3885571" target="_blank">日本</a>的。</p>
<p>来源：<a href="http://www.datastax.com/dev/blog/the-best-cassandra-talks-of-2011" target="_blank">www.datastax.com</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Digg使用Cassandra的惨痛经验" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F585.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11640245.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Digg使用Cassandra的惨痛经验</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="cassandra观止" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F51.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">cassandra观止</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Cassandra运维之道" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F455.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cassandra运维之道</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Cassandra SF 会议精华集锦" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2528.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/07/21/18265716.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cassandra SF 会议精华集锦</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Cassandra 发布 0.6.2 版本 修复bug 20个" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F246.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3615.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cassandra 发布 0.6.2 版本 修复bug 20个</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3615.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于MongoDB的全局锁</title>
		<link>http://blog.nosqlfan.com/html/3610.html</link>
		<comments>http://blog.nosqlfan.com/html/3610.html#comments</comments>
		<pubDate>Tue, 03 Jan 2012 09:00:00 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[lock]]></category>
		<category><![CDATA[全局锁]]></category>
		<category><![CDATA[读写锁]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3610</guid>
		<description><![CDATA[对MongoDB有所了解的人都知道，MongoDB有一个让人头疼的全局锁（读写锁，允许并发读，而写会阻塞所有的读写），要命的是这个锁不是表级的，不是库级的，而是整个Server级别的，这让人听起来是不是非常的蛋疼。
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="MongoDB系列教程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F348.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/09/14/30594564.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB系列教程</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="mongodb GridFS 介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F406.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/10/11640413.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">mongodb GridFS 介绍</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="简单的MongoDB" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F219.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/14/12198152.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">简单的MongoDB</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB1.5.2发布" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F236.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB1.5.2发布</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB:下一代MySQL？" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2215.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/29/14951789.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB:下一代MySQL？</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>对<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/mongodb" title="查看 MongoDB 的全部文章" target="_blank">MongoDB</a></span>有所了解的人都知道，MongoDB有一个让人头疼的<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/%e5%85%a8%e5%b1%80%e9%94%81" title="查看 全局锁 的全部文章" target="_blank">全局锁</a></span>（<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/%e8%af%bb%e5%86%99%e9%94%81" title="查看 读写锁 的全部文章" target="_blank">读写锁</a></span>，允许并发读，而写会阻塞所有的读写），要命的是这个锁不是表级的，不是库级的，而是整个Server级别的，这让人听起来是不是非常的蛋疼。</p>
<p>在2.0版本以前，这一问题一直没有得到解决，于是有人提出，在可预见某个update操作的记录可能在磁盘上时，为了减少写锁占用的时间，可以采用先读后写的方式，通过先读一次，将要操作的记录加载到内存中，再进行内存中的update，这样写锁就不包括将数据从磁盘加载到内存的时间了。</p>
<p>在可预见数据冷热的情况下，这种操作能够有一定的效果，但是很明显，这种变态的方法不应该是一个终极解决方案。</p>
<p>值得庆幸的是，在2.0版本中，MongoDB宣称有很大程度的并发性能提升，而这一提升的基础正是解决了这个全局锁的问题。</p>
<p>解决的方法并不是通过减少锁粒度来解决，虽然collection级别的锁机制也正在开发中。（<a href="https://jira.mongodb.org/browse/SERVER-1240" target="_blank">SERVER-1240</a>）</p>
<p>解决方法是通过对一些可能造成长时间锁占用的操作进行锁抑制。比如和我们上面的方法类似，在进行update操作时，如果发现需要更新的记录在磁盘上，那么这个锁就不会一直占用，而是等到将数据从磁盘加载到内存后再添加写锁进行update。</p>
<p>而同理，对于其它一些可能耗时比较长的操作也可以采用类似的方法，通过将长时间占用的全局锁拆分成多个细粒度的小锁来使需要获取锁来进行的操作能够交错的执行，从而避免一夫当关万夫莫开的情况，主要包括下面一些操作：</p>
<ul>
<li>查询操作</li>
<li>批量更新操作</li>
<li>批量删除操作</li>
<li>批量insert写入操作</li>
</ul>
<p>如果你还在使用2.0以前的版本，并且在并发性能上出现问题，可以考虑在2.0.x版本上进行一些性能测试并对你的MongoDB进行升级。</p>
<p>2.0版本中的改进听起来是可行的，然而他的实际效果如何呢，这里有两张性能测试图片，来自<a href="http://blog.pythonisito.com/2011/12/mongodbs-write-lock.html" target="_blank">blog.pythonisito.com</a>的测试。</p>
<p>第一张是在不触发page faulting的情况下1.8版本和2.0版本在加了写锁后的性能对比，可以看出，在写操作能够直接在内存中完成的情况下，二者的性能几乎没有差别。</p>
<p><img class="alignnone" src="http://pic.yupoo.com/iammutex/BEa0XTSA/medium.jpg" alt="" width="500" height="340" /></p>
<p>第二张图是在写操作会触发page faulting的情况，也就是在1.8中，加写锁的时间会包括将数据从磁盘讲到内存的时间，而在2.0中不包括这段时间。可以看出2.0版本中情况好了很多，因为采用了锁抑制策略，使得产生page faulting后还能有较好并发性能。</p>
<p><img class="alignnone" src="http://pic.yupoo.com/iammutex/BEa0XwZj/medium.jpg" alt="" width="500" height="341" /></p>
<p>参考：<a href="http://www.mongodb.org/display/DOCS/How+does+concurrency+work" target="_blank">www.mongodb.org</a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="MongoDB系列教程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F348.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/09/14/30594564.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB系列教程</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="mongodb GridFS 介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F406.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/10/11640413.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">mongodb GridFS 介绍</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="简单的MongoDB" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F219.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/14/12198152.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">简单的MongoDB</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB1.5.2发布" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F236.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB1.5.2发布</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB:下一代MySQL？" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2215.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3610.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/29/14951789.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB:下一代MySQL？</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3610.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>10GT：NoSQLFan实验室的作品</title>
		<link>http://blog.nosqlfan.com/html/3598.html</link>
		<comments>http://blog.nosqlfan.com/html/3598.html#comments</comments>
		<pubDate>Sat, 31 Dec 2011 13:18:09 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[Redis]]></category>
		<category><![CDATA[10GT]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3598</guid>
		<description><![CDATA[10GT是在我学习NoSQL知识之余的一个小项目，我把它称作NoSQLFan实验室的作品。因为10GT存在的另一个身份是NoSQL技术的试验田，10GT在存储上全部采用NoSQL技术，目前主要采用了MongoDB和Redis。
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Cinderella 提供对MongoDB、Redis的支持" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F674.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/09/29/8330057.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cinderella 提供对MongoDB、Redis的支持</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="使用Cacti监控MongoDB和Redis" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3208.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/09/8799502.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">使用Cacti监控MongoDB和Redis</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Bump的Redis应用经验" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2460.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/07/17/17864990.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Bump的Redis应用经验</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="10gen发布MongoDB监控系统MMS" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3171.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/09/29/8314272.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">10gen发布MongoDB监控系统MMS</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Cassandra、MongoDB、CouchDB、Redis、Riak、HBase比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1845.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cassandra、MongoDB、CouchDB、Redis、Riak、HBase比较</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><a href="http://10gt.com" target="_blank">10GT</a>（10gt.com）是在我学习NoSQL知识之余的一个小项目，我把它称作NoSQLFan实验室的作品。因为<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/10gt" title="查看 10GT 的全部文章" target="_blank">10GT</a></span>存在的另一个身份是NoSQL技术的试验田，10GT在存储上全部采用NoSQL技术，目前主要采用了<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/mongodb" title="查看 MongoDB 的全部文章" target="_blank">MongoDB</a></span>和<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/redis" title="查看 Redis 的全部文章" target="_blank">Redis</a></span>。</p>
<h3>10GT是什么？</h3>
<p>10GT是一个发现分享的小社区，我希望你可以在上面发布你觉得好玩或者有用的信息，同时在上面你也能看到其它人分享的信息。而这一切，都基于NoSQL存储。</p>
<h3>内容存储</h3>
<p>10GT的内容分为主题和回复两大块，这两大块都在MongoDB中进行存储。MongoDB的schema-free特性非常适合主题中tag的存储和检索。</p>
<p>10GT中对用户，主题和回复都会生成一个唯一的自增ID，这是通过MongoDB的findAndModify命令实现的。</p>
<h3>消息队列</h3>
<p>10GT中的站点日志，搜索，消息提醒，都是通过消息队列在后台完成，而这个消息队列是通过Redis的list结构实现的。</p>
<h3>搜索提示</h3>
<p>10GT提供搜索提示功能，这里包含了两块内容。</p>
<p>一块是对tag的搜索提示，比如你输入m，搜索提示会提示你mongodb，mongohub这些标签，而输入r，搜索提示会提示你redis，redis cluster这些标签。这一功能的实现也主要采用了Redis，通过将标签进行前缀切分，比如redis会被切分成r，re，red，redi，redis等几部分，以这些前缀作为key，我们用一个zsets结构来存放所有包含这些前缀的tag，这样当你输入一个r的时候，我们就能从zsets里取出相关的tag了。</p>
<p>类似的，主题检索的提示也是类似的，不同的是并非采用前缀切分的方法，而是做了标题分词，比如“NoSQLFan是个好网站” 这句话，可能会被分出“NoSQLFan”，“网站”两个词，通过这两个词作为key构建zsets，我们就能够将所有包含某一关键词的主题放到同一个zsets中。这样当你输入NoSQLFan时，所有标题中包含NoSQLFan的文章就被检索出来了，其实也就是用Redis存储倒排索引信息。目前我们暂时不考虑做正文的全文索引。</p>
<p>可能你会问，上面两个为什么要用zsets，用set不行吗？原因是我们会对检索内容添加权重，并将这个权重作为zsets的score值，权重主要由下面两部分构成，一是对应的tag被添加的次数，或者对应的主题被回复的次数，二是对应的tag或主题在搜索提示中被点击的次数。因为我们认为搜索提示出现后，用户点击越频繁的，越是其需要的结果，所以每个用户的点击，都会计入对应tag或主题的权重，这样通过zsets的自动排序，我们就能给出更合理的提示。</p>
<p>关于10GT与NoSQL和NoSQLFan的关系，就先讲到这里。10GT今天正式开放，欢迎大家来10GT分享有意思的主题。<a href="http://10gt.com"><span style="color: #ff0000;">猛击这里</span></a>！</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Cinderella 提供对MongoDB、Redis的支持" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F674.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/09/29/8330057.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cinderella 提供对MongoDB、Redis的支持</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="使用Cacti监控MongoDB和Redis" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3208.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/09/8799502.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">使用Cacti监控MongoDB和Redis</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Bump的Redis应用经验" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2460.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/07/17/17864990.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Bump的Redis应用经验</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="10gen发布MongoDB监控系统MMS" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3171.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/09/29/8314272.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">10gen发布MongoDB监控系统MMS</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Cassandra、MongoDB、CouchDB、Redis、Riak、HBase比较" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1845.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3598.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Cassandra、MongoDB、CouchDB、Redis、Riak、HBase比较</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3598.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Riaknostic：Riak的问题诊断医师</title>
		<link>http://blog.nosqlfan.com/html/3594.html</link>
		<comments>http://blog.nosqlfan.com/html/3594.html#comments</comments>
		<pubDate>Wed, 28 Dec 2011 16:47:33 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[NoSQL杂谈]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[Riak]]></category>
		<category><![CDATA[Riaknostic]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3594</guid>
		<description><![CDATA[最近Basho发布了一个Erlang脚本，名为Riaknostic，这一脚本的功能是对你的Riak服务进行诊断。Basho介绍说发布这一脚本的目的，在于让Riak的用户能够通过脚本更快速的定位自己出现的问题。<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Riak系统介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2936.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/03/8483713.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak系统介绍</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak源码阅读手记系列文章" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3066.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/03/8483713.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak源码阅读手记系列文章</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak的最终一致性实现原理" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2121.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/07/8484210.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak的最终一致性实现原理</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak全方位介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3180.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/03/8483713.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak全方位介绍</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak与MongoDB的对比" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2705.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/08/05/21193878.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak与MongoDB的对比</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Riaknostic" src="http://pic.yupoo.com/iammutex/BCTA21j3/8lgg9.jpg" alt="Riaknostic" width="145" height="240" />最近Basho发布了一个Erlang脚本，名为<a href="http://riaknostic.basho.com/" target="_blank">Riaknostic</a>，这一脚本的功能是对你的<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/riak" title="查看 Riak 的全部文章" target="_blank">Riak</a></span>服务进行诊断。Basho介绍说发布这一脚本的目的，在于让Riak的用户能够通过脚本更快速的定位自己出现的问题。比如简单的定位是内存问题，文件权限问题还是什么。</p>
<p><span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/riaknostic" title="查看 Riaknostic 的全部文章" target="_blank">Riaknostic</a></span>不仅能够对Riak在运行时的各项参数进行诊断，还能够在Riak没有运行时对操作系统进行一些监测。如果发现有问题，就会提出相应的建议以供参考。</p>
<p>Riaknostic的诊断参数有很多，比如下面这三个比较常规且重要的：</p>
<ul>
<li>Riak目前使用了多大的内存？</li>
<li>Riak的数据文件所在目录权限设置是否正确？</li>
<li>Riak的Server之前是否崩溃了，是否有dump文件可供分析？</li>
</ul>
<p>下面是一个简单的案例，使用Riaknostic检测到Riak之前的崩溃问题。</p>
<pre><strong>$ riak-admin diag</strong>
15:34:52.736 [warning] Riak crashed at Wed, 07 Dec 2011 21:47:50 GMT, leaving crash dump in /srv/riak/log/erl_crash.dump. Please inspect or remove the file.
15:34:52.736 [notice] Data directory /srv/riak/data/bitcask is not mounted with 'noatime'. Please remount its disk with the 'noatime' flag to improve performance.</pre>
<p>你可以在<a href="http://riaknostic.basho.com/" target="_blank">这里</a>找到Riaknostic的安装和更详细的使用方法。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Riak系统介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2936.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/03/8483713.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak系统介绍</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak源码阅读手记系列文章" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3066.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/03/8483713.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak源码阅读手记系列文章</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak的最终一致性实现原理" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2121.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/07/8484210.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak的最终一致性实现原理</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak全方位介绍" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3180.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/10/03/8483713.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak全方位介绍</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak与MongoDB的对比" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2705.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3594.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/08/05/21193878.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak与MongoDB的对比</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3594.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于MongoDB BSON格式的三个小问题</title>
		<link>http://blog.nosqlfan.com/html/3586.html</link>
		<comments>http://blog.nosqlfan.com/html/3586.html#comments</comments>
		<pubDate>Wed, 28 Dec 2011 16:28:51 +0000</pubDate>
		<dc:creator>nosqlfan</dc:creator>
				<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[bson]]></category>

		<guid isPermaLink="false">http://blog.nosqlfan.com/?p=3586</guid>
		<description><![CDATA[本文我们从几个问题入手，分析和了解MongoDB的BSON格式的一些特性及使用时的注意事项。
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="BSON：易于数据交换的格式" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2914.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/08/25/25069556.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">BSON：易于数据交换的格式</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB Auto-Sharding 的问题" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1244.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/07/21/18262722.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB Auto-Sharding 的问题</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak与MongoDB的对比" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2705.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/08/05/21193878.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak与MongoDB的对比</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Mongodb Mapreduce 初窥" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F383.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11641194.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Mongodb Mapreduce 初窥</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB1.5.2发布" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F236.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB1.5.2发布</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>本文我们从几个问题入手，分析和了解<span class='wp_keywordlink_affiliate'><a href="http://blog.nosqlfan.com/tags/mongodb" title="查看 MongoDB 的全部文章" target="_blank">MongoDB</a></span>的BSON格式的一些特性及使用时的注意事项。</p>
<h3>问题1：字符串与数字</h3>
<p><span style="color: #008000;"><strong>注：本问题的<strong>之前的</strong>讨论本人描述有误，忽略了字符串前面标识长度的4个字节。多谢Zang MingJie在评论中指出。下面内容已经更正。</strong></span></p>
<pre>{a:12}

{a:'12'}</pre>
<p>哪个更占空间？</p>
<pre>{a:1234}

{a:'1256'}</pre>
<p>又是哪个更占空间？</p>
<p>对于第二个例子，应该是后一个更占空间，而对于第一个例子呢，实际还是后一个更占空间。具体原因是：MongoDB对数字的存储分两个级别，一个32位的，一是64位的，如我们上面的例子，都是在32位能表达的范围内，所以数字型的占用4个字节，而字符串型的占用空间为其长度加上最后一位\0结束符，还要加上字符串前面用来标识字符串长度的4个字节，一共是五个字节。所以第一个例子中字符串占用8个字节，第二个例子中字符串占用10个字节。</p>
<p>同样的，在索引里也是一样，不过值得注意的是，字符串与数字在排序方式上不一样，所以在索引时，数字是按数字的方式比对大小，字符串是按字符串的方式比对大小，比如在字符串中，&#8217;12&#8242;是小于&#8217;2&#8242;的。</p>
<h3>问题2：对象与数组</h3>
<pre>{a:1,b:2,c:3}

{d:[1,2,3]}</pre>
<p>哪个更占空间？</p>
<p>可能你会觉得是第一个，因为它看起来长度更长，或者你还会觉得是因为它包含了每个字段的key值。而实际上呢？</p>
<p>答案是第二个会占用更多空间，因为BSON数据结构在存储数组类型时，是与对象类似的方法，比如第二条的存储实际上相当于这样：</p>
<pre>{'d':{'0':1,'1':2,'2':3}}</pre>
<h3>问题3：_id与$natural的排序</h3>
<p>MongoDB中有一个特殊的排序方法，叫$natural，当你指定按$natural排序的时候，相当于是按数据在磁盘上的组织顺序排序。而当你按自动生成的_id字段排序时，相当于是按插入时间排序。当不指定排序顺序的时候，MongoDB是按$natural排序的。这两个有什么差别吗？插入顺序与数据组织顺序不应该一样吗？答案是：有可能。</p>
<p>当MongoDB中的数据有变更时，可能会导致数据的移动，比如你先用下面的方式写入1000条数据：</p>
<pre>for(var i=0;i&lt;1000;i++)db.test.insert({_id:i,a:'1'})</pre>
<p>然后你分别使用下面命令按_id和$natural排序取出前一条结果：</p>
<pre>db.test.find().sort({_id:1}).limit(1)

db.test.find().sort({$natural:1}).limit(1)</pre>
<p>你得到的结果会是一样的。</p>
<p>这时候你进行一次update操作，将第一条记录的长度变长：</p>
<pre>db.test.update({},{a:'12'})</pre>
<p>再通过上面两种不同的排序方式取第一条，你会发现取到的结果还是一样的。</p>
<p>然后你再将第一条记录变长：</p>
<pre>db.test.update({},{a:'123'})</pre>
<p>再通过上面两种不同的排序方式取第一条，这时候你会看到，通过_id排序查到的还是原来那一条，而通过$natural查到的已经变成了第二条。这是什么原因呢？</p>
<p>当我们执行insert操作的时候，每条记录的长度为31，你可以通过下面命令查看到。</p>
<pre>Object.bsonsize(db.test.findOne());</pre>
<p>而当我们通过一次update，将a值变为&#8217;12&#8242;时，其长度变长了1字节，变成了32。当我们又一次将a值变为&#8217;123&#8242;时，其长度变成了33。那为什么记录长度从31到32的时候，按$natural查到的第一条还是原来的，但是长度从32变到33的时候，通过$natural查到的就变了呢？</p>
<p>先说为什么变了，因为MongoDB在记录长度变化后，发现当前记录所在空间后面没有空余的空间可供其变长。那么这条记录就会被删除然后移动到数据集的最后。这是为什么第二次我们通过$natural查到的第一条不是原来那条的原因。因为原来那条已经跑到最尾巴上去了。</p>
<p>但是为什么第一次增长长度时记录没有移动呢？可能你从数字31，32，33上已经看出点端倪来了。对，就是内存对齐，MongoDB每一条记录都会做4字节的内存对齐。所以在你刚插入的时候，记录长度虽然只有31字节，但是MongoDB会为它分配32字节（8*4）的空间。这时候在其末尾就有一字节的空闲，当你增长一字节的时候，这一字节的空闲正好可以用上。所以就不需要移动位置了。而第二次从32字节变成33字节，原有的空间已经不能装下了，所以会造成数据的移动。实际上4字节对齐，也同时造成一些空间的浪费。同时引起数据变长后移动上的不确定性。</p>
<p style="margin:0;padding:0;height:1px;overflow:hidden;">
    <script type="text/javascript"><!--
        var wumiiSitePrefix = "http://blog.nosqlfan.com";
        var wumiiEnableCustomPos = false;
        var wumiiParams = "&#038;num=6&#038;mode=3&#038;displayInFeed=1&#038;version=1.0.5.5&#038;pf=WordPress2.9.2";
    //--></script><script type="text/javascript" src="http://widget.wumii.com/ext/relatedItemsWidget.htm"></script><a href="http://www.wumii.com/widget/relatedItems.htm" style="border:0;"><img src="http://static.wumii.com/images/pixel.png" alt="无觅相关文章插件，快速提升流量" style="border:0;padding:0;margin:0;" /></a></p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">相关文章：</font></b></td>
    </tr>
    
        <tr>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="BSON：易于数据交换的格式" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2914.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/08/25/25069556.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">BSON：易于数据交换的格式</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB Auto-Sharding 的问题" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F1244.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/07/21/18262722.png" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB Auto-Sharding 的问题</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Riak与MongoDB的对比" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F2705.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/08/05/21193878.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Riak与MongoDB的对比</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="Mongodb Mapreduce 初窥" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F383.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://static.wumii.com/site_images/2011/06/09/11641194.gif" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Mongodb Mapreduce 初窥</font>
                    </a>
                </td>
                <td width="106" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="MongoDB1.5.2发布" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F236.html&from=http%3A%2F%2Fblog.nosqlfan.com%2Fhtml%2F3586.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 100px !important; height: 100px !important;" src="http://pic.yupoo.com/iammutex/B8sPBDdj/square.jpg" width="100px" height="100px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 106px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">MongoDB1.5.2发布</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://blog.nosqlfan.com/html/3586.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 32.498 seconds -->
<!-- Cached page served by WP-Cache -->

