﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-cerulean-随笔分类-DB</title><link>http://www.blogjava.net/cerulean/category/19907.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 19 Dec 2007 17:20:38 GMT</lastBuildDate><pubDate>Wed, 19 Dec 2007 17:20:38 GMT</pubDate><ttl>60</ttl><item><title>MySQL Cluster </title><link>http://www.blogjava.net/cerulean/archive/2007/12/17/168338.html</link><dc:creator>cerulean</dc:creator><author>cerulean</author><pubDate>Mon, 17 Dec 2007 13:38:00 GMT</pubDate><guid>http://www.blogjava.net/cerulean/archive/2007/12/17/168338.html</guid><wfw:comment>http://www.blogjava.net/cerulean/comments/168338.html</wfw:comment><comments>http://www.blogjava.net/cerulean/archive/2007/12/17/168338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cerulean/comments/commentRss/168338.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cerulean/services/trackbacks/168338.html</trackback:ping><description><![CDATA[<p>MySQL Cluster 不支持windows<br />
之前的说法是max版支持集群，standard版不支持，但是官方下载点里已经看不出任何关于max,standard的标志。官方网站上又说5.0版本已经包含了MySQL Cluster，所以还是下了个5.0的试试，结果是可以的。</p>
<p><strong>基本的安装：</strong><br />
linux下官方网站的安装说明还是挺明确的，一步一步做就是了。<br />
遇到了一个问题与这篇文章一模一样：<a href="http://www.91linux.com/html/linux_pub/fedora/20071114/8195.html">http://www.91linux.com/html/linux_pub/fedora/20071114/8195.html</a><br />
按它的方法修改之后再次</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">cd&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">mysql<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />bin</span><span style="color: #000000">/</span><span style="color: #000000">mysqld_safe&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">user</span><span style="color: #000000">=</span><span style="color: #000000">mysql&nbsp;</span><span style="color: #000000">&amp;</span></div>
<p><br />
Starting mysqld daemon with databases from /var/lib/mysql<br />
看到上面这一行说明启动成功。</p>
<p><strong>修改密码：</strong></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">mysqladmin&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">u&nbsp;root&nbsp;password&nbsp;yourpassword</span></div>
<p><br />
<strong>允许远程访问：</strong></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">mysql&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">u&nbsp;root&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">p<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />grant&nbsp;all&nbsp;on&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">.</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;to&nbsp;root@</span><span style="color: #000000">"</span><span style="color: #000000">202.11.10.253</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Identified&nbsp;by&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">dboomysql</span><span style="color: #000000">"</span></div>
<p>允许地址202.11.10.253上用root用户，密码dboomysql来连接mysql的所有数据库，付给所有权限。<br />
实质上是修改了自带的database:mysql中user这一张表，与PostgreSQL需要修改配置文件相比还是方便一些。<br />
另外就是MySQL的GUI客户端(MySQL Administrator)也比PostgreSQL的漂亮很多。</p>
<p><strong>停止MySQL：<br />
</strong>bin/mysqladmin -u root shutdown -p</p>
<p>安装完成后，按照这篇文章配置<strong>双机互备</strong>：<br />
<a href="http://hi.baidu.com/%CA%AB%D5%B9/blog/item/3b99dbc48140f7ca38db49f7.html">http://hi.baidu.com/%CA%AB%D5%B9/blog/item/3b99dbc48140f7ca38db49f7.html</a><br />
但是这篇文章有笔误：</p>
<p style="color: #666699">四、初始化集群<br />
在Server1中<br />
# ndbd --nodeid=3 --initial<br />
在Server2中<br />
# ndbd --nodeid=4 --iniitial</p>
<p>应该改为——<br />
<span style="color: #0000ff">四、初始化集群<br />
在Server1中<br />
# ndbd --<strong>ndb_nodeid</strong>=3 --initial<br />
在Server2中<br />
# ndbd --<strong>ndb_nodeid</strong>=4 --initial</span></p>
<p>这样的集群配置两台机器都是一样的，所以有2个管理节点，2个SQL节点，2个数据节点。集群的验证：从任何一台机器登上去操作数据都能双写。</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">ndb_mgm&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">e&nbsp;show</span></div>
<p>可以看到集群节点的信息。<br />
从官方网站上看到的例子都是用了多于3台的机器来做的集群，仅用两台来做的方法好像是大家特意这么做的。<br />
<br />
尽管集群配置完毕，但是应用程序与数据库建立连接不能使用其中任何一台机器的真实IP，否则一旦该机器网络连接出问题还是不行，所以还是要给DB集群的机器配置虚拟IP以供外部访问。</p>
<p><br />
<strong>遇到过的问题：<br />
</strong>无法mysqld_safe启动，也找不到日志<br />
<em>解决方法：</em>加启动参数以指定日志</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">mysqld_safe&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">log</span><span style="color: #000000">-</span><span style="color: #000000">error</span><span style="color: #000000">=/</span><span style="color: #000000">var</span><span style="color: #000000">/</span><span style="color: #000000">log</span><span style="color: #000000">/</span><span style="color: #000000">mysqld.log</span></div>
<p>可以查看到错误日志了。<br />
<br />
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist <br />
没辙，google呗，好像是系统数据库mysql里host表的权限有问题什么的，而mysql这个库是之前安装时初始化过的。</p>
<p><em>解决方法：</em>删除data，重新install_db</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">rm&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">rf&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">mysql</span><span style="color: #000000">/</span><span style="color: #000000">data<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />cd&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">mysql<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />scripts</span><span style="color: #000000">/</span><span style="color: #000000">mysql_install_db&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">user</span><span style="color: #000000">=</span><span style="color: #000000">mysql<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />chown&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">R&nbsp;root&nbsp;.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />chown&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">R&nbsp;mysql&nbsp;data<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />chgrp&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">R&nbsp;mysql&nbsp;.</span></div>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">bin</span><span style="color: #000000">/</span><span style="color: #000000">mysqld_safe&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">log</span><span style="color: #000000">-</span><span style="color: #000000">error</span><span style="color: #000000">=/</span><span style="color: #000000">var</span><span style="color: #000000">/</span><span style="color: #000000">log</span><span style="color: #000000">/</span><span style="color: #000000">mysqld.log&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">ndb_nodeid</span><span style="color: #000000">=</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">user</span><span style="color: #000000">=</span><span style="color: #000000">mysql&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>启动成功了。<br />
<br />
btw, mysql官方网的forum好像不能&#8220;平板显示&#8221;，好不方便。</p>
<p><br />
关闭Cluster，在管理节点所在的机器上：<br />
/usr/local/mysql/ndb_mgm -e shutdown<br />
关闭SQL节点的mysqld服务：<br />
/usr/local/mysql/bin/mysqladmin -uroot shutdown<br />
</p>
<img src ="http://www.blogjava.net/cerulean/aggbug/168338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cerulean/" target="_blank">cerulean</a> 2007-12-17 21:38 <a href="http://www.blogjava.net/cerulean/archive/2007/12/17/168338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL语句：between...and是闭区间</title><link>http://www.blogjava.net/cerulean/archive/2007/08/01/133732.html</link><dc:creator>cerulean</dc:creator><author>cerulean</author><pubDate>Wed, 01 Aug 2007 01:41:00 GMT</pubDate><guid>http://www.blogjava.net/cerulean/archive/2007/08/01/133732.html</guid><wfw:comment>http://www.blogjava.net/cerulean/comments/133732.html</wfw:comment><comments>http://www.blogjava.net/cerulean/archive/2007/08/01/133732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cerulean/comments/commentRss/133732.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cerulean/services/trackbacks/133732.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 10pt">如题</span>
<img src ="http://www.blogjava.net/cerulean/aggbug/133732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cerulean/" target="_blank">cerulean</a> 2007-08-01 09:41 <a href="http://www.blogjava.net/cerulean/archive/2007/08/01/133732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>海量数据库的存储问题</title><link>http://www.blogjava.net/cerulean/archive/2007/03/20/105098.html</link><dc:creator>cerulean</dc:creator><author>cerulean</author><pubDate>Tue, 20 Mar 2007 13:21:00 GMT</pubDate><guid>http://www.blogjava.net/cerulean/archive/2007/03/20/105098.html</guid><wfw:comment>http://www.blogjava.net/cerulean/comments/105098.html</wfw:comment><comments>http://www.blogjava.net/cerulean/archive/2007/03/20/105098.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cerulean/comments/commentRss/105098.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cerulean/services/trackbacks/105098.html</trackback:ping><description><![CDATA[
		<p>    以前上学的时候数据库学的是皮毛中的皮毛，唯一的课程设计也只是跑几个简单得很得SQL语句而已。无论是数据库设计，还是SQL语句的各种经典写法和强大功能都没有怎么好好地研究过。<br />        功能上的学习都不全面，就更不要提性能、安全和大数据量等等在实际应用中会遇到的问题勒。参与的一个项目中，就涉及到比较大量的数据量的处理和存储（当然处理大数据量就是另外一个问题勒）。加之分配给数据库所在的磁盘空间相当有限，造成了非常捉襟见肘的局面。<br />        幻想着有朝一日可以不为这些事情烦恼，像google,sina一样，用几十上百台配置一般的机器连起来也能作为一个强壮的server。<br /><br />从网上看到一些关于存储海量数据的讨论：<br />1、分表、分数据库<br />根据一定的规则把不同的数据库表分开<br />缺点：有一定风险，因为一旦分开存放的两个数据库表有朝一日需要“联表”操作，那么就郁闷了，而且最好是把几个数据量大的表分开，单独拎出来几个小表意义很不大，而且业务逻辑层的代码需要知道自己要处理的数据存在哪个服务器里，有一点儿奇怪。<br /><br /><font color="#808080"><font color="#000000">例如：（来自ball_lei）</font><br />        我现在采用的架构采用数据库群的方式，每个客户的数据单独存在一台数据库服务器上，所有的客户根据一定的规则安排存放的数据库服务器，在主数据库服务器上有一张-索引表保存客户与数据库服务器的对应关系，每台数据库服务器中用于存放这些数据的表按照月份分成12张，每张存放当月的全部客户的数据，目前计算出单台服务器-单表需要容纳9亿条数据，并且每台服务器在这种方式下可以容纳10000个客户的数据，以后客户数量增加时只需要增加数据库服务器即可。 <br />        程序逻辑，我采用业务逻辑层的概念，对外提供应用服务器接口，全部的客户端通过应用服务器接口进行业务运算，应用服务器我也采用服务器群的概念，有一个主的应用服务器，有几个副应用服务器，全部客户端只知道该主应用服务器的地址，上线时登陆主应用服务器，然后主应用服务器根据各台应用服务器的负载情况返回给客户端真正的登陆地址（副应用服务器的地址），然后客户端再登陆到上面进行业务处理，每台应用服务器都能够访问各台数据服务器进行数据提取。<br /><br />问题：需要每台应用服务器都配备一个公网ip么，还是有其他的方式可以只需要一个公网ip可以给全部的服务器公用？Nat能够实现么？或者能否进行更好的负载均衡，就是客户端的各种业务都可以在不同的服务器上运算<br /><br />改进：<br />用户规则配置应该不大，所以也可以做成配置一次Load到内存中。<br /><br />如此大数据量的项目竟不用Oracle,实在让人费解。我现在的月数据量大概2.5亿，用了3台HP <br />SUPERDEMO,9个CUSTERMOR DB。其中一个CATALOG数据库，相当于你的客户索引。 <br />你的插入操作很多，所以建议少建几个索引，其实一些业务完全可以在数据库中完成，通过触发器，约束和存储过程，这样性能会有大的提高。大数据的表，分区的确是必须的，当然，还需要更完善的维护计划，否则很容易，你的业务可能就会因为性能问题挂起了。</font></p>
		<p>1、通过（数据库+文件)方式进行数据存储</p>
		<p>2、集群方案</p>
		<p>还有当初选修的“分布式数据库”，不知道这个概念是不是能够活生生的用到项目中来。。。<br /></p>
<img src ="http://www.blogjava.net/cerulean/aggbug/105098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cerulean/" target="_blank">cerulean</a> 2007-03-20 21:21 <a href="http://www.blogjava.net/cerulean/archive/2007/03/20/105098.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C-JDBC</title><link>http://www.blogjava.net/cerulean/archive/2007/03/05/101984.html</link><dc:creator>cerulean</dc:creator><author>cerulean</author><pubDate>Mon, 05 Mar 2007 12:42:00 GMT</pubDate><guid>http://www.blogjava.net/cerulean/archive/2007/03/05/101984.html</guid><wfw:comment>http://www.blogjava.net/cerulean/comments/101984.html</wfw:comment><comments>http://www.blogjava.net/cerulean/archive/2007/03/05/101984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cerulean/comments/commentRss/101984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cerulean/services/trackbacks/101984.html</trackback:ping><description><![CDATA[
		<p>C-JDBC(Java 数据库连接群集)作为开发源码的数据库群集中间件，可以让任何应用程序通过JDBC能够透明的访问数据库群集。数据库可以分布在多个节点并可以进行数据复制，C-JDBC能够均衡在这些节点之间的查询负载。 C-JDBC通过软件来实现RAIDb(廉价数据库冗余阵列)。C-JDBC是GNU LGPL许可证下的ObjectWeb项目。<br /><a href="http://c-jdbc.objectweb.org/">http://c-jdbc.objectweb.org/</a>网站上的C-JDBC-Brochure-EN.pdf写的内容挺好。(C-JDBC)tutorial.pdf内容也挺翔实。</p>
		<p>大型应用随着用户量访问越来越大，增加数据库存储和做好数据库冗余可以增加系统的可靠性和性能。</p>
		<p>无需修改客户端应用程序，无需变更应用服务器或数据库服务器软件。C-JDBC的JDBC driver把SQL请求转给C-JDBC controller(负责在databases之间做负载均衡）<br />The database is distributed and replicated among several nodes and C-JDBC load balances the queries between these nodes.<br />就这一句话就太诱人了！<br /><br />上周的某一个上午，搞定C-JDBC的安装配置啦~<br />主要根据官方的user guide和这篇好文: <a href="http://huaronghu.spaces.live.com/blog/cns!B9A68E1C1CA857AD!288.entry">http://huaronghu.spaces.live.com/blog/cns!B9A68E1C1CA857AD!288.entry</a></p>
		<p>
				<br />
				<strong>准备工作：</strong>
				<br />环境：windows,postgreSQL,JDK<br />建立数据库“们”，安装若干db在若干server上，所以如果使用商业数据库的话，就会需要好几套的钱哪。<br />安装C-JDBC：<br />下载了binary版的c-jdbc-2.0.2-bin.zip，解压到作为C-JDBC server的机器上（e.g. C:\software\c-jdbc-2.0.2-bin），<br />设置环境变量,新增系统变量:CJDBC_HOME =C:\software\c-jdbc-2.0.2-bin<br />把实际使用的数据库的JDBC driver（例如mysql-connector-java-3.1.12-bin.jar ，postgresql-8.0.309.jdbc2.jar）拷贝到c-jdbc/drivers 中<br /><br /><strong>配置文件：</strong><br />在c-jdbc-2.0.2-bin/config/virtualdatabase目录中创建虚拟数据库配置文件。<br />里面DatabaseBackend 标签中定义的就是被集群的数据库。<br />试验时，创建了文件：postgresql-raidb1-distribution.xml，使用了2个postgreSQL数据库，采用了全复制的方法。<br />注意，如果采用全复制，所以在2个数据库上建库、建表的全部脚本都要完全相同，否则将会报出mismatch的错误。<br />目前感觉配置里面最有用的配置就是&lt;AuthenticationManager&gt;，&lt;DatabaseBackend&gt;和&lt;LoadBalancer&gt;（还没有仔细看）。<br />配置时可以参考已经提供的例子，c-jdbc-2.0.2-bin/config/RAIDb-1-full-example.xml，里面对每一个属性都有比较详细的注释，DatabaseBackend中还有各个开源数据库连接的例子，挺贴心的。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;?</span>
				<span style="COLOR: #ff00ff">xml version="1.0" encoding="UTF8"</span>
				<span style="COLOR: #0000ff">?&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;!</span>
				<span style="COLOR: #ff00ff">DOCTYPE C-JDBC PUBLIC "-//ObjectWeb//DTD C-JDBC 2.0.2//EN" "http://c-jdbc.objectweb.org/dtds/c-jdbc-2.0.2.dtd"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">C-JDBC</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">VirtualDatabase </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="myDB"</span>
				<span style="COLOR: #ff0000"> maxNbOfConnections</span>
				<span style="COLOR: #0000ff">="20"</span>
				<span style="COLOR: #ff0000"> minNbOfThreads</span>
				<span style="COLOR: #0000ff">="1"</span>
				<span style="COLOR: #ff0000"> maxNbOfThreads</span>
				<span style="COLOR: #0000ff">="20"</span>
				<span style="COLOR: #ff0000"> blobEncodingMethod</span>
				<span style="COLOR: #0000ff">="hexa"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">AuthenticationManager</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">Admin</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">User </span>
				<span style="COLOR: #ff0000">username</span>
				<span style="COLOR: #0000ff">="admin"</span>
				<span style="COLOR: #ff0000"> password</span>
				<span style="COLOR: #0000ff">="c-jdbc"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">Admin</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">VirtualUsers</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">VirtualLogin </span>
				<span style="COLOR: #ff0000">vLogin</span>
				<span style="COLOR: #0000ff">="boss"</span>
				<span style="COLOR: #ff0000"> vPassword</span>
				<span style="COLOR: #0000ff">="boss"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">VirtualUsers</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">AuthenticationManager</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">DatabaseBackend </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="postgreSQLNode114"</span>
				<span style="COLOR: #ff0000"> driver</span>
				<span style="COLOR: #0000ff">="org.postgresql.Driver"</span>
				<span style="COLOR: #ff0000"> url</span>
				<span style="COLOR: #0000ff">="jdbc:postgresql://10.10.0.114:5432/clusterdb"</span>
				<span style="COLOR: #ff0000"> connectionTestStatement</span>
				<span style="COLOR: #0000ff">="select now()"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">DatabaseSchema </span>
				<span style="COLOR: #ff0000">dynamicPrecision</span>
				<span style="COLOR: #0000ff">="column"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">ConnectionManager </span>
				<span style="COLOR: #ff0000">vLogin</span>
				<span style="COLOR: #0000ff">="boss"</span>
				<span style="COLOR: #ff0000"> rLogin</span>
				<span style="COLOR: #0000ff">="postgres9"</span>
				<span style="COLOR: #ff0000"> rPassword</span>
				<span style="COLOR: #0000ff">="12345"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">RandomWaitPoolConnectionManager </span>
				<span style="COLOR: #ff0000">poolSize</span>
				<span style="COLOR: #0000ff">="20"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">ConnectionManager</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">DatabaseBackend</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">DatabaseBackend </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="postgreSQLNode155"</span>
				<span style="COLOR: #ff0000"> driver</span>
				<span style="COLOR: #0000ff">="org.postgresql.Driver"</span>
				<span style="COLOR: #ff0000"> url</span>
				<span style="COLOR: #0000ff">="jdbc:postgresql://10.10.0.155:5432/clusterdb"</span>
				<span style="COLOR: #ff0000"> connectionTestStatement</span>
				<span style="COLOR: #0000ff">="select now()"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">DatabaseSchema </span>
				<span style="COLOR: #ff0000">dynamicPrecision</span>
				<span style="COLOR: #0000ff">="column"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">ConnectionManager </span>
				<span style="COLOR: #ff0000">vLogin</span>
				<span style="COLOR: #0000ff">="boss"</span>
				<span style="COLOR: #ff0000"> rLogin</span>
				<span style="COLOR: #0000ff">="postgres"</span>
				<span style="COLOR: #ff0000"> rPassword</span>
				<span style="COLOR: #0000ff">="abcde"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">RandomWaitPoolConnectionManager </span>
				<span style="COLOR: #ff0000">poolSize</span>
				<span style="COLOR: #0000ff">="20"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">ConnectionManager</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">DatabaseBackend</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">RequestManager</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">RequestScheduler</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">RAIDb-1Scheduler </span>
				<span style="COLOR: #ff0000">level</span>
				<span style="COLOR: #0000ff">="passThrough"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">RequestScheduler</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">RequestCache</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">MetadataCache </span>
				<span style="COLOR: #ff0000">maxNbOfMetadata</span>
				<span style="COLOR: #0000ff">="10000"</span>
				<span style="COLOR: #ff0000"> maxNbOfField</span>
				<span style="COLOR: #0000ff">="0"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">ParsingCache </span>
				<span style="COLOR: #ff0000">backgroundParsing</span>
				<span style="COLOR: #0000ff">="false"</span>
				<span style="COLOR: #ff0000"> maxNbOfEntries</span>
				<span style="COLOR: #0000ff">="5000"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">   <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">ResultCache </span>
				<span style="COLOR: #ff0000">granularity</span>
				<span style="COLOR: #0000ff">="table"</span>
				<span style="COLOR: #ff0000"> maxNbOfEntries</span>
				<span style="COLOR: #0000ff">="100000"</span>
				<span style="COLOR: #ff0000"> pendingTimeout</span>
				<span style="COLOR: #0000ff">="0"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">ResultCacheRule </span>
				<span style="COLOR: #ff0000">queryPattern</span>
				<span style="COLOR: #0000ff">="default"</span>
				<span style="COLOR: #ff0000"> timestampResolution</span>
				<span style="COLOR: #0000ff">="1000"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />             </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">EagerCaching</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">ResultCacheRule</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">ResultCache</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">RequestCache</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LoadBalancer</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">RAIDb-1</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">RAIDb-1-LeastPendingRequestsFirst</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">RAIDb-1</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">LoadBalancer</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">RequestManager</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">VirtualDatabase</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">C-JDBC</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p> </p>
		<p>在c-jdbc-2.0.2-bin/config/controller目录中创建一个c-jdbc controller的配置文件。<br />试验时，创建的配置文件为：uud-controller-distributed.xml<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;?</span>
				<span style="COLOR: #ff00ff">xml version="1.0" encoding="UTF8" </span>
				<span style="COLOR: #0000ff">?&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;!</span>
				<span style="COLOR: #ff00ff">DOCTYPE C-JDBC-CONTROLLER PUBLIC "-//ObjectWeb//DTD C-JDBC-CONTROLLER 2.0.2//EN"  "http://c-jdbc.objectweb.org/dtds/c-jdbc-controller-2.0.2.dtd"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">C-JDBC-CONTROLLER</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">Controller </span>
				<span style="COLOR: #ff0000">port</span>
				<span style="COLOR: #0000ff">="25322"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">Report</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">JmxSettings</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">RmiJmxAdaptor </span>
				<span style="COLOR: #ff0000">port</span>
				<span style="COLOR: #0000ff">="1091"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">JmxSettings</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">VirtualDatabase </span>
				<span style="COLOR: #ff0000">configFile</span>
				<span style="COLOR: #0000ff">="postgresql-raidb1-distribution.xml"</span>
				<span style="COLOR: #ff0000"> virtualDatabaseName</span>
				<span style="COLOR: #0000ff">="myDB"</span>
				<span style="COLOR: #ff0000"> autoEnableBackends</span>
				<span style="COLOR: #0000ff">="true"</span>
				<span style="COLOR: #ff0000"> checkpointName</span>
				<span style="COLOR: #0000ff">="Initial_empty_recovery_log"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">Controller</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">C-JDBC-CONTROLLER</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
		<p> </p>
		<p>注意：Controller和VirtualMachine的配置文件不能采用相同的文件名<br /><br /><strong>启动：</strong><br />在c-jdbc-2.0.2-bin\bin目录下，运行controller.bat -f ../config/controller/uud-controller-distributed.xml<br />unix用户使用controller.sh来启动controller<br /><br /><strong>截图：（下回补）<br /></strong>凑合看一下吧，控制台的正常输出：<br />C:\software\c-jdbc-2.0.2-bin\bin&gt;controller.bat -f ../config/controller/uud-cont<br />roller-distributed.xml<br />2007-03-07 15:16:44,017 INFO  controller.core.Controller C-JDBC controller (2.0.<br />2)<br />2007-03-07 15:16:44,439 INFO  controller.core.Controller Loading configuration f<br />ile: ../config/controller/uud-controller-distributed.xml<br />2007-03-07 15:16:44,752 INFO  controller.core.Controller JMX is enabled<br />2007-03-07 15:16:44,830 INFO  controller.core.Controller Starting JMX server on<br />host: 10.10.0.155<br />2007-03-07 15:16:46,376 INFO  backend.DatabaseBackend.postgreSQLNode114 Adding c<br />onnection manager for virtual user "boss"<br />2007-03-07 15:16:46,501 INFO  backend.DatabaseBackend.postgreSQLNode155 Adding c<br />onnection manager for virtual user "boss"<br />2007-03-07 15:16:46,642 INFO  controller.RequestManager.myDB Request manager wil<br />l parse requests with the following granularity: TABLE<br />2007-03-07 15:16:46,657 WARN  controller.virtualdatabase.myDB No recovery log ha<br />s been configured, enabling backend without checkpoint.<br />2007-03-07 15:16:48,641 INFO  backend.DatabaseBackend.postgreSQLNode114 Detected<br /> backend as: PostgreSQL<br />2007-03-07 15:16:49,063 WARN  backend.DatabaseBackend.postgreSQLNode114 Statemen<br />t.getGeneratedKeys not supported.<br />2007-03-07 15:16:49,579 INFO  backend.DatabaseBackend.postgreSQLNode114 Gatherin<br />g database schema<br />2007-03-07 15:16:49,782 INFO  controller.RequestManager.myDB Setting new virtual<br /> database schema.<br />2007-03-07 15:16:49,782 INFO  cjdbc.controller.cache Setting new database schema<br />.<br />2007-03-07 15:16:49,782 INFO  controller.loadbalancer.RAIDb1 Adding blocking tas<br />k worker thread for backend postgreSQLNode114<br />2007-03-07 15:16:49,797 INFO  controller.loadbalancer.RAIDb1 Adding non blocking<br /> task worker thread for backend postgreSQLNode114<br />2007-03-07 15:16:49,797 INFO  controller.RequestManager.myDB Database backend po<br />stgreSQLNode114 is now enabled<br />2007-03-07 15:16:50,922 INFO  backend.DatabaseBackend.postgreSQLNode155 Detected<br /> backend as: PostgreSQL<br />2007-03-07 15:16:51,328 WARN  backend.DatabaseBackend.postgreSQLNode155 Statemen<br />t.getGeneratedKeys not supported.<br />2007-03-07 15:16:52,172 INFO  backend.DatabaseBackend.postgreSQLNode155 Gatherin<br />g database schema<br />2007-03-07 15:16:52,390 INFO  controller.RequestManager.myDB Virtual database sc<br />hema merged with new schema.<br />2007-03-07 15:16:52,390 INFO  cjdbc.controller.cache Merging new database schema</p>
		<p>2007-03-07 15:16:52,390 INFO  controller.loadbalancer.RAIDb1 Adding blocking tas<br />k worker thread for backend postgreSQLNode155<br />2007-03-07 15:16:52,390 INFO  controller.loadbalancer.RAIDb1 Adding non blocking<br /> task worker thread for backend postgreSQLNode155<br />2007-03-07 15:16:52,406 INFO  controller.RequestManager.myDB Database backend po<br />stgreSQLNode155 is now enabled<br />2007-03-07 15:16:52,422 WARN  VirtualDatabaseWorkerThread.myDB.metadata Metadata<br /> key [getMaxColumnsInIndex] is not compatible. (Backends are: [jdbc:postgresql:/<br />/10.10.0.114:5432/clusterdb] and [jdbc:postgresql://10.10.0.155:5432/clu<br />sterdb] ; Values are:[32] and [0])<br />2007-03-07 15:16:52,422 INFO  controller.core.Controller Adding VirtualDatabase<br />myDB<br />2007-03-07 15:16:52,437 INFO  controller.core.Controller Waiting for connections<br /> on 0.0.0.0:25322<br />2007-03-07 15:16:52,469 INFO  controller.core.Controller Controller started on 2<br />007.03.07 10 at 03:16:52 下午 GMT+08:00<br />2007-03-07 15:16:52,484 INFO  controller.core.Controller Controller 10.10.0.<br />155:25322 ready, listening to requests ...</p>
		<p>
				<br />
				<br />
				<strong>遇到过的问题：<br /></strong>1、<br />刚启动没一会儿，就看到config文件读取错误，控制台信息也就此结束。<br />解决方法：controller.bat -f filename中filename的相对路径和文件名竟然都写错了，汗。。。。<br /><br />2、<br />启动时，控制台抛出ERROR以及exception，大意是connection failed, IP没有配置到pg_hba.conf中<br />解决方法：虽然是连本机的一个数据库，但是由于数据库连接的url里面写的是IP地址，所以仍然要把本机的IP地址配置到pg_hba.conf以允许其访问。<br /><br />3、<br />还是启动时抛错了，Connection test failed(org.postgresql.util.PSQLException:Backend start-up failed:FATAL:role "boss_user" does not exist.)<br />解决方法：原来是在自己写的.xml配置文件中，DatabaseBackend标签里面写的用户名和密码需要是真实数据库的真实用户名和密码。</p>
		<p>最后都整好了,但是遇到一个warn的log：<br />backend.DatabaseBackend.postgreSQLNode155 Statement.getGeneratedKeys not supported<br />至今不知道是什么问题,有什么影响.<br /><br /><strong>代码部分：</strong><br />只需要修改应用程序用到的jdbc driver的配置，把c-jdbc/drivers/目录下的c-jdbc-driver.jar拷贝到应用程序的工程里，并加入到class-path中。<br />之前是使用 Class.forName("com.somevendor.jdbcDriver.Driver") 去连接某特定的数据库<br />现在是使用 Class.forName("org.objectweb.cjdbc.driver.Driver") 统一处理。<br />连接字符串：DriverManager.getConnection("jdbc:cjdbc://localhost:25322/mycjdbc") 取得数据库连接。</p>
		<p>c-jdbc server称为c-jdbc controller，聆听请求们<br />其他所有通过c-jdbc来访问的DB们称为db backends.</p>
		<p>jdbc:cjdbc://host1:port1,host2:port2/database<br />host是指跑着c-jdbc controller的机器IP，port是指controller监听客户端链接的端口，默认端口号：25322 <br />注意，不仅真正的DB安装多个在多个机器上，c-jdbc controller也可以安在不同的机器上,这样可以防止一个c-jdbc 坏掉带来的风险。<br />例如：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">Class.forName(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">org.objectweb.cjdbc.driver.Driver</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />DriverManager.getConnection(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">jdbc:cjdbc://c1.objectweb.org,c2.objectweb.org/tpcw</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">); </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">不验证用户名密码</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">DriverManager.getConnection(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">jdbc:cjdbc://host/db?user=me&amp;password=secret</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">)</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">验证用户名密码的写法1</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">DriverManager.getConnection(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">jdbc:cjdbc://host/db;user=me;password=secret</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">)</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">验证用户名密码的写法2</span>
		</div>
		<p>然后可以在代码中insert/update几个记录，再单独到各个数据库中去查一下，应该都受到影响就对了。<br /><br /><strong>问题：<br /></strong>1、管理C-JDBC，不知道C-JDBC需要啥管理，不过好像是已經有一個簡單的 Desktop Application 可以控制相關的 administration 介面, 最重要的是, 他結合了 JMX , 可以讓整個監控的環境更完整.. （等待尝试）<br />2、不知道通过C-JDBC来操作速度如何<br />3、RAIdb的3种类型，采取哪个更好？把表分开在不同server上对联表查应该不会有影响吧？<br /><br /><strong>其他：<br /></strong>1、Configuring C-JDBC with Jakarta Tomcat<br />Copy the c-jdbc-driver.jar file to the lib directory of your web application (for example: $TOMCAT_HOME/webapps/mywebapp/WEB-INF/lib).<br />There are many ways to obtain connections from a Tomcat application. Just ensure that you are using org.objectweb.cjdbc.driver.Driver as the driver class name and that the JDBC URL is a C-JDBC URL </p>
		<p>2、Configuring C-JDBC with Hibernate<br />C-JDBC just has to be defined as any JDBC driver in Hibernate, leaving the syntax set to the proper database. Here is a configuration example to use Hibernate with a C-JDBC cluster made of Sybase backends:<br />## C-JDBC<br />hibernate.dialect                 net.sf.hibernate.dialect.SybaseDialect<br />hibernate.connection.driver_class org.objectweb.cjdbc.driver.Driver<br />hibernate.connection.username     user<br />hibernate.connection.password     pass<br />hibernate.connection.url          jdbc:cjdbc://localhost:25322/test        </p>
<img src ="http://www.blogjava.net/cerulean/aggbug/101984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cerulean/" target="_blank">cerulean</a> 2007-03-05 20:42 <a href="http://www.blogjava.net/cerulean/archive/2007/03/05/101984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PostgreSQL中使用copy命令</title><link>http://www.blogjava.net/cerulean/archive/2007/03/01/101305.html</link><dc:creator>cerulean</dc:creator><author>cerulean</author><pubDate>Thu, 01 Mar 2007 12:59:00 GMT</pubDate><guid>http://www.blogjava.net/cerulean/archive/2007/03/01/101305.html</guid><wfw:comment>http://www.blogjava.net/cerulean/comments/101305.html</wfw:comment><comments>http://www.blogjava.net/cerulean/archive/2007/03/01/101305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cerulean/comments/commentRss/101305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cerulean/services/trackbacks/101305.html</trackback:ping><description><![CDATA[在postgreSQL中，使用copy命令从文件（包含主键字段的值）向数据库表（主键为自增型）导入数据后，需要执行一下setval，否则copy进来的serialID和日后insert进去的会重复,造成自增型主键冲突。<br />例如：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">copy my_table </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">C:\\tmp\\data.txt</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"> using delimiters </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">\t</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> setval(</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">my_table_recordid_seq</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">,(</span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">max</span><span style="COLOR: #000000">(recordid) </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> my_table));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />还要注意的是，文件不能是在根目录下，必须在一个文件夹下。<img src ="http://www.blogjava.net/cerulean/aggbug/101305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cerulean/" target="_blank">cerulean</a> 2007-03-01 20:59 <a href="http://www.blogjava.net/cerulean/archive/2007/03/01/101305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL</title><link>http://www.blogjava.net/cerulean/archive/2007/02/17/100112.html</link><dc:creator>cerulean</dc:creator><author>cerulean</author><pubDate>Sat, 17 Feb 2007 06:02:00 GMT</pubDate><guid>http://www.blogjava.net/cerulean/archive/2007/02/17/100112.html</guid><wfw:comment>http://www.blogjava.net/cerulean/comments/100112.html</wfw:comment><comments>http://www.blogjava.net/cerulean/archive/2007/02/17/100112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cerulean/comments/commentRss/100112.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cerulean/services/trackbacks/100112.html</trackback:ping><description><![CDATA[
		<p>作为开源数据库，MySQL安装还是挺简单的：<br /><br /><strong>MySQL, windows下的安装<br /></strong>下载mysql-5.0.18-win32.zip,解压后运行Setup.exe<br />一步步走,没什么特别的地方.默认会将MySQL注册为windows的服务.(<strong>run services.msc</strong> 也可以看到啦)<br />连接:在MySQL_HOME/bin/&gt; 下输入命令mysql -h localhost -u root -p <br />输入密码后就可以进入数据库的命令行模式输入命令啦(感觉跟postgreSQL差不多,好用一些)</p>
		<p>
				<strong>MySQL, windows下的卸载<br /></strong>停掉MySQL的服务（控制面板－管理工具－服务）<br />在MySQL_HOME/bin/&gt; 下输入mysqld-nt -remove<br />再通过控制面板卸载MySQL程序.<br />最好再删除安装目录<br /><br /><strong>一些命令：</strong><br />show databases;       可以看到mySQL中目前都有哪些database<br />show tables;             可以看到该database中有哪些表<br />describe tablename;  可以看到某表的结构<br /><br /><strong>网站和文档：<br /></strong>官方网站：<a href="http://www.mysql.org/">http://www.mysql.org/</a><br />中文文档：<a href="http://dev.mysql.com/doc/refman/5.1/zh/index.html">http://dev.mysql.com/doc/refman/5.1/zh/index.html</a></p>
<img src ="http://www.blogjava.net/cerulean/aggbug/100112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cerulean/" target="_blank">cerulean</a> 2007-02-17 14:02 <a href="http://www.blogjava.net/cerulean/archive/2007/02/17/100112.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>