<?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>AgilePHP &#187; 数据库</title>
	<atom:link href="http://www.agilephp.net/category/technology/%e6%95%b0%e6%8d%ae%e5%ba%93/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agilephp.net</link>
	<description>开发可以敏捷，人生需要慢慢体味</description>
	<lastBuildDate>Thu, 03 Nov 2011 11:53:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>第一次参加QClub的活动</title>
		<link>http://www.agilephp.net/2010/04/my-first-qclub-event/</link>
		<comments>http://www.agilephp.net/2010/04/my-first-qclub-event/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 14:43:07 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[云计算]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[校园]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[BeansDB]]></category>
		<category><![CDATA[QClub]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[百度]]></category>
		<category><![CDATA[豆瓣]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2010/04/%e7%ac%ac%e4%b8%80%e6%ac%a1%e5%8f%82%e5%8a%a0qclub%e7%9a%84%e6%b4%bb%e5%8a%a8/</guid>
		<description><![CDATA[去年也报过一次名，但是最后有事情所以就没有去。这周一收到的邮件，QClub有一个技术沙龙的活动，定在周六，想来自己周六也没有别的什么事情，就报名参加了，看到题目也是我感兴趣的内容。其一是由百度的黄容芳讲的《Web数据交互的艺术》，其二是由豆瓣的刘洪清讲的《分布式数据库BeansDB在豆瓣的应用》。 黄的演讲，如果去掉艺术二字，个人认为还是一个很好的演讲，其讲了Web数据的几种不同实现，其对长连接的分析十分清晰明了，不过黄把“轮询”写成了“轮循”，虽然是个小错误，但我觉得“轮询”解释了此事件的本质，即间隔一段时间轮流（轮）询问（询），而轮循仅能表达轮流循环的意思；关于数据压缩，主要讲到了两种主要的实施手段，一是使用类似YUI Compressor的压缩器主动对需要传输的内容进行“精简”，我觉得称之为“精简”更明确一点。另外一种是使用GZIP来做压缩，对于大型网站为了提高用户体验，加快网页的加载时间，这是两个很好的方法。后面说到的跨浏览器通信，则是我完全没有接触过的内容，主要是想解决当客户在同一台机器上打开不同的浏览器，或是使用同一浏览器同时打开某一页面时，各页面之间内容同步的问题，主要的解决方案是Flash。后面说到了数据在客户端的存储，提到了ie的UserData，Firefox的localStorage以及Flash和HTM5，却没有提Google Gears，百度是不是跟Google有仇？ 说到Flash，黄说Flash的覆盖率还不是很高，只有97%，百度能在乎剩下的3%，着实是挺令我惊讶，想中国的大多数网银和几年前的淘宝支付宝都不支持Firefox。不过我倒是很赞赏Apple的作法，宁愿支持html5也不愿意支持FLASH，不论苹果是否只是由商业利益做出的考虑，但是阻止flash来扰乱本来就已经很混乱的web标准，我是很赞同这样的作法的。 另外一位豆瓣的工程师刘讲的内容也吸引了很多人，我自己也被他的话题所吸引。说到分布式key-value数据库，自己早有耳闻，但是我一直不明白也一直不是很清楚这种类型的数据库如何被有效的利用在web2.0的应用中。豆瓣的作法是没有完全将MySQL替换掉，而是将那些结构化的数据依然保留在MySQL中，而将另外一些依据应用场景数量多，对一致性要求不是十分高、许多场景下是一次写入多次读出的数据存储在他们的分布式key-value数据库中。工业界追求第一位的并不是程序的理论上的最优性，而是在应用需求前提之下的性能和成本。key-value分布式数据库不是万能的，但是在一些场景之下，却可以解决应用的许多问题。豆瓣网的现行用户有3000多万，其每天处理的数据我觉得还算是一个不是非常巨大的场景，与twitter和facebook相比，其还要差一到两个层级。随着豆瓣的成长，希望能从他们那里得到更多的经验。 最近很忙，少有更新博客，可以在twitter上联系我。@bbiao 相关文章 在Live Writer中编辑WordPress博客 Python and RRD 健身<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/live-writer-and-wordpress/" rel="bookmark">在Live Writer中编辑WordPress博客</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2010/01/python-and-rrd/" rel="bookmark">Python and RRD</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2010/07/body-building/" rel="bookmark">健身</a><!-- (2)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p>去年也报过一次名，但是最后有事情所以就没有去。这周一收到的邮件，QClub有一个技术沙龙的活动，定在周六，想来自己周六也没有别的什么事情，就报名参加了，看到题目也是我感兴趣的内容。其一是由百度的黄容芳讲的《Web数据交互的艺术》，其二是由豆瓣的刘洪清讲的《分布式数据库BeansDB在豆瓣的应用》。</p>
<p>黄的演讲，如果去掉艺术二字，个人认为还是一个很好的演讲，其讲了Web数据的几种不同实现，其对长连接的分析十分清晰明了，不过黄把“轮询”写成了“轮循”，虽然是个小错误，但我觉得“轮询”解释了此事件的本质，即间隔一段时间轮流（轮）询问（询），而轮循仅能表达轮流循环的意思；关于数据压缩，主要讲到了两种主要的实施手段，一是使用类似<a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>的压缩器主动对需要传输的内容进行“精简”，我觉得称之为“精简”更明确一点。另外一种是使用GZIP来做压缩，对于大型网站为了提高用户体验，加快网页的加载时间，这是两个很好的方法。后面说到的跨浏览器通信，则是我完全没有接触过的内容，主要是想解决当客户在同一台机器上打开不同的浏览器，或是使用同一浏览器同时打开某一页面时，各页面之间内容同步的问题，主要的解决方案是Flash。后面说到了数据在客户端的存储，提到了<a href="http://msdn.microsoft.com/en-us/library/ms531424%28VS.85%29.aspx">ie的UserData</a>，Firefox的<a href="http://hacks.mozilla.org/2009/06/localstorage/">localStorage</a>以及Flash和HTM5，却没有提<a href="http://gears.google.com/">Google Gears</a>，百度是不是跟Google有仇？</p>
<p>说到Flash，黄说Flash的覆盖率还不是很高，只有97%，百度能在乎剩下的3%，着实是挺令我惊讶，想中国的大多数网银和几年前的淘宝支付宝都不支持Firefox。不过我倒是很赞赏Apple的作法，宁愿支持html5也不愿意支持FLASH，不论苹果是否只是由商业利益做出的考虑，但是阻止flash来扰乱本来就已经很混乱的web标准，我是很赞同这样的作法的。</p>
<p>另外一位豆瓣的工程师刘讲的内容也吸引了很多人，我自己也被他的话题所吸引。说到分布式key-value数据库，自己早有耳闻，但是我一直不明白也一直不是很清楚这种类型的数据库如何被有效的利用在web2.0的应用中。豆瓣的作法是没有完全将MySQL替换掉，而是将那些结构化的数据依然保留在MySQL中，而将另外一些依据应用场景数量多，对一致性要求不是十分高、许多场景下是一次写入多次读出的数据存储在他们的分布式key-value数据库中。工业界追求第一位的并不是程序的理论上的最优性，而是在应用需求前提之下的性能和成本。key-value分布式数据库不是万能的，但是在一些场景之下，却可以解决应用的许多问题。豆瓣网的现行用户有3000多万，其每天处理的数据我觉得还算是一个不是非常巨大的场景，与twitter和facebook相比，其还要差一到两个层级。随着豆瓣的成长，希望能从他们那里得到更多的经验。</p>
<p>最近很忙，少有更新博客，可以在twitter上联系我。<a href="http://twitter.com/bbiao">@bbiao</a></p>
<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/live-writer-and-wordpress/" rel="bookmark">在Live Writer中编辑WordPress博客</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2010/01/python-and-rrd/" rel="bookmark">Python and RRD</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2010/07/body-building/" rel="bookmark">健身</a><!-- (2)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2010/04/my-first-qclub-event/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Python and RRD</title>
		<link>http://www.agilephp.net/2010/01/python-and-rrd/</link>
		<comments>http://www.agilephp.net/2010/01/python-and-rrd/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 01:33:33 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python-pyrrd]]></category>
		<category><![CDATA[python-rrd]]></category>
		<category><![CDATA[python-rrdtool]]></category>
		<category><![CDATA[rrd]]></category>
		<category><![CDATA[rrdtool]]></category>
		<category><![CDATA[xenserver]]></category>
		<category><![CDATA[时序数据库]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2010/01/python-and-rrd/</guid>
		<description><![CDATA[RRD是Round Robin Database的意思，RRDTool是用来管理RRD的一个工具。RRDTool的主页在这里，Wikipedia的页面在这里。RRD其实就是一个时序数据库，使用一个固定大小的环型buffer，适用于存储一些统计性的信息，如CPU负载呀，气温变化呀。我为什么要说这个东西呢，因为XenServer里的性能统计是用的RRD，你可以访问诸如http://xenserver-host/rrd_updates?cf=AVERAGE&#38;interval=5&#38;start=123131321形式的网址来获取统计信息。XenServer将返回一个XML文件，这个XML文件其实就是用rrdtool里的export工具导出的。 好，下载完成了这个文件以后，我们假设文件名是data.xml，你可以使用rrdtool restore data.xml data.rrd的方式将数据重新恢复成rrd的格式，然后就可以使用rrdtool进行一系列操作。rrdtool的操作可以写十篇博客，这不是我今天想说的重点。 我今天想说的是，当我把rrdtool跟Python集成的时候，发现Python提供了若干封装的工具，比如Python-PyRRD，Python-rrd，Python-rrdtool，我想没几个人能搞明白这几者之间的关系吧。我来说一下。 Python-rrdtool，这个就是rrdtool的一个Python封装，调用方式与rrdtool里命令的格式是一致的。 Python-rrd，这个据说应该是rrdtool的前身，命名方式不符合Python的命名策略，所以改名成了Python-rrdtool，但是debian和ubuntu的源里还保留了一个过渡性质的傀儡包（transitional dummy package），其实就是Python-rrdtool Python-PyRRD，这个是OO化的rrdtool封装，个人比较推荐用这个包，方便，代码也更容易让人理解。 另外，Java也提供了两个rrdtool的封装，一个是JRobin，一个是rrd4j，后者是在前者的基础上做的，提供了更好的OO的支持和性能。但是这两个项目似乎更新得很慢，XenServer导出的rrd数据（version 0003）他们现在不支持（只支持到version 0001）。所以想用Java分析XenServer的性能，还是自己去解析那个xml文件吧。 相关文章 在Google App Engine上进行开发 了解一些“云” AOP in PHP<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/dev-in-google-app-engine/" rel="bookmark">在Google App Engine上进行开发</a><!-- (8)--></li>
		<li><a href="http://www.agilephp.net/2009/08/cloud-to-overview/" rel="bookmark">了解一些“云”</a><!-- (4.8)--></li>
		<li><a href="http://www.agilephp.net/2009/09/aop-in-php/" rel="bookmark">AOP in PHP</a><!-- (3.8)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p>RRD是Round Robin Database的意思，<a href="http://oss.oetiker.ch/rrdtool/ " target="_blank">RRDTool</a>是用来管理RRD的一个工具。<a href="http://oss.oetiker.ch/rrdtool/ " target="_blank">RRDTool</a>的<a href="http://oss.oetiker.ch/rrdtool/ " target="_blank">主页</a>在这里，Wikipedia的页面在<a href="http://en.wikipedia.org/wiki/RRDtool" target="_blank">这里</a>。RRD其实就是一个时序数据库，使用一个固定大小的<a href="http://en.wikipedia.org/wiki/Circular_buffer" target="_blank">环型buffer</a>，适用于存储一些统计性的信息，如CPU负载呀，气温变化呀。我为什么要说这个东西呢，因为XenServer里的性能统计是用的RRD，你可以访问诸如<a href="http://xenserver-host/rrd_updates?cf=AVERAGE&amp;interval=5&amp;start=123131321">http://xenserver-host/rrd_updates?cf=AVERAGE&amp;interval=5&amp;start=123131321</a>形式的网址来获取统计信息。XenServer将返回一个XML文件，这个XML文件其实就是用rrdtool里的export工具导出的。</p>
<p>好，下载完成了这个文件以后，我们假设文件名是data.xml，你可以使用rrdtool restore data.xml data.rrd的方式将数据重新恢复成rrd的格式，然后就可以使用rrdtool进行一系列操作。rrdtool的操作可以写十篇博客，这不是我今天想说的重点。</p>
<p>我今天想说的是，当我把rrdtool跟Python集成的时候，发现Python提供了若干封装的工具，比如Python-PyRRD，Python-rrd，Python-rrdtool，我想没几个人能搞明白这几者之间的关系吧。我来说一下。</p>
<p>Python-rrdtool，这个就是rrdtool的一个Python封装，调用方式与rrdtool里命令的格式是一致的。</p>
<p>Python-rrd，这个据说应该是rrdtool的前身，命名方式不符合Python的命名策略，所以改名成了Python-rrdtool，但是debian和ubuntu的源里还保留了一个过渡性质的傀儡包（transitional dummy package），其实就是Python-rrdtool</p>
<p>Python-PyRRD，这个是OO化的rrdtool封装，个人比较推荐用这个包，方便，代码也更容易让人理解。</p>
<p>另外，Java也提供了两个rrdtool的封装，一个是<a href="http://www.jrobin.org/" target="_blank">JRobin</a>，一个是<a href="https://rrd4j.dev.java.net/" target="_blank">rrd4j</a>，后者是在前者的基础上做的，提供了更好的OO的支持和性能。但是这两个项目似乎更新得很慢，XenServer导出的rrd数据（version 0003）他们现在不支持（只支持到version 0001）。所以想用Java分析XenServer的性能，还是自己去解析那个xml文件吧。</p>
<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/10/dev-in-google-app-engine/" rel="bookmark">在Google App Engine上进行开发</a><!-- (8)--></li>
		<li><a href="http://www.agilephp.net/2009/08/cloud-to-overview/" rel="bookmark">了解一些“云”</a><!-- (4.8)--></li>
		<li><a href="http://www.agilephp.net/2009/09/aop-in-php/" rel="bookmark">AOP in PHP</a><!-- (3.8)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2010/01/python-and-rrd/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

