<?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>Oracle Berkeley DB 中国研发团队的博客 &#187; Berkeley DB JE</title>
	<atom:link href="http://www.bdbchina.com/category/berkeley-db-je/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bdbchina.com</link>
	<description>Oracle Berkeley DB 中国研发团队的博客</description>
	<lastBuildDate>Thu, 15 Dec 2011 10:35:52 +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>在多个节点上部署Oracle NoSQL数据库</title>
		<link>http://www.bdbchina.com/2011/12/%e5%9c%a8%e5%a4%9a%e4%b8%aa%e8%8a%82%e7%82%b9%e4%b8%8a%e9%83%a8%e7%bd%b2oracle-nosql%e6%95%b0%e6%8d%ae%e5%ba%93/</link>
		<comments>http://www.bdbchina.com/2011/12/%e5%9c%a8%e5%a4%9a%e4%b8%aa%e8%8a%82%e7%82%b9%e4%b8%8a%e9%83%a8%e7%bd%b2oracle-nosql%e6%95%b0%e6%8d%ae%e5%ba%93/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 08:27:32 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[Oracle NoSQL DB]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1729</guid>
		<description><![CDATA[在多个节点上部署Oracle NoSQL数据库
1. 简介
Oracle NoSQL数据库是一款基于Berkeley DB Java  Edition构建的，分布式的，跨数据中心的Key-Value数据库。它是一款高性能，和极短的响应时间（毫秒级）的云数据库方案。Oracle  NoSQL数据库使客户能够轻松地管理大量的，动态模式 (dynamic schemas)  的数据，如Web日志数据，传感器和智能仪表的数据，用户个性化数据，和社交网络的数据。   Oracle NoSQL DB是采用Oracle Berkeley DB Java  Edition做底层存储引擎，但我们在其之上添加了更多的基础架构层的功能，如：   数据分布  动态分区  负载平衡  监控和管理  可预见的延迟  多节点备份 举例来说，Oracle NoSQL DB是汽车的话，Oracle  BDB则算汽车引擎。   Oracle NoSQL数据库会有商业版和社区版两个版本。当前发行的第一个版本中(v1.1.100)，两者没有功能上的区别（商业版有Oracle的支持服务）。目前商业版本已经开放下载：http://t.cn/SvbsUm 它包括数据库产品本身的Java类库，第三方类库，示例代码，文档，启动脚本和基于Google GWT实现的管理功能。 
2. Oracle NoSQL数据库在企业部署的示例图
如下图所示，在当今的企业部署中，Oracle  NoSQL数据库可以和传统的关系型数据库混合搭配提供服务。比如，NoSQL数据库可以运行有实时要求的、非结构化的应用；关系型数据库可以用来执行查 询分析、交易结算等功能。举个在线电子商务的应用来说，和用户相关的注册信息、个人头像、评论、爱好、购物车、网站的静态图片、商品等信息可以存在 Oracle [...]]]></description>
			<content:encoded><![CDATA[<h2><tt>在多个节点上部署Oracle NoSQL数据库</tt></h2>
<h3><tt>1. 简介</tt></h3>
<p><tt>Oracle NoSQL数据库是一款基于Berkeley DB Java  Edition构建的，分布式的，跨数据中心的Key-Value数据库。它是一款高性能，和极短的响应时间（毫秒级）的云数据库方案。Oracle  NoSQL数据库使客户能够轻松地管理大量的，动态模式 (dynamic schemas)  的数据，如Web日志数据，传感器和智能仪表的数据，用户个性化数据，和社交网络的数据。</tt> <tt> </tt> <tt>Oracle NoSQL DB是采用Oracle Berkeley DB </tt><tt>Java  Edition</tt><tt>做底层存储引擎，但我们在其之上添加了更多的基础架构层的功能，如：   数据分布  动态分区  负载平衡  监控和管理  可预见的延迟  多节点备份 举例来说，Oracle NoSQL DB是汽车的话，Oracle  BDB则算汽车引擎。</tt> <tt> </tt> <tt>Oracle NoSQL数据库会有商业版和社区版两个版本。当前发行的第一个版本中(v1.1.100)，两者没有功能上的区别（商业版有Oracle的支持服务）。目前商业版本已经开放下载：<a title="http://www.oracle.com/technetwork/database/nosqldb/downloads/index.html" href="http://t.cn/SvbsUm" target="_blank">http://t.cn/SvbsUm</a> 它包括数据库产品本身的Java类库，第三方类库，示例代码，文档，启动脚本和基于Google GWT实现的管理功能。</tt> <span id="more-1729"></span></p>
<h3>2. Oracle NoSQL数据库在企业部署的示例图</h3>
<p>如下图所示，在当今的企业部署中，Oracle  NoSQL数据库可以和传统的关系型数据库混合搭配提供服务。比如，NoSQL数据库可以运行有实时要求的、非结构化的应用；关系型数据库可以用来执行查 询分析、交易结算等功能。举个在线电子商务的应用来说，和用户相关的注册信息、个人头像、评论、爱好、购物车、网站的静态图片、商品等信息可以存在 Oracle NoSQL数据库；而当用户选定进行结算时，则可以通过Oracle关系型数据库进行支付等操作。</p>
<p>Oracle NoSQL数据库分客户端和服务端2个部分。客户端提供给应用程序的API调用（如Put，Get，Delete，Multi Put/Get/Delete，Iterator等），以及服务端的一些状态和统计信息（如数据分区、机器负载等）。目前客户端仅提供Java接口，暂时不支持其他语言。</p>
<p>而服务端则具体用来管理数据，提供数据库操作、并发控制、一致性和扩展性、管理功能等。在下图中，每个Storage Node代表着数据中心中的一台物理或者虚拟的机器（VM），这些机器可以是跨数据中心的。而针对整个NoSQL数据库的管理进程可以部署在某个Storage Node上。我们提供命令行和web两种管理接口。</p>
<h3>
<p><div id="attachment_1744" class="wp-caption aligncenter" style="width: 369px"><a href="http://www.bdbchina.com/wp-content/uploads/2011/12/deploy.png"><img class="size-full wp-image-1744" title="Oracle NoSQL数据库在企业部署示例图" src="http://www.bdbchina.com/wp-content/uploads/2011/12/deploy.png" alt="Oracle NoSQL数据库在企业部署示例图" width="359" height="348" /></a><p class="wp-caption-text">Oracle NoSQL数据库在企业部署示例图</p></div></h3>
<h3>3. 在多个节点上部署NoSQL数据库</h3>
<p>目前Oracle NoSQL数据库只支持在Linux或者Solaris  （10及以上）机器上进行部署，这是由于部署及管理的脚本是bash的。如果你要在Windows上进行部署，你可以有2种办法：使用 Cygwin，MingGW等类Linux工具；或者将NoSQL部署脚本转换成Windows的bat脚本 （可参考  https://forums.oracle.com/forums/thread.jspa?threadID=2307203&amp;tstart=0  ）。你也可以尝试在类Linux的系统（如Unix）上实验部署Oracle NoSQL数据库。为了性能考虑，我们不推荐你使用虚拟机。</p>
<h4>3.1 前期准备</h4>
<ul>
<li> JDK  1.6.0 u25或以上。</li>
<li> 一台或者多台Linux或者Solaris （10及以上）机器。</li>
<li> 保证机器之间时间同步。你可以使用ntp等工具。</li>
<li> Oracle NoSQL数据库发布包，如kv-1.1.100.zip。</li>
</ul>
<h4>3.2 安装步骤</h4>
<p>a. 创建启动配置参数文件</p>
<p>b. 启动管理进程和存储节点代理进程(Storage Node Agent, 简称SNA)</p>
<p>c. 通过Oracle NoSQL数据库管理（命令行或者web方式）配置一个NoSQL库，步骤如下：</p>
<blockquote><p>1) 创建一个数据中心</p>
<p>2) 部署一台Storage Node，用来运行该NoSQL库的管理模块</p>
<p>3) 将管理模块部署到Storage Node上 （该步骤在步骤b的基础上增加了对NoSQL数据库级别的管理功能，因此管理节点和端口必须一致）</p>
<p>4) 创建一个Storage Node池</p>
<p>5) 将步骤2)创建的Storage Node加到存储节点池</p>
<p>6) 将剩余节点(Storage Node) 轮流部署并加入到存储节点池</p>
<p>7) 在指定的存储节点池上部署NoSQL库，指定复制因子和数据分区数。</p></blockquote>
<p>d. 在客户端运行HelloBigDataWorld示例程序，验证数据库是否部署成功。</p>
<h4>3.3 实际部署示范</h4>
<p>对照3.2的过程，简单起见我们在3个节点上部署一个NoSQL数据库实例，并运行HelloBigDataWorld例子。</p>
<p>1. 下载Oracle NoSQL数据库发布包（如kv-1.1.100.zip），并解压释放。释放文件的文件夹约定为KVHOME。<em>（注意：如果是多机环境，你要将发布包释放或者映射到每台机器的对应目录。）</em></p>
<p>2. 创建存放数据文件的目录，约定为KVROOT。多机的话，每台机器一样要创建数据文件目录。</p>
<p>3. 在管理节点上，创建启动配置参数文件</p>
<blockquote>
<pre>&gt; KVHOME/bin/kvctl makebootconfig -root KVROOT \
                                  -port 5000 \
                                  -admin 5001 \
                                  -harange 5010,5020</pre>
</blockquote>
<p>4. 启动管理进程和存储节点代理进程</p>
<blockquote>
<pre>&gt; KVHOME/bin/kvctl start -root KVROOT</pre>
</blockquote>
<p>5. 在管理节点上： 验证管理进程和存储节点代理进程是否顺利启动</p>
<blockquote>
<pre><tt>&gt; jps -m
29400 ManagedService -root /tmp -class Admin -service BootstrapAdmin.13250 -config config.xml
29394 StorageNodeAgentImpl -root /tmp -config config.xml

# 如果顺利启动则会出现上面所示的2个进程
</tt></pre>
</blockquote>
<p>6. 在客户端： 验证客户端是否可以顺利“联系”存储节点代理进程</p>
<blockquote>
<pre>&gt; KVHOME/bin/kvctl ping -port 5000 -host node01

# 如果成功则出现如下所示的信息：
SNA at hostname: node01, registry port: 5000 is not registered.
            No further information is available

# 否则，不成功的话，会出现如下错误：
Could not connect to registry at node01:5000
Connection refused to host: node01; nested exception is:
java.net.ConnectException: Connection refused</pre>
</blockquote>
<p>7. 通过命令行配置一个NoSQL数据库实例<em> </em></p>
<p><em> </em> 7.1 使用命令行单步执行<em> </em></p>
<blockquote><p><tt>1) 启动管理功能的命令行</tt></p>
<pre>&gt; KVHOME/bin/kvctl runadmin -port 5000 -host node01

2) 指定数据库名字

kv-&gt; configure mystore

3) 创建一个数据中心 

kv-&gt; plan -execute -name "Deploy DC" deploy-datacenter "Boston" "Savvis"
1
kv-&gt;

4) 部署一台Storage Node，用来运行该NoSQL库的管理模块

kv-&gt; plan -execute -name "Deploy n01" deploy-sn 1 node01 5000 "comment"
2
kv-&gt;

5) 将管理模块部署到Storage Node上 （该步骤在步骤b的基础上增加了对NoSQL数据库级别的管理功能，因此管理节点和端口必须一致）

kv-&gt; plan -execute -name "Deploy admin" deploy-admin 1 5001
3
kv-&gt;
6) 创建一个Storage Node池

kv-&gt; addpool BostonPool
kv-&gt; show topology
dc=[dc1] name=Boston
 sn=[sn1]  dc=dc1 node1:5000 status=UNREPORTED
7) 将步骤2)创建的Storage Node加到存储节点池

kv-&gt; joinpool BostonPool 1
AllStorageNodes: sn1
BostonPool: sn1
kv-&gt;
8 ) 将剩余节点(Storage Node) 轮流部署并加入到存储节点池

kv-&gt; plan -execute -name "Deploy n02" deploy-sn 1 node02 5000
4
kv-&gt; joinpool BostonPool 2
AllStorageNodes: sn1 sn2
BostonPool: sn1 sn2
kv-&gt; plan -execute -name "Deploy n03" deploy-sn 1 node03 5000
5
kv-&gt; joinpool BostonPool 3
AllStorageNodes: sn1 sn2 sn3
BostonPool: sn1 sn2 sn3
kv-&gt;

....
9) 在指定的存储节点池上部署NoSQL库，指定复制因子和数据分区数

kv-&gt; plan -execute -name "Deploy the store" deploy-store BostonPool 3 300

10) 查询所有以上步骤的结果

kv-&gt; show plans
1 Deploy Boston DC         SUCCEEDED
2 Deploy n01               SUCCEEDED
3 Deploy admin             SUCCEEDED
4 Deploy n02               SUCCEEDED
5 Deploy n03               SUCCEEDED
6 Deploy the store         SUCCEEDED

11) 退出命令行

kv-&gt; quit</pre>
</blockquote>
<p>7.2 使用脚本<em> </em></p>
<blockquote><p><tt>1) 启动管理功能的命令行</tt>，并指定运行的脚本</p>
<pre>&gt; KVHOME/bin/kvctl runadmin -port 5000 -host node01 -script scrpt.txt
kv-&gt; 

执行脚本(scrpt.txt)内容如下：

### Begin Script ###
configure mystore
plan -execute -name "Deploy Boston DC" deploy-datacenter "Boston" "Savvis"
plan -execute -name "Deploy n01" deploy-sn 1 node01 5000
plan -execute -name "Deploy admin" deploy-admin 1 5001
addpool BostonPool
joinpool BostonPool 1
plan -execute -name "Deploy n02" deploy-sn 1 node02 5000
joinpool BostonPool 2
plan -execute -name "Deploy n03" deploy-sn 1 node03 5000
joinpool BostonPool 3
plan -execute -name "Deploy the store" deploy-store BostonPool 3 300
### End Script ###

2) 查询所有以上步骤的结果

kv-&gt; show plans
1 Deploy Boston DC         SUCCEEDED
2 Deploy n01               SUCCEEDED
3 Deploy admin             SUCCEEDED
4 Deploy n02               SUCCEEDED
5 Deploy n03               SUCCEEDED
6 Deploy the store         SUCCEEDED

3) 退出命令行

kv-&gt; quit</pre>
</blockquote>
<p>8. 在客户端运行HelloBigDataWorld示例程序，验证数据库是否部署成功。</p>
<blockquote>
<pre>在客户端编译示例程序：

javac -g -cp lib/kvclient-M.N.O.jar:examples examples/hello/*.java

运行该示例程序：

java -cp KVHOME/lib/kvclient-M.N.O.jar:KVHOME/examples \
     hello.HelloBigDataWorld \
     -host &lt;hostname&gt; -port &lt;hostport&gt; -store &lt;kvstore name&gt; 

如果输出结果为 "Hello Big Data World!"，那么恭喜你，你的第一个Oracle NoSQL数据库已经配置成功了。</pre>
</blockquote>
<h4>4. 卸载NoSQL数据库</h4>
<p>卸载的过程比较直观，有2种办法：</p>
<p>1. 在每个Storage Node节点上： 通过kvctl停止数据库，然后移除KVROOT目录。</p>
<blockquote><p>a) kvctl stop -root KVROOT/</p>
<p>b) rm KVROOT/</p></blockquote>
<p>2. 在每个节点上kill掉所有NoSQL数据库的Java进程 （通过jps -m定位进程号），然后移除KVROOT目录。  备注：这里基于的假设是Oracle NoSQL数据库是7*24的不间断应用，因此目前的办法是逐个Storage Node来停止服务，并删除数据。</p>
<h4>5. 后续</h4>
<p>当你的NoSQL成功部署以后，你可能会去读一下Oracle NoSQL数据库的FAQ和Getting Started Guide来编写你的第一个NoSQL应用。你也可能会要去查询对应的Javadoc以及示例代码。</p>
<p>如果是数据库管理员的话，你可能会去读一下Oracle NoSQL数据库的FAQ和Administrator&#8217;s Guide。</p>
<p>以上所有这些文档在你下载的Oracle NoSQL发布包中，或者你也可以访问 http://docs.oracle.com/cd/NOSQL/html/index.html  如果有更多问题，欢迎通过邮件和我联系： chao.huang[at]oracle[dot]com；或者通过新浪微博和我们互动： weibo.com/bdbchina。 转载请注明出处，谢谢。<em> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2011/12/%e5%9c%a8%e5%a4%9a%e4%b8%aa%e8%8a%82%e7%82%b9%e4%b8%8a%e9%83%a8%e7%bd%b2oracle-nosql%e6%95%b0%e6%8d%ae%e5%ba%93/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Berkeley DB Java Edition 高可用性介绍</title>
		<link>http://www.bdbchina.com/2011/09/berkeley-db-java-edition-%e9%ab%98%e5%8f%af%e7%94%a8%e6%80%a7%e4%bb%8b%e7%bb%8d/</link>
		<comments>http://www.bdbchina.com/2011/09/berkeley-db-java-edition-%e9%ab%98%e5%8f%af%e7%94%a8%e6%80%a7%e4%bb%8b%e7%bb%8d/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 09:19:07 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[bdb]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[JE]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1694</guid>
		<description><![CDATA[这是一篇译文，现在贴过来。原文见JE官网http://www.oracle.com/technetwork/database/berkeleydb/overview/index-093405.html的底部“Berkeley DB Java Edition High Availability”一栏。
概览
Oracle Berkeley DB Java版高可用性（JE HA）是一个支持replication特性的事务性数据管理系统。JE HA提供的高可用特性可以极大提升数据读操作的可扩展性（scalability）及其性能。
这份白皮书将详细介绍JE HA的关键概念和主要特性，从而让开发人员和应用软件设计者理解如何最好地利用JE HA解决软件开发中特有的数据管理问题。
本白皮书同时也讨论了软件架构师在设计基于JE HA的应用时，如何从技术的角度权衡各方面的性能与资源。

基本介绍
Oracle Berkeley DB Java版本（JE）在最新的发布版本中引进了一个新特性，即高可用性（high availability，简称为HA）。JE是一个事务性的数据管理系统，最新版本的JE 便是在之前版本的基础上做了扩展，加入了HA的特性。
用户在应用程序中可以利用JE的直接持久层（DPL）创建用于存储Java对象的索引数据库。在JE中，多个数据库操作可以包含进一个事务（transaction）中，从而得到事务所提供的原子性、一致性、分离性和持久性（ACID）等事务特性。如果应用程序或者系统发生故障，JE的故障恢复机制（recovery）可以使应用程序的数据恢复到一致的状态。
JE HA是一个嵌入式数据管理系统，它在具备JE全部功能的基础上，为JE提供replication规则，即“主节点（master）可以执行读/写操作，副节点（replica）只能执行读操作”。这种规则意味着数据库读与写操作都可以在单个主节点中进行，而在副节点上只能进行读操作。如果主节点发生故障被关闭，那么JEHA将在所有副节点中自动选择其中一个作为新的主节点，这样，所有的读写操作就可以在新的主节点中进行。作为一个嵌入式的类库，JE HA可以广泛应用在各种硬件配置和环境中。
JE HA主要解决以下三个应用上所面临的难题：

在不允许宕机的应用场景中，能够迅速进行热备切换（failover）；
通过配置多个只读副节点以提供读操作的可扩展性；
在实现数据持久性（durability）时，允许应用程序将数据提交到（快速的）网络，而不是（缓慢的）磁盘，从而使事务的提交更加高效。

然而，JE HA不适用于需要对写操作进行扩展的应用场景。这类应用场景需要数据分区（data partition），然后在每一个数据分区中运行一个JE HA的环境。同样，JE HA也不提供与其他数据库进行数据同步的功能。本白皮书不再赘述这两方面的应用。
除去上述两个应用场景，JE HA可以广泛应用在各种环境中。下面分别进行简单的介绍。

基于小型局域网的数据复制备份：基于数据中心的服务可以向本地的多个机器提供数据，比如一个公司网站。这种服务由几台安放在同一个数据中心的服务器提供，这些服务器通过高速的局域网互联。
广域数据存储：广域数据存储服务可以存储大量的账户信息，用户可以在全球任何地方访问这些信息。这种服务由许多分布在全球多个地方的数据中心的服务器提供。这些服务器通过数据中心之间的高速网络进行通信。
主节点/从节点：提供主从节点机器的热备切换。

JE HA可以在广泛的应用环境中对数据进行replication，而单独一种数据管理和replication机制并不能适用于所有环境。因此，JE HA可以让应用程序控制主副节点之间的数据一致性程度，事务持久性，以及提供了其他可以提升性能、可靠性以及数据可用性的各种设计选择。这份白皮书的目的就是介绍这些选择和配置，并且提供足够的细节便于用户的理解，这样用户在设计应用程序时可以做出正确的选择和取舍。
JE HA概述
这一章节将描述JE HA的总体架构和关键概念。
下文中，术语“数据库”（Database） 用于表示一组键/值对（key/value pair）数据集，这些键/值对数据集共享一个索引数据结构，它对应于关系型数据库管理系统（RDBMS）中表（table）的概念。术语“环境”（Environment）用于表示一组具有逻辑关系的Berkeley DB数据库集合，以及相关的元数据（meta-data）和内部文件。每个环境用一个文件目录命名。可以看出，环境就是RDBMS中数据库的概念。也就是说，下文中涉及的数据库就是RDBMS中的表，而环境就是RDBMS中的数据库。
JE HA将一个环境在一个replication group中的各个节点之间进行replication操作。一个环境就是一个replication单元。在一个replication的环境中，所有数据库都支持replication操作和满足事务性。
Replication group
一个replication group是一个节点集合。这些节点都将参与到环境的replication过程中。一个replication group由两种节点组成：可选（Electable）节点和监测（Monitor）节点。
每个可选节点都拥有一份可进行replication的环境副本，它既可作为主节点，也可作为副节点。一个可选节点将通过一种分布式的两阶段投票协议（distributed two-phase voting protocol）而被选举成为一个主节点。这种投票协议将可以保证每次仅选举出一个主节点。所有参与选举的节点中，拥有最新环境数据的节点将被选为主节点。一个可选节点可以进入以下几种状态（但每个时间点只能进入一种状态）：

主节点（Master）状态：一个节点将通过简单多数（或者叫过半数，simple majority）原则，在众多可选节点中被选举为主节点。一个节点变成主节点后可以进行读和写操作。
副节点（Replica）状态：副节点通过replication stream与主节点进行通信。Replication stream用于跟踪记录在主节点中所做的任何更新。在后续章节中将会对replication stream做详细的介绍。副节点只支持读操作。
未知（Unknown）状态：一个节点处于未知状态意味着此节点不能识别主节点，并不断尝试着寻找主节点，或者联系其他成员节点来进行主节点选举。处于未知状态的节点将不断尝试过渡到主节点或者副节点状态。这种状态的节点如果能满足事务性的一致性要求（下文将详细描述），那么它仍然可以进行读操作。
分离（Detached）状态：一个节点处于分离状态意味着此节点已经被关闭（shutdown）。处于分离状态的节点仍然属于replication group中的成员，但它并不是一个活跃节点（active node）。同样，如果一个节点不处于分离状态，则意味着它是活跃节点。

注：为了简略，术语“主节点”和“副节点”在以下的讨论中将用于表示replication group中的某节点正处于主节点状态和副节点状态。
监测节点（monitor node）用于跟踪和监视一个replication group中所有可选节点的当前状态。所有新节点的加入和当前节点的删除所引起的replication group结构的变化都会被监测节点监听到。监测节点同时也能监听所有可选节点的动态状态变化（即此节点处于活跃状态抑或分离状态）。监测节点没有任何持久的状态，也不拥有可进行replication的环境副本。应用程序可以利用监测节点将所有的写请求路由到replication group当前的主节点中，同时将读请求路由到replication group的副节点中。另外，只有应用程序需要调用监测节点，监测节点才会被replication group所创建。也就是说，监测节点并不是必需的。
一个replication [...]]]></description>
			<content:encoded><![CDATA[<p><em>这是一篇译文，现在贴过来。原文见JE官网http://www.oracle.com/technetwork/database/berkeleydb/overview/index-093405.html的底部“Berkeley DB Java Edition High Availability”一栏。</em></p>
<h1>概览</h1>
<p>Oracle Berkeley DB Java版高可用性（JE HA）是一个支持replication特性的事务性数据管理系统。JE HA提供的高可用特性可以极大提升数据读操作的可扩展性（scalability）及其性能。</p>
<p>这份白皮书将详细介绍JE HA的关键概念和主要特性，从而让开发人员和应用软件设计者理解如何最好地利用JE HA解决软件开发中特有的数据管理问题。</p>
<p>本白皮书同时也讨论了软件架构师在设计基于JE HA的应用时，如何从技术的角度权衡各方面的性能与资源。</p>
<p><span id="more-1694"></span></p>
<h1>基本介绍</h1>
<p>Oracle Berkeley DB Java版本（JE）在最新的发布版本中引进了一个新特性，即高可用性（high availability，简称为HA）。JE是一个事务性的数据管理系统，最新版本的JE 便是在之前版本的基础上做了扩展，加入了HA的特性。</p>
<p>用户在应用程序中可以利用JE的直接持久层（DPL）创建用于存储Java对象的索引数据库。在JE中，多个数据库操作可以包含进一个事务（transaction）中，从而得到事务所提供的原子性、一致性、分离性和持久性（ACID）等事务特性。如果应用程序或者系统发生故障，JE的故障恢复机制（recovery）可以使应用程序的数据恢复到一致的状态。</p>
<p>JE HA是一个嵌入式数据管理系统，它在具备JE全部功能的基础上，为JE提供replication规则，即“主节点（master）可以执行读/写操作，副节点（replica）只能执行读操作”。这种规则意味着数据库读与写操作都可以在单个主节点中进行，而在副节点上只能进行读操作。如果主节点发生故障被关闭，那么JEHA将在所有副节点中自动选择其中一个作为新的主节点，这样，所有的读写操作就可以在新的主节点中进行。作为一个嵌入式的类库，JE HA可以广泛应用在各种硬件配置和环境中。</p>
<p>JE HA主要解决以下三个应用上所面临的难题：</p>
<ul>
<li>在不允许宕机的应用场景中，能够迅速进行热备切换（failover）；</li>
<li>通过配置多个只读副节点以提供读操作的可扩展性；</li>
<li>在实现数据持久性（durability）时，允许应用程序将数据提交到（快速的）网络，而不是（缓慢的）磁盘，从而使事务的提交更加高效。</li>
</ul>
<p>然而，JE HA不适用于需要对写操作进行扩展的应用场景。这类应用场景需要数据分区（data partition），然后在每一个数据分区中运行一个JE HA的环境。同样，JE HA也不提供与其他数据库进行数据同步的功能。本白皮书不再赘述这两方面的应用。</p>
<p>除去上述两个应用场景，JE HA可以广泛应用在各种环境中。下面分别进行简单的介绍。</p>
<ul>
<li>基于小型局域网的数据复制备份：基于数据中心的服务可以向本地的多个机器提供数据，比如一个公司网站。这种服务由几台安放在同一个数据中心的服务器提供，这些服务器通过高速的局域网互联。</li>
<li>广域数据存储：广域数据存储服务可以存储大量的账户信息，用户可以在全球任何地方访问这些信息。这种服务由许多分布在全球多个地方的数据中心的服务器提供。这些服务器通过数据中心之间的高速网络进行通信。</li>
<li>主节点/从节点：提供主从节点机器的热备切换。</li>
</ul>
<p>JE HA可以在广泛的应用环境中对数据进行replication，而单独一种数据管理和replication机制并不能适用于所有环境。因此，JE HA可以让应用程序控制主副节点之间的数据一致性程度，事务持久性，以及提供了其他可以提升性能、可靠性以及数据可用性的各种设计选择。这份白皮书的目的就是介绍这些选择和配置，并且提供足够的细节便于用户的理解，这样用户在设计应用程序时可以做出正确的选择和取舍。</p>
<h1>JE HA概述</h1>
<p>这一章节将描述JE HA的总体架构和关键概念。</p>
<p>下文中，术语“数据库”（Database） 用于表示一组键/值对（key/value pair）数据集，这些键/值对数据集共享一个索引数据结构，它对应于关系型数据库管理系统（RDBMS）中表（table）的概念。术语“环境”（Environment）用于表示一组具有逻辑关系的Berkeley DB数据库集合，以及相关的元数据（meta-data）和内部文件。每个环境用一个文件目录命名。可以看出，环境就是RDBMS中数据库的概念。也就是说，下文中涉及的数据库就是RDBMS中的表，而环境就是RDBMS中的数据库。</p>
<p>JE HA将一个环境在一个replication group中的各个节点之间进行replication操作。一个环境就是一个replication单元。在一个replication的环境中，所有数据库都支持replication操作和满足事务性。</p>
<h2>Replication group</h2>
<p>一个replication group是一个节点集合。这些节点都将参与到环境的replication过程中。一个replication group由两种节点组成：可选（Electable）节点和监测（Monitor）节点。</p>
<p>每个可选节点都拥有一份可进行replication的环境副本，它既可作为主节点，也可作为副节点。一个可选节点将通过一种分布式的两阶段投票协议（distributed two-phase voting protocol）而被选举成为一个主节点。这种投票协议将可以保证每次仅选举出一个主节点。所有参与选举的节点中，拥有最新环境数据的节点将被选为主节点。一个可选节点可以进入以下几种状态（但每个时间点只能进入一种状态）：</p>
<ul>
<li>主节点（Master）状态：一个节点将通过简单多数（或者叫过半数，simple majority）原则，在众多可选节点中被选举为主节点。一个节点变成主节点后可以进行读和写操作。</li>
<li>副节点（Replica）状态：副节点通过replication stream与主节点进行通信。Replication stream用于跟踪记录在主节点中所做的任何更新。在后续章节中将会对replication stream做详细的介绍。副节点只支持读操作。</li>
<li>未知（Unknown）状态：一个节点处于未知状态意味着此节点不能识别主节点，并不断尝试着寻找主节点，或者联系其他成员节点来进行主节点选举。处于未知状态的节点将不断尝试过渡到主节点或者副节点状态。这种状态的节点如果能满足事务性的一致性要求（下文将详细描述），那么它仍然可以进行读操作。</li>
<li>分离（Detached）状态：一个节点处于分离状态意味着此节点已经被关闭（shutdown）。处于分离状态的节点仍然属于replication group中的成员，但它并不是一个活跃节点（active node）。同样，如果一个节点不处于分离状态，则意味着它是活跃节点。</li>
</ul>
<p>注：为了简略，术语“主节点”和“副节点”在以下的讨论中将用于表示replication group中的某节点正处于主节点状态和副节点状态。</p>
<p>监测节点（monitor node）用于跟踪和监视一个replication group中所有可选节点的当前状态。所有新节点的加入和当前节点的删除所引起的replication group结构的变化都会被监测节点监听到。监测节点同时也能监听所有可选节点的动态状态变化（即此节点处于活跃状态抑或分离状态）。监测节点没有任何持久的状态，也不拥有可进行replication的环境副本。应用程序可以利用监测节点将所有的写请求路由到replication group当前的主节点中，同时将读请求路由到replication group的副节点中。另外，只有应用程序需要调用监测节点，监测节点才会被replication group所创建。也就是说，监测节点并不是必需的。</p>
<p>一个replication group中的多个副节点可以分布到多台物理机器中，这样可以保证单个机器上的故障或者宕机不会影响到同组中的其他节点。但不同replication group中的多个副节点运行在同一个物理机器中的情形也并不少见。这种配置在某些应用场景中是十分有用的。例如，实现数据分区，这种应用场景在后面章节会有详细描述。</p>
<p>图一清楚描述了一个replication group G中的主要元素：三个可选节点（N1，N2 和N3）以及两个监测节点（M1和M2）。</p>
<p><img class="aligncenter" src="data:image/png;base64,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" alt="" width="394" height="282" /></p>
<p><strong>（图一）</strong><strong> </strong><strong>Replication group G</strong><strong>。可选节点：</strong><strong>G</strong><strong>（</strong><strong>N1</strong><strong>），</strong><strong>G</strong><strong>（</strong><strong>N2</strong><strong>）</strong><strong> </strong><strong>和</strong><strong>G</strong><strong>（</strong><strong>N3</strong><strong>）。两个监测节点：</strong><strong>G</strong><strong>（</strong><strong>M1</strong><strong>）和</strong><strong>G</strong><strong>（</strong><strong>M2</strong><strong>）。</strong><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Replication  group</strong><strong>的生命周期</strong></p>
<p>一个replication group总是从一个节点开始，这第一个节点会被默认成为主节点。一个可进行replication的环境可以是空的，或者是一个已存在的独立（standalone）的环境。但这个环境被转换成一个可进行replication的环境格式之后，可以往这个replication group中加入新的可选节点，这样会增加组的大小，同时也会增加主节点选举和数据持久性所需要的有效可选节点的数目（quorum）。</p>
<p>一个新的可选的节点通常需要经过以下几步才能真正参与到replication group中（即成为活跃节点）：</p>
<ul>
<li>新节点找到主节点，并且提供自身的配置信息。</li>
<li>主节点把新节点的信息存储到内部一个用于记录组节点信息的可进行replication的数据库中。其他可选举节点将通过replication stream获知新节点的信息。至此，新节点可被视为是replication group中的一名成员节点。</li>
<li>此新成员节点开始初始化它所拥有replication环境副本。如果某些日志文件已经被JE 的日志清除器（log      cleaner）所回收，那么新节点将调用一个叫做Network Restore的操作，从组内某一个成员节点中直接拷贝一份日志文件，并且用这份日志副本作为重演（replay）replication stream的起始点。</li>
<li>新节点重演replication      stream，直到它满足一致性的要求为止。</li>
</ul>
<p>满足一致性要求之后，新成员节点就成为一个活跃的副节点。它将可以为应用程序提供读操作，并且可以在热备切换过程中被选为主节点。</p>
<p>由于监测节点不需要为应用程序提供数据的读写服务，所以它并不拥有可进行replication的环境副本。因此加入一个监测节点很简单，只需要在主节点所拥有的环境副本中加入此监测节点的信息。这样，其他成员节点可以利用该信息与监测节点通信，向监测节点通知有关组内的变化，例如某次选举，或者组内成员的组成变化（新增节点或者删除节点）。同样，由于没有环境副本，当监测节点在每次启动的时候，它必须查询其他可选节点以判定组内当前成员节点的构成和状态。</p>
<p>如果节点运行的机器发生故障或宕机时，replication group有可能会由于组内节点数目无法达到有效可选节点数而无法运行。这些发生故障的节点可以通过JE HA提供的API显式地进行删除，这样余下的成员节点数目便可以满足有效可选节点数的要求，从而replication group可以恢复到正常的运行状态。当然，节点的删除往往意味着数据可持久性的降低。</p>
<h2>Replication stream</h2>
<p>所有发生在主节点上的写事务操作都将通过一种逻辑意义上的replication stream被复制到所有副节点中。这种replication stream是建立在TCP/IP连接之上，这种连接是主节点和每个副节点之间的专用连接。Replication stream包含主节点上的一些逻辑变化，这些逻辑变化是各种发生在环境中的数据库事务操作，如插入（insert）、更新（update）、删除（delete）、提交（commit）和中止（abort）等等。这些逻辑操作将从当前主节点日志文件中的日志条目（log entry）计算出来并且复制到各个副节点中，然后在每个副节点中通过高效的内部重演机制执行这些操作。</p>
<p>为了能让副节点能成功重演replication stream，这些日志条目必须是连续的。它们不能是一些被JE的日志清除器删除掉的条目。</p>
<p>为了保证这一点，JE HA把日志分成两部分：</p>
<ul>
<li>可移除日志，一般在日志的前端，由过时的数据组成，日志清除器可以将其删除。</li>
<li>不可移除日志，一般在日志的末端，所有在这部分的日志都是新的，日志清除器不可以将其删除。只有这部分日志才能用于构造replication      stream。这部分日志会随着新条目的加入而不断增大。一旦不可移除日志在所有副节点上重演，就会转换为可移除日志。</li>
</ul>
<p>下图描述了一个具有三个节点的replication group：节点1是主节点，节点2在重演日志时落后最多，所以节点2被用于决定可移除和不可移除日志。所有没有被节点2重演过的日志条目都会组成不可移除日志。在这个例子中，节点1的日志文件5和日志文件6，以及节点3的日志文件4和日志文件5组成了不可移除日志。这些文件在节点2进行更多重演之前都不能被回收。</p>
<p><img class="aligncenter" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeYAAAE6CAIAAABMDWbMAAAgAElEQVR4nOy9d1hUaZo27oZr55q5dr+9Ns7szm9nv292Zre3e6anDa2itkjOIFEEkVwFVVRRiZxzkhwVkCAISBIQkCwZRBAkFTnHqoLKuc77++PValrtbrXtBp26/9Ki3lPvec459/u89xPOMaCAAgoooMAHgmOHPQEFFFBAAQXeFArKVkCBowgEQRAEOexZKHBUIL8ZFJStgAJHDgiCtLW1dXV1HfZEFDgqUFC2AgocXSAI0tnZ2d/ff9gTUeCoQEHZHxgEmxOVd3NaZulff8SntRVl1TyeE7/rMcVbz+4VF45s8t7HBBV4n0AQhE6n7+3tHfZEFDgqUFD2B4b9oSITtT8S7k99/RF9wkP5d1ZJde/MuPwnebqXlDKGdt7HBBV4n5DJZLW1tc3NzYc9EQWOChSU/YGBOXz3is4pSh31648YUz4an9mmNry7kzxVZqKlfPPJ7nuYnwLvFQiCzM7OLiwsHPZEfjSI2eNt97KysrJzcvML7hTdyc/Jyb6ZmVXW2L0tePm7rOXxhvIHq0z+1tTjh039bNlhTPiwoaDsDwzM4RJLvdN+rWtffyRaCdb54wvKli0P1QW6o52dnEnBKd0zdAAAEO/11+X6EDBODvYo94CK7lkJAAAIh+qyya7OKPfAjCiSnrZm7oiCso8cEASZm5tbXFw87In8aBDQHiQTjYyMr5jrn/jf//fL//jC0MTCxOgyLjJ7lvPyd1c7ChyMHDpXdtviccrKLvPvLAV+yFBQ9gcG5tMyK80/XvZOrqioKC8vL6+oKM9LMjv5P85ZzSIANvuKrDS0sEFppaWFYQRrjSvugzucp/citNR0yDG3KsvveF3Xu6SL6l7nzDemqCtdcgtJvn0ryUn39H99plw0Tv/+n1fgpwWCIPX19S0tLYc9kR8PiEQsEgiEYv5yIsnqK+OYFZZQKBRIXudByyQiHk+AAElrPEFHl7CooGwFjj5Yo+XWKr//byXNK1eumJqampmbmxpofvYf/9ctt0OMsLLJFuf0PYZXdnd2dhYGSw0vnHLJ6J0denS/tmeXKxTwuSNl4Xqq6tldvTcwhgb4AiYAAIC5muiLp87fHqUd8rkp8DrQaDQGg3HYs/gJQM/wvn7JPImOAACAiDFfV5gW5O/r5eWTcLtmniYAANCnem4n5czQmR3JZAVlKyj7wwBzpMRS56RrQffO9vbW1tbW9vbWVCde+VOnmx1CHtXf/qvfndZDodGOjo5Ojte1NQ28M/rE/J2mO4kEDNoJhbYxUT9zSffmg1LstXOoovHnB12+f9VY86Yi/Hj0gCBIR0dHb2/vYU/kJ8B2mqeNslkCDQEy7lKym7Gynk1EQkZCGEnrgjIhoUYAwEp9it5xzYbZrc40T10FZR/uPBR4QzCHSyx1T3s/PCBucuYDtP/okNkuFMz726ledExbWFmZn59fnJvs7uqeoE7kBtte1LWLzy1t7Rt9XBFvbqCT0VBNvHbRNm3w+RHmK8311RSUfQSBIEhPT8/g4OD3f/WDxwvKlgEJc6kyO79tZA0AgEh2s7Ea6k6BSwBsNWeZnTdqnt9WUDZQUPaHAuaTu+ZaJ8i1019/xJj0Vvtf27QmMZA03sCePmvRMLnN43PmO/OsLa/drK0lWp7XxhXuI0DC3b0XYvvFn85mDEzXRKPPq7u0Tq7Ttlcrw+0//eRM3phCyz6K2N/fZ7FYhz2LnwDPKXtHAgAA+0tP8pPCiTgsGuWgd/4Pqi4hCwBstSgoW0HZHxqYwyWWul96fDPJz1fzD3ZpjQIAJDuj8XhrTW0TB0dbQ11ta4+MZTbrUV6Ikbr2NRSOQiYTXK2V1TWCa2YktNFgJ1M9fXM7O0c7M5WTyloFCi376EEmk1VWVtbX1x/2RH4CbKd52iibJ+4BwF1qcTHXM3H2vXmnorOnO91dT8sleE5B2QCAH0jZHA5H0bDmJ4Z4f32o/9HE1oEEKBF7qq9tZHFbCgAAQMLe7G9tuH+/prlreJsL0/n2JgY77ldVN3U+2aTtTDx9PDrPAAAIaIvdzQ9qGx5NzUw+GR5c3hcexgn9WUMsFvN435NPv7CwsLy8/B1fQBCEy+V++E/ic8pmAbDSFvanU9qpTSsAAO76kIfuF185BMx/RJQtEAjE4nec/btQNovFam9vDw4OxuPxQqHiOVdAgXfE1NSUvb19amrq06dPpVLpq19AEGRlZWV9ff21w2k0WlNTE4VCiYyMlEgkP/Jkf2xsJeBNT+lF0xHAXe0hm2uq6l6l+HiT3NCXNU58buw+xAFbTam6f9JomN1qS8ArK6M/3LzssrIyFAp19+7d716MX4u3oGwGg9HW1ubl5aWkpPTzn//82LFjn3/++TuvFQoooMDIyMjf/M3fHDt27Je//KWurm50dPTY2NhBvxtBkKKiooqKioOf7O7uVlVVYbHYU6dO/dVf/dWxY8csLCxksg+9FlA487S3uWsa1jyyNycbKopv5xd3jS7ubMy0djze4gLhznx306MtjnBn5ml7+zD3g91XxMbGHjt27NixY5988sn169dv3769sLDwhlz6/ZS9sbHx8OFDX19fJSWlf/zHfzx2AGfPnv3wbxQFFDg0jI+P/8M//MPBZ+rXv/61np5eQkJCX18fk8kEAHC5XD6fDwBYWFi4f/8+iUT64osv/vZv//bgKBsbm8M+FQXeAklJSQcv389+9rPf/va3dnZ2RUVF4+Pj3y1dfCtly2Sy7u5uPz+/Cxcu/OIXvzj2OnzyyScPHjxoaWlpUkABBd4Sra2t6enpf/d3f/fah+tf/uVfDA0Nk5OT7927l5ubSyQSv/jii5/97Gev/bKamlpDQ4PiSTz6aG5ubmlpQaPRr72Of/EXf/H73//+2rVrd+/e/bY0oW+lbARBRkZGiETiZ599Bvdur+I3v/lNXFxcUlJSogIKKPCWSE5OJpPJ3+YP/f3f//2FCxfi4+MLCwtTUlKcnZ1/+9vfQhnkVZw6dSo+Pv6lJzHpfT+ZSUnJycmH9rAnJSUnHzbVvMMckr55GZKSkpKSki5fvvza63js2LFf//rX+vr6FRUV3+Zrf78wwuPxWltb/fz8VFVVX/IIzpw5IxAIZAoooMA7YWRk5CVh5N///d9NTU0TEhJGRkbgAygUCkUiEQCATqfX1tZ6eHgoKSn99V//9cFR1tbWYrH44JEBAACRSqQ/dIYveOL5f5Hv/PKPCvhCtZ/mp7550t/829sdSiqRyp6rFgcQHx//ElN/8sknzs7OxcXFKysr30bFb0rZctDp9K6urrCwsPPnz//rv/7rsWPHPv/88w8/Tq2AAoeGkZGRn/3sZ3/5l3/5m9/8xtDQMCMjY2xs7CX3qq6u7qV+2Zubmw0NDZ6enqdPn/6nf/qnY8eOmZubv5TkJ9wYTo9Nfrz1miyUt4KItbO0tsGVAQDAo6ywoMi87cN54nkNSSERKbU/TYIae2dlaZvxyolKWpMDAmJKmG9+ICmzuSC5oGn6pY9h+PHnP//5Z599hkKhysrK5ubm3vCQb53khyAIjUZrbm6mUCju7u5w/VdAAQXeAVQq1dbWNiYmZnh4mMN5pdkoAAiCjI6OTk5OvvoniUSytbVVW1uLRqNjYmK+4TzJmLWJBDvvbNoPzucaKPRBBaXOiwAAYOR+fk5hA/1wKHsv3U7P2DGR/ZP8VkHANY/bbfyXP0eGy3Nu3W19mzlIZhpSrjt4DW59gyfLy8vt7OxycnKWlpbeNk/6B5XSsNlsmSJjRAEF3hVCoRBmg3wbEATZ2NjY2tr67uNwOJyDT+L+xANnY8v8/s0XH0j2djfXNra532BwEWNnc31jmyOCFCDlcbgiiYzP2l1dXWOwBQAAhLeb76F1yZbSubAnRYBUKODzhc9/Rsbf3drYobOlMjGHyxVJpXw2i8N/fiyJgMNkc8QvZiQVsLbW1zZ39+FfEYmQtc8Uwv6qiIzP2WfzhC/+xNvZWFvf2uW/vD3Yv4U2tcSkPV/WEAFtc319a1fwza+JuHsb65ssvlgi5rF5wle4Sba3s7m2scUWvDgJqZjL5kklYiZtY2VtiyuSAQBEW088TD43CS5YYvAQRMbjcAVCIYu+s0Nn8rh8gUD04rAi2tb6+uYO74BVeUza+traNuMAqwtXQh1NKDd75N9CEITH4702Df9NoChYV0CBowuZTFZdXd3Y2PgWYxBeUwZO/XrEPA8AAPi0qdwwd2MDfT1dratuwa3TdACAkD6Z5osy0tPT19M2cfRunWEAKS3fG2Nn5+5NxlhZGBtZYu72rW10F1ue/o///OxLW89buyJJSywRS0jakgHB7lg0/pqWuraxhT0RZ22M9e5aXs3C2gem1kNiGi0JtMF599MQAKQLffdItub6enq6ugbEuNJ1toQ9/dBZ52rV6C4AAIi2C7yMUcnVAgBYi/3xFAfjy0YGBgY2blFd1IMdFCBlpwsBYC0PxJMd9XV09fR0bIjR3XOwM63w2cMcZzMDTS0De2csyskYk1HDOKAVSTgrJXGel3X1jIwMrjj71AytAgD4y4OB169hMBQSzsncyOAqNqp3Zns031/pf375+9O6odmtPOFWJs7O8orjVX3Na57RMe6uRN9bTAD4tIkMP1dDXT1DI0MbYnTXHBMAyZPqVLSVibGJkbaeWfDNh4wX60l3OvHyFY9x5g8VqZ5fXgVlK6DAUcbOzg6N9jbtX9gLCfaqdrGlfACAbO+Oj/VFNdvi9tGZp63eVzWvEjN3ebRs3OVzms73Op5Mj/XGumqfMSX1zi3fvH7h/32hXdBF3V6bTMEYfWVKmWbslfvrq9l7di6xAQD3SFfMrwWvsLZuul2+oI9v6B8dbLlrd/53v1G+0rywFG2mgwktg/v/gVsYdQunHibgLjRbXzhrTUntf0YdarptpnrKIbFuur/K5LhK4cAmAAAIN1IcThuG3hUB0d0Am7Oa2LbJ9ZXRFl/7K143mw5sQPZvoc2s3bOZ3NWo67oqxsTGwcmJwUava6oXrwdSOQhzvMr8/HlUSP7w+LPqZPIff/UPhhHFNDllS5n3I11UNR2qB2fXF8fzwxzPX3bp2ZbJVntRp/7vSRNi++T62kQLVlvJKvAOfXc68MoJs9DCZbYIiDdCNT/53QXLnJqO8dmJLPRlc6f4Xd5ODumqlrnno8mVVepAPNFMAxU1MvnouvI5l6iKxa3N3rtR5ubO9bPPRW/GQLq+oV7O0Pvp4aOgbAUUOLpAEGRwcHB4ePjNhwg2hsha6gG3WgEA0q1Hdvo6pKw++CfmyvTY+MLeQo2+yoXAiufxLvFyve557ciC5jQHg6ukdMiSs5V+KibWj3YlXYlWBoSoWSEAAFR42tg4RY2NVhhpqkc3PH+V3dgdwtnLVg/nlm5YGblHVkDKfpzrrmuDfcICo8VuJ7RcOlefO5itmYSL+pT7lYXWF3TvPt4CAADhZgb6K7PIMhGQ1CW6nz1tFJVb9XhsamZubmOfe0DZ2L+FNrMl5c48zdfWNEhqWYWfrvfnqp4zudOz0pOPVjL1fgqbUYpXImzPGEcU774YL97pQ+sra9uHNz961N7WXp3j//kfzoVUrYLtQezF84F3eqDlqkONtUnxm+zdJOdzDhlNAgCAeC1Y64xDaCk8rzK8mRUmhUqtN1O+aO2Z0dH1qL295U4c5pPjRlmVdWRTDYPrvmXN3ZPT0/Mra+wXCopgqcZYVy/03oFWbj8ACspWQIGjC5lM1tbW1tXV9eZDOMvdaDXdsIJeAAB/9p7JZYPwmm+87Zc/mvWVtnLakxfRTu6ks6qOX0JxvKM52i8fKhuzNYEq5jZtW8JH8Zb6+IhpHgAAVHjZ2DhFDbYnqxpq5U48j6dtd0erWdk1zCzEXTUiRFXC4UO57no22Cf7SFeaySmn4IkX0u5YTbKeikNhwU2rr/RLhrYAAEC0lYn+yiy8mAuAhDZbnhpiY6J9/twFMweP0s7pAzG7/VtoMztS7mhHtIq55d2p5zX9zIU2ywuG6dWD9xP0LxASF5+/4XfvdpC+6QHK5s/fN9c5pWTg4OVBIRAIJDLRBR9UM7gtXOt3U9WMu/cYWq4m2kyLnLC+v5XgpGSX2sAFAIhXA3VViPH1EgAAEJXgza9hUsYe52pc/FLLEuPlQSIQiGQyEUuO7ZmibYzUhxKdDDS+Oq+sTY7Km9h+vkkQbbZZaBr65Y6++UX8DigoWwEFjjSYTOZb9csWrg+RNdUDs9sAAJLN9mu62uTsIfgn+lhjbmHF+GilgcqFoOol+CGy3qijpBmW+zDFydTZNx+y5Mz9ABVzm/YtYUechSEpdhkB4AVlj42U6qmpxjY/j4hSyzzOXbZ+OLd8w1zbLbIcftgeY69ujh7mgqfF2ONarr0v4qCPbhHOa5Pulxdan75UBF1i8VqU8XGziFIOIlqmDk9uMkWc3enRjlBn3c/VPUe/ziiUe9l5mhoGqW3Pj7jzOO/S2csFnUtduQ6nTXzG9+EpbcU6njvoZYs2O67rXLoe0SgFQCZD+LszD+oeTOzIBEvdbqqasWWQstn3o8y0yQnr+5vxDmedbrVLAQDi1UA9FUL8AzEAAIhK8GbWmOSp8Ur9i+p+d0YAADIZsr/ytKa+bWpmZmxyapcroq/NDz3MVP7iS/SNR3D2wuVaY129kDKFl62AAh87ZDJZTU3Nw4cP32IMdzkVpXEtspgLAJCxy4Mc1LRsC5p7h7rrKeaXTLAJm1xmIdnigqZjcUvPk/72KLSW0hVy79xCirXOdY8cSNnUSm8lI4vWLXFfutUJXavclmcCICsnXzGzDl7h7N4mWlwywtU+6u9pLUGrfPo7NeuuLXal1+VzOrbFLV0d9betlT/9k67zIAfwVx7Zq5y3Iid1Dg531+eYqZ6yT6zfWRoiaPzBiJTS0d1VleV/+j/+2SSyUihlFwRYnDPE1g2Mz00OxmAvf2UeNr0nD9ntZdgbmLtmsvibCU5GaibuNZ2DQ911ntZqlxyCqTzAnnpgfUkZHZrb+3jwfrrPl7/5lWl0yQEtm1UTiTqrZHSrvmd0uDfD2+qEpk3zqki60oU6rxx5dwAAAACrMsxQBRezwaGnuHx55npQ58SqVLTqp3EOG1MDKbvI1dDY4cauYPe2u+k5TfvyR4+fDraGofUuXAvo6qux0TqPiix+OjU71pGre/6iR84QnP1OV7KegV7B0/fzAk8FZSugwNEFgiATExNU6ls5aIKWWyQtmxAqCwAABLuTueEkcxMzc9PLTp6xPfP7AADhzrMUX1cLU3NLCzMrV7+miV0goeWTUN43nisbiy0JV7HEXgZgjJbaGKgb2YXMcgXt8R7ulJQtGQB7Ezco9oaXze2c3PDXVL80tu3eA/uzrX4oC00dQweMR0igq71X+BADAIDMdpeSHazMza9YmF+h3Lg7zxADIBqpz7iiq2Fgak3w9vdwsyDerBcAwJrviSXZXja1sLK0dHDzrxtZOaBls0r8MO6BRSIAmIt9cR4oUxNzSwtzR4/Yjin4AjzpVFs+5pq5iYUN3g1roXPcMraMfiBjRMycL4ommxkaW1iYml7H5zVPAJgxYm17q34MAAAAtzkTaxt2a0cmG64MUzungo8qofO2052tw3LaJQAAIK4Lwbr5ZDMB4G8+TfV2Mb5sYm5mcgXtWzO0BoDscUWS01VjC0urK2aWfsmlS6zn6017Mt74qs+kImNEAQU+eiAIsra2trm5+f1fPYC9iQfOppa5fRvPDyLmbq0tLy6v7fO+LoORCdlba8uLS6sMNizlkLIZtD3m84amEj5rl04XyABAJPs7m2vrOwKpTMDaYzBYIt7Oo4dtQxOrtJ1t2t5ee7KrmjH6GR8AAIRs+srS0iaNJRJyGPv7whccxWfSVpYWV9Z3DqRRS/d31peW1xhsvoC7x2Dz4O+Kecz15cXFpVU6W/DNc5Jx9+j0Pc7zHHIBa315aWllg8l/fkY7i6MNDX1LGztb2zTW+lN/swvYtPqXXx4h5W+vLy8urezscZ8fVCLc291l8+HWAuGz6Lv7bCkAiJi/s766ubsvkUnZtN3955NBePt0+h4bLiSIiLOxsrS4vEpnyacqZe5uLi0uLq9vf51XLlwKczKm3Op+XzWHCspWQIGjC5lMVlJSUl1d/ZbDmNVx2KuUW3uSH6GlNG856rqmigWp4mFbzZ3EK2rnUVE1gu8f9uNitbfQ6Nx5THh2S3tzZqD9JTWLssGNw54UAIiUWp9oeY3Uv/3eKu0VlK2AAkcae3t7+/v7bztKtDmSHpPQv/Gj9OTgrDxO9MNYW1vb2DqHZ9e+Pzr6AZDyRxtzyS52VlZWDm4+1Y+XjkTzIzGjITexoOX9BB4hFJStgAJHFwiCPHnyZGxs7F2Hv9/pvHz4H/Xo74YP/x2Y3wMFZSugwNHFu2SMKPBR4y0pGxFOtt69XdVJO6BdbT5tv/+geZ33Bv2hpLzx9vK6vsnvVeI5qyMNzT37rz2kiNbZ+JDKkAI+ra8qNy2neJx2cGMmmOyrzcq9M7D8Fi0SAQAAkYilb7Q+i3epzU2dW68285HynzWWVneOfFebHwUUeEuIRCLFG1YVkOMtKVu2l+t0/K/+8dOIylE5nXYnOKnqWXdsv0EKi2Qnw/GMtvet72ZT8fZooPlXSgaEhddQKDJWEWHtHD7DloGtYS/Vfzv217+k5I18/ef9KV/9//rLf/kv/4b5NzojAAAA2yP3Y+JTh3bfSP6SsagRrjbhpU9ePmHhTpr5n1QwcTtv/sMKKPCdkMlk9fX1LS0thz0RBY4K3pay94vc1f/5H/7PHzScH848J96+NDd9c6eunTegbBkjD69mEnT7W2u5EMFEezHWQut3//QvalZ+r74vXrQ5QDA3TGpZAgDINoaDDL/4f//5/+lhbyy98NtXewsMTv76VyfOhDUuvtEZAQAAGCl0VzW93rj6pnk4y80JplfwPWvfDLsId29dP6dHSt598x9WQIHvBIIgAwMDb9VjRIGPG2/tZedhNDUtr5rpqZqRs7bEAHxN2TIAAHdrsiw9mkLAEzz87zwcYUsAAICzMXorxo9A9r6RlOZxRckirJALgIg+W5EVSyHgyT4hRU0jHOjgCtbSffGksPREjInRNY+Fl4URyVBpsPplygQTAACk608CDJVMHMw0LqOqRmFIXfLgBs7SXOuiiUZQ4zKQcftq80N8vYjueKJPVMMT2JwG2ZnqTArxJJFInoGxD56sshaehF098z9fnLLxSJ9liMTMhfKsGC8SgegZUNQ8ypUCAMBSV1VcRGpmXDDRM+TBMzrgzXiY6ocUDnxjmfoWypbyttrLsnxJ7gSSR1LRw1WWBAAg5azV5MRSCATf0OS7RSmRt+7MvEVNsgJ/RqDRaHt7e4c9CwWOCt6Wshk5zpcsg7ObqxJVvvwqvHoKADCQjtM3d+5hAMBduuFion3ZMSYlMyHETUNNK6p6hLO/eANlqG6GSczIjKDYf/HrX12NqWDydnM9bY0sXJNv5adHexgbm8dUD4kBADLh7g6NJ5b0xDrpW5LmX3LchRvZJF1DvzyYBy9dH/LRVcLfSCVbGvoXdEkAALwpX0e7oKhgS2vNsNbF8Xvhape0SBHphfmZ7pZaasbEYZpYxhz3vap/1S2i8M7tEIylxmW3zsnZu77Gpy5phhZ17tEWb1KuGV/BJN68nXXD20Df6EbtqAyAsVyf//3VfxrYE0NjUx/N7wMgKfU1MvFIWT7oZ7+WsiX79+PwWurGvjGpGfGBZrpqqNgyhohfF4O+pGoaEJ0YH0pR++zf/lvfufv9tGZU4KPCu/TLVuCjxttTttNFk8CCfeH+HQ+jz75yGGMho9lEfQvnITZYaY0586VRYR+s1BKWhl69YOp153ak8nmTymdsAICU8cxL609WMcWDnQXaSvrJNaNcHpe7t5Tldfm4ke84Xc7QSEeE3auULd4a9dVVpmQ+j55L14e8tL70LWosS3QxcE1ZlwLWwC1rG9LDtkLrq+pBDdNT3Q8rage4AABEOlMVoaJ0Ln98X7jWrPXHE46RNTs8mYy53NnRvsRBpst99K+7DnABfSD7wp800h48Y3O4fO5mFkXn+OUAKls6VeCn9IVq9cLXkcXOPMw5C6/e1QPy9+soe59aZaKi6pndCzcMTyuCL6hZ3yq5fUVNLaRsAgAAAKeErPPFZace+htdAQX+rPBu1Y8KfMR4F8o29s3eA0C22WOv/AdT/6L6NLLJVfQTFhi4deWEjc/oi9jidPNN/bPGRIzWaUf/6eelo+zyEGObyNyau95/+Py04ZXr9na2tra2V8yM9K+Fj6x9Xff5WsrmLHWjLmmHFT5v/itdH/LSOOFRNrjQW3RFx/rh/EZ9vJtDcM3WdPVVi0t+9ctASG8oSCBiUPb2DlcNLh6/oHb7KQ0ggkc5ofqXLqqoq5vZk4taRvkyMF7ioWvj0s+QjlcQ//O/TxhZ2tnb2tra2l0xNTSyjX62KxzL99dRdRo/8HK+wYoQJTV88+SBj15H2cvNwRdNzO6Mvzj/pY7rKiY4J8NzVyyrX0j1iw3eF63QXQoJXIFXgCDI+Pj41NTUYU9EgaOCd6Jsn2xIL9M1EedOnDPVVtO1dnvKBk+LUceN8f3bz787XBmtfvFakLfVGXPCyHMtjlnoqWcTlVdfFvClilVe0+jy4tzsLPVJX3tz9+ieQC5dv56yuSv9bqoaQXnPewdL14e8NI4TigalnCkfR1NKbKqng1Xaoy3hYvUVC/XQuv7CENsLOg5Jt0tbByb6SiJ01ZRvPdlBJHwabWtlaaqpoiDO1+n0SZXYmtnJCl/9666P2WC62uOTM+YFLc+WFuZmZ2ee9LY194xzEDCc46ujhhpjfp3C0l/qq6RNaJ85kNEn3L11/Zw+Je1gpdpWb6KK7uWbfc9VD8ZktYmymY+H4yUjkzueErgAACAASURBVLvjz1WVyRLcuSuobgVlK/AKZDJZY2NjW1vbYU9EgaOCH0TZQELLxOv++//5u1OX3Z7ywN7oXZ3TlwLzOhk8EWdnKtRBVQOT+Ki1zPSccvCdASaPtz5SY33yd1djSidHGyzOKXtmtrAlQMigZvjZO4YXbX2d6/16ypbRpyMtLrkkVsOPpetDXhpf4PN7AJDUxrpd+ONxVXOPUSaQLpRbXNEKK73nZqKkR77HQgAQMSrD7D7749nbYwzeYiPawSG3axUBgLvQaKx01jVlcLLGV83UunqGvfes0uDEWe/s9n2hTMJaSvOydoospSFgNNdXR835AGXLmtKuK9sHjtAO5CEKd7Ntz2m4hk/TmQw6jba7S9tjMZa7sQbq17xzV/f5QtZWWaStkoHrg54OdwNV54jKLRaPvT0VYXH6j0aoXoUwosDrQKfTGYz307dTgY8Ab0vZ9Azrk1rEdHnqMZNab/bHX/3u4vVeBgIQVn2ap66qhpnV9auXtTTMMVXD6wjCabvlq6akbHzlmo2F0elP/s0opIiLCDqy/XUvXjK+et3CSP2i7vWclskDHWykLYFXVAwxsy+FH6V798KvqmBS4f0rXR1wP/d755ttAICNrpQ//es/6XoWCAEQTd3R1zvjUzPSnOGpfEbZyhGDd8Nh7I0+P3MutG5exlu95Wl5/qK6jYOTlbGegQ25d4VPf1qge+7Tz9Vd+uZX2vMCdS+qGF+xuWKkfl7LOq+DKgXgcRrx4tlrI/vyKe5nOOvYBRfQD+a0CHdz7L785//4rYqOoZ6ujo6WmqqO3b2umfG23Gu6Gnom1raWRmp6FjcqBqUAzDZlXFZV1jO1srOx1jv33yctcX0KylbgFSAI0tLS0tnZedgTUeCo4G2rH8UrY71D0ysHEphlK88ed/eP7onggUTL4/0PqitrGh8t0eVus2ThaVdNdW33k4m56cfDs2tSAAAQr00OPqiuqK5vo66/VFuD0GefDg5PcF8ppVnvyTfSuNa8xAcAIIL9qf7OiVU6AEAmoD3u6pte3gMASDkbT570Tu+KgIwz0d9aXVXV2DlMYzImnw6NL+0BAICE+bSrqbqy6kFz9xJdCAAAEt7scHddXcsyUwKAbHVyoOF+VVVd8/TG88y7/ZXpgb4x1osaNOFy4zV9k+yO1W9MTiZaH+9vfFBX8xzVldVNMxscAMDe6kRTbXVVbdPYIg0AAMScjfXNhcnh9oeNnY8nG27YqlkRnrKBAgq8BARBhoaGnj59etgTUeCo4EPrMSLeyCBdcUtpOdRmj6KWVHcbUvLquzYwkzEnSWZGpOTalW3a2nQXyfAr+8C7irRsBV4FgiDb29u7u4pAhwLP8aFRNgA7T8qJhNChrffVMfytId0ZDqeQSwd+QN4VIhwoi7MyMTC/an3FxMiWFDW09nI3dgUUAC/yshsaGg57IgocFXx4lA2AeHttlcF7P2/leQdIeXtra9uiH9riUbq7Mjf29OnYxAyNcyRa+ypwNLG2traxcQS69StwNPAhUrYCCvwZYXFxcXV19fu/p8CfB76VsiUSCY1G29jY2DxiWFxcpFKps7Ozc3NzU1NT09PTc3Nzs7Oz8n/PzMxMTU1RqdS5uTkqlTo1NTUzMzM/Pz89PT01NXVw4Ozs7Ozs7OTkpPwgk5OT3z3w1YO8NHBmZmZychIOpFKp8N/wy28ykEqlwoHw1998IPzywYHT09MzMzNH8Aq+A9bX16FZvsNoL12aN7T2S0b7joHyu+vgQPm1fvXXX70tX72+3z1tKpU6MzMTGxublJQ0MzND/cAxNze3vr5+2LfSh4GNjQ0Wi/Xa1zV8K2UPDAx4e3uHhYVFRUVFHg1ER0f7+fnp6upqa2vr6emdOXPmzJkzenp6Ojo6p06dOn/+vIGBgbq6+okTJy5dumRkZHTp0qUTJ06oqakZGhqeP3/+5MmTWlpa+vr6cKCurq6Ojs7JkyfhQE1NzRMnTigrKxsaGqqoqMgHXrhw4eTJk5qamgYGBmfPnj1z5oyOjo6ent6pU6eUlJT09PS0tbVPnDhx8eJFAwMDNTW148ePq6qqGhoaXrx48cSJE5qamvr6+kpKSqdOndLV1dXT0/vyyy/Pnj2rr6+vpaV18uTJCxcuGBoawmmrqKgYGRnBgRoaGoaGhufOnTt16hSc9unTp8+ePQtPXz5QQ0Pj+PHjly5dMjQ0hOerrq5uZGR04cKFU6dOffXVV66urtHR0Yd96X4QYmJisFisurq6vr6+trb28ePHX7K2gYEBNJqWlpaBgcFBa0OjwYFyo6mpqclvEmVl5ZMnT6qrq79kbXiZ5DfJhQsXDAwMXmtt+d2lra1tYGBw5syZ06dPw4GnTp06d+6cgYGBlpbW8ePH4d2lqqp6/PhxeHd99dVX8mmfPXsWDtTV1f3yyy+VlJQMDQ21tLQ++eSTEydOGBgY6H7gUFVVdXFxiYqKOjqUcjQRFRUVEBAQGRn5WkHsWym7tLQ0MDDw6dOn4+Pjz44GJiYmqqqqHBwc6uvr8Xi8mZlZXV1dR0eHpaUlCoVqbW2tq6vT0tLy9fXt7OzMz89XUVFJSEjo7e2NiYlRVVW9c+dOb28vmUzW19evr69va2u7fv26jY1Na2trTU2NkZERkUjs6urKz8/X0tKKiorq6+uLi4tTV1e/efPmwMCAh4eHgYFBRUVFb2+vra2tlZVVc3Pzw4cPjYyM8Hj8o0ePSktL1dTUwsLCent7U1JS1NTUMjMz+/v7/f39dXV1S0pKent7USiUpaUl7IBsamqKwWDa29urqqo0NDSCgoK6u7uzs7OVlZXT0tJ6e3tDQ0PV1dVLSkq6u7txOJyxsXFjY2Nzc/PVq1cdHBza29srKioMDAy8vLzgQA0Njbi4uL6+vsjISB0dnfz8/MDAwJCQkImJiaNzEd8BExMTN27c8PLyevDgweXLlw9aOzw8vKenJy0t7dKlS9DagYGBOjo6paWlPT09aDTawsKioaGhubnZ3Nzc1dW1vb29srJSQ0MjMDAQGu3SpUspKSm9vb0RERHQ2r29vTgc7vLly9DaVlZW9vb2cKC+vr6np2dPT092drampmZcXFx/f39UVJSmpmZOTs7AwACBQDA2Nq6qqurt7bWysrp+/XpLS0tDQ4Oenh6ZTO7s7CwqKlJRUYmJient7U1ISFBRUcnNze3r6/P29tbX16+srOzq6nJwcLCysmpqampubjY2Nv7FL35hamra2dnZ/iGjo6PDy8srJCRkfHz8g74bfwJMTEx0dXURCITXJnd+K2WXl5fn5ua+OuBwMT8/Hxsbm5eX5+vru7i4CADIyckJCQlhs9kIgkRGRqalpQEA9vb2PD09KysrAQDT09N4PL67uxsA0N7eTqFQqFQqAODOnTtBQUE0Gg0AEBcXl5SUJJPJuFyut7d3aWkpAGBpaQmHw8Eqhv7+fjwePz09DQAoLy/38vKCA9PT06OiohAE4fF4ISEhOTk5AIDFxUVPT0/YfW1gYIBMJsN+x5WVld7e3mtra/KBPB5PKpWGhIRkZ2cDAHZ2dkgkUn19PQBgdHQUh8M9fvwYAPDw4UMPD4+XzlcqlUZGRqanp8Pz9fDwgOc7MzODw+H6+/sBABkZGUfwIr4D6uvr09PTk5OTo6OjAQBcLjc0NBRae2VlxcPD48GDBwCAgYEBCoUyMjICAKiqqvL29l5ZWQEAZGRkREZG8ng8iUQSHBx88+ZNAMDOzg6ZTK6rqwMAjI+P4/F4ubVJJNLS0hIAID8/Pzg4mMlkymSy6Ojo1NRUAACDwfD29q6oqAAAUKlUPB7f29sLAOjo6CAQCHNzcwCA4uJiX19f+JrdhISEuLg4AACTyQwICCgsLAQAzMzMkMlk+O6C7u5uDw+PZ8+eAQBKSkr8/Py2trYAACkpKVFRUYaGhj4+Pj+tvX8UlJWVFRUVHfYsPgzweLzw8PC3puybN29KpYeWmPFaUKlUW1tbR0fHzc1NAEBSUpKXl5dAINjf3/fz87tx4wYAYG5uDo/Hl5SUAAB6e3vRaPSjR48AAOXl5W5ubjMzM3Cgt7c3k8kUiUS+vr5xcXEIgqyvr2MwmOLiYgDA8PCwvb19R0cHAKCxsdHJyQkSfU5ODh6P39vb4/P54eHh4eHhEolkc3OTSCRC2h0bG0OhUJCvW1paHBwcRkdHAQCFhYVYLHZnZ0cqlcbExAQEBMBogYeHBySCqakpDAZTVVUFAGhvb0ej0ZB279696+7uDhkkNjbW39+fx+NxuVwPD4+UlBQAwOLiIhqNLi8vBwAMDAw4ODjAgbW1tdra2rdv3/5pL9GPgvv37xsbG4eGhkql0o2NDTKZfNDacJFraWlxdnY+aO2trS0EQaC1RSIRnU6nUChwUZ+ensZgMJB2Ozs70Wh0X18fAKC4uBiHw0Fr37hxw9/fn8Ph8Hg8Dw+PpKQkAMDy8vJBa9vb2/f09AAAampqnJ2d4bKamZlJIBA4HA6HwwkJCYmMjIQDCQRCQUEBAODx48doNLq1tRUAUF9fj0ajJycnAQC3bt0iEAgMBkMikYSFhUVGRopEIiKR+HFQdmFhYV5e3mHP4sPA3t5eaGjox0DZU1NTTk5O8/PzMpksNTXVz8+Py+Xu7+8HBQXBJ2phYYFEIkE3ube319XVFbrJVVVVbm5us7OzAIDMzEzI19BZi42NhS0uyWQyfKKGhoawWGxzczMAoK6uDo/Hj4+PAwBu3brl7e29u7srFArDw8NjYmIEAsHu7i6JRILMCGkXvly1paUFjUZD16moqAiPx8OBCQkJwcHBQqFwd3fXz88PusnT09Pu7u5yvsZgMAMDAwCA0tJSAoGwvLwMAEhKSoIMwmQy/f395Xzt7u4Oz7evrw+LxcrPl0QiBQQEwBXoQ0dpaam3t7dAIKDRaGQyGT75MzMzaDQaro5wkYNvIofW3tnZEYlESUlJgYGBQqGQRqP5+/vL+ZpIJMJNSUdHh5ubG+Tru3fvEggEyNdwIJvNZrPZ/v7+ycnJAIDl5WU8Hn/v3j0AQH9/v4uLC7R2dXU1Ho+H3kBGRoavr+/e3h7k6/j4eIlEsrGxQSAQoI8Jl5n29nYAwMOHD11dXeHu7fbt20QikcFg8Hi86OjosLAwmUy2tbWlpKSExWJ/epu/dygo+83x8VD2xMREaGgojUbLysoKCgpiMBh8Pj8gICA5OVkqla6treHx+LKyMgDAkydP0Gg0fKIePHiAxWLhE5Wdne3h4bG3t8fj8aDSL5PJ1tbWvLy84P00PDyMx+Mh7TY0NLi7u0MiyM3N9fT03NjYgHvkqKgoPp/PYDA8PT3hDn16etrNzQ16fJB2nzx5AgAoLi4mk8nLy8sIgiQkJISGhrJYLCaT6e3tnZmZCQBYXFzEYrHV1dUAgL6+PjQaPTg4CACoqqrC4/HQcUtPT/fx8WGz2SwWKyQkJCEhAQCwsLBAJpMhEQwMDODxeEgE1dXVJBKJSqVWVFR8HF52RUVFfn7+9va2t7c3tDaVSnVxcYF6SGdnJwaDgepTSUkJkUiE1k5MTAwJCYHWlq+O8/PzOBwOro79/f3y3Qxc1BcWFsAL2mWxWGw2OyQkBO7elpaWKBSK3No4HA422KupqSESidBNzszM9PX13d7elkgkISEhcXFxQqFwZ2eHSCRCPWRsbMzFxQUObG5uxmKxcFEvKCggk8kbGxsSiSQ2NjYiIoLP59PpdC8vr08//dTPz+8wrP6eoaDsN8fHQ9lTU1MhISF+fn7BwcH7+/tisdjb2zsxMVEmk0FZ4+7duwCA4eFhBwcHKGvU1dWh0WjYcTgzM9PDw4NGo4lEouDg4JiYGLFYvL29jcfjoX89Pj7u6OjY1NQEAGhpaXFycoJPVF5eHnSToYIcEhIiFotpNBqFQsnIyIATc3Nzu3//PgCgtbXVxcUFEkFBQYHccYuKigoODuZwOFwul0QiwYFwow09vv7+fnt7e+jxVVRUuLq6QgZJTk728vJis9lcLtff3z8hIQFBkJWVFSwWKz9fJycnyNd1dXUoFArKOEFBQXBV+NBRW1sbGhpKIpGysrIAANPT0y4uLvJNiaurK7R2YWEhgUCAi1x0dHRQUBCbzebz+WQyGfrX0NpQD4EiEpShKysrUSgUHJiamgqtzePxAgIC4uLiZDLZ6uoqDoeDW5ahoSFnZ2dIu3V1dS4uLvDuysrKIpPJDAZDLBYHBQVFRUVJpdLt7W13d3cYUYB8DRf1hoYG+aKenZ1NJpPX19cBAGFhYREREQKBgMlkEonEjIwMGxsbb2/vQzD6+4aCst8cHw9lU6nUq1event78/n8/f19Hx8f6G8uLi66ublB/oKJGdC/Li8vx2KxUA9JSkry8fGBG08fH58bN25IpVJI9NB1Gh0dtbOzg8J3Q0ODo6MjHJiTk4PD4eh0Oo/Hi4iICA0NhVtdEokEA1nj4+PyR7GpqUmuqObl5WGx2M3NTalUGh0dLd+hk8lk6PHNzMzIqaejowOFQkE9pLi4GI/HQz0kLi7O39+fxWKxWCyoXyMIsri4iEKhoKI6NDTk4OAAib66utrJyWlxcRFBkKysLG1tbbgUfeiorKy8fPky1K+fPXuGRqOhf93U1IRGo2G88fbt2zgcbn19HW6DgoKC4DZIrl/Pzs7Krd3Z2ens7CyPFri5ucFlNSEhwd/fn8lkQmsnJSXB1RGNRkM9ZGhoyNbWFhJ9TU0NCoWan58HAGRkZBCJRCaTyWazg4ODoX69urpKIBDgRufJkycuLi5QbaupqXF1dZ2YmAAvhO+dnR2xWBwSEhIeHg7dCBwOBwnu6tWrGAzmJzf5+4eCst8cHw9lT05OYrFYBoMBg++Qr2dmZggEAtRDurq6XF1dYX5IeXk5DoeDT1RaWpq3tzeLxeLz+YGBgTCCv7q66u7uDl2nx48fo1Ao6JjX1tZisVioMN68eRM65gKBICwsLDo6WiKR7OzsEAiE/Px8AMD4+DgajYahf8jXcI9cUFCAw+FoNJpYLL5x40ZgYKBMJtve3vbx8YF8PT4+jsPhoB7S0tKCwWBgxkJRURGBQICpDvHx8TDeyOFwfHx8YKByfn5eHjqD8VXI15WVlfKtfXp6ur+/f2Ji4scRoy8tLY2IiAAAjI+POzk5wW1Qa2urs7MzDDPcuXMHh8NB4oPWlkqlOzs7vr6+kK8nJibweDy0dmtrKxaLhepTcXGxPFoQHx8fGBgIw4be3t7yaIHc2n19fY6OjnBZraqqwmAwciHFy8sLRkeCg4OhkAKFb2j/oaEhJycn6A08ePDAxcUFynQ5OTkEAmFvb08oFEZGRoaFhQEA1tfXKRSKPL56+vRphZf954aPh7InJiYiIyPn5uZCQkLgo7i4uEggEKC/+fjxYxcXFxjBv3//Pg6HgxlXWVlZciE4LCwM8vXy8rKHhwdUGIeGhvB4PKTd2tpaIpEI9ZCsrCxvb2/oJsOBIpEIJodBvoZLiJxBXF1doZXv3LkDt7pisTg+Pj48PJzP5+/u7vr4+Ny6dQsAQKVScThcbW0tAKC7u9vV1RXy9b179yBfIwiSlJQUEBDA4/H29vYCAwMhg8zNzR2Mr+LxeLifqKiogPo1ACAlJQUK/WVlZR9Hkl9lZWVBQcHY2BgWi4VhBqiHwN0MpN2NjQ2xWAyjBTAs7OvrC3UhKpXq7u4OZauuri4MBgP5ury8HI/HQ/86NTU1ICAARrMDAwNhvPFgNLuvrw+Hw8FFvbKykkQiQT0kPT09ICAALupBQUGJiYnyeCPc9o2Ojrq4uMjjjRgMBg68ffs2mUym0Wh8Pj8mJiYqKgoO9PLygldtcnISj8d/+umnnp6eP73N3zsUlP3m+Hgoe3p62sfHx8XFJSMjQyqVbm5uYjAY+EQ9efLE0dER+tc1NTUuLi7Qv87KyvL09KTT6Xw+PyQkJCYmBqblkUgkKBqMjo6i0Wi4Y21oaHB1dYVuck5ODpFIhKGkiIiI8PBwmChGJpOhHjIxMYHFYmtqagAALS0tWCwW0m5+fj6ZTIb511FRUWFhYWw2m8PhkMlkyCDLy8soFAoyCHTc4MCKigoMBgP965SUFLgt4HA48v0EdNwgEQwMDLi6ukLHrbq6GoPByDMWPD09GQyGUCjE4/FQ/P3QUVtbSyKRUCgUTKNubW2Vb0oKCwuJRCI0WkxMTGhoKLQ2DDMgCLK6uirXQ/r6+pycnODA8vJyV1dX6F/LN2EcDicwMDA+Ph68SMuDm7D+/n5YiQNe7GbgJgxam06ny6MjEokE6tdwUR8dHUWhUPJoNhaLhdHs7OxsCoWysbEhlUrDw8NhNHtvb49AIMD46uzsLAaDuX//vo2NDZFIPAyrv2coKPvN8fFQNpVKvXLlCsznW1pacnV1lXtA8o0nfKLk/qa3tzeNRuPxeL6+vlC/3tracnV1lXtA9vb2MJRUX1/v6OgIH8Xs7GwcDsdgMAQCQWRkZHBwMIIgsNQF8vXo6KirqyvUrxsbG9FoNMxYuH37Nh6PX19fl0qlUVFRgYGBMG1cztezs7MoFAr6148ePXJycoKKaklJCQ6HW1hYQBAEZgTDbYGXlxf0r1dWVuT6NQydwf1EVVWVXFFNT08nkUgwwhkaGmpoaPhxCCMVFRWmpqZQv4aJcTBwl5eX5+7uDjclMLoLiU8e3Z2bm3N2dobLaldXl6Ojo9zaWCwWWjsxMdHPz29/fx9aG95dB/Xrx48f29nZQW/g/v37KBQK7t7k+jXUQw7q15Cb4LYPegNQbYN8nZmZSSaTt7a2YGJJRESESCSi0Wg4HE7uXzs5OcGBzs7OCi/7zw0fD2VPTk5SKBShUDg7O4vD4eAT1dXV5eLiAiNCkPhg6D8+Pt7X1xfylzxQubS0hMFgoPA9ODjo4ODQ1dUFAKipqUGj0fJQEplMZrFYPB4vODgYVtytr6/LE0tGRkbkOQPNzc2Ojo7yrS4ej9/f34fSZHBwMABgc3OTQqFAvn727BkGg4GuYnNzs4uLC6Se/Px8AoEAHfPIyMigoCCRSMRisSgUChS+IdFDKba3t9fBwUHumLu4uMBObzCxhM/nQ6E/OTk5Ly8PKj8fOsrKyqBSAfVruA3Ky8tzc3Oj0+lisTgqKiooKAhBkK2tLfnqOD4+Lt8GwTQe+TbI3d0dWhsGKgUCAYvFkoeF5+bmDm6D7Ozs5NZGoVBwYGpqKoVCkVsb6tcLCwsHt0FOTk5Qtqqrq3N2dpaXBRCJRJjKAvkaALC2tiZPLBkZGXFxcYFqW2Nj429/+1s8Hv+Tm/z9Q0HZb46Ph7InJiaioqJ6e3vl9eg9PT2urq7y+BtMZEYQJC0tTe6oBgcHw63u0tLSwURmHA4HK9Du379PJBLliYB+fn5QmoSlEC+l1o6Pj7u6usKBzc3NciGloKCARCLt7u4KBIK4uLiIiAg40NfXF+rXMAJ2cGsP+bqkpIREIkHHHBbaQP3az89Pnuog1+u7urpwOBz0r8vKykgkEvT4kpOTg4KC9vf3YSJgWlqaRCIpLCyEUawPHVVVVbm5uY2NjVgsFlq7sLDQ3d0dWjs+Pj40NFRubbls5e7uDvm6ra1NLlsVFRURicTV1VWpVJqcnAzTLmH1LLT23NwcgUCA8caenh4MBiOPZhOJRGjt1NTUwMDA/f19DocTFBSUnJwskUjW19flZU3Dw8PyQhtYFgAH5uTkUCgUeJlgdj+s5/Ty8oKJJSMjI+7u7rA+qKmpCYPBXLhwQZGX/eeGj4eyqVQqkUi0tbWFjyJM84B8ff/+fSwWC91kWN+4v7/P4/FCQ0NhPfrKygqZTL5z5w4ciMVi5am1OBxOXjHs4eGxvb0NFcbo6GiRSATrG+Hd9uzZM3kErKmpyc3NDWaY5efne3h4rK6uIggSHR0dEREByxTlof+5uTl56UdXVxcKhYJCCoyAQSk2OTnZ19eXx+MdjIBBBoFE0NPTg8PhIINUVFQQCASoX6elpfn4+NDpdKFQGBgYCBO319fXr1+/DvnrQ0dtba2zszMGg4E3cUFBAYVCgXpIbGxseHg4pF1PT094vnNzc/LdDOwPNTQ0BAAoKyvD4XCw0CYlJcXX15fL5bJYLGg0OJBIJMqju25ublBtg9aGollKSgpc1GH+dXx8PAyryLOPoJsszxbFYrEwny8nJ8fT0xPqIREREbB6FqptkK8nJiZcXV2hf93W1obBYIaGhlxdXRXCyJ8bPirKtrS0hHoI7PAgr892cXGBG8/U1FRYjy4QCGD/EJFItLa25urqCv3rkZEROzs7eYcHJycn6F/fvHkTj8fDxO2wsLDQ0FCxWLyxsUEkEg/q15AIGhoa0Gg0dNyys7MJBMLq6qpEIgkPDw8JCeHxeAwGg0AgwAjYzMyMk5MT3Gg/evTIwcEBJordvXsXi8UuLi7KZLIbN27AijtIPSkpKTKZbH5+Ho1GQxnnVf0aZpilpqaSyWR56UdUVBQAYHV1lUQiXb169eMoWL93756NjQ1cHXNycuSyRnh4ONSvORwOgUCAsdb5+XlnZ2coInV1ddnb28utjUajl5eXZTIZFM2YTCYsQ01MTJRKpfPz8/LoCCxrkkd3USiU/O4ik8lMJpPD4fj7+8Okz5WVFTweL9ev0Wg0XNRramowGAycdnp6OoVC2dzcFIvFsLUmrL/HYrEw3jgxMeHo6AjfGdba2mpnZwfTlvT09FxcXA7B6O8bCsp+c3w8lD0xMeHn5yeRSLq7u+WlxrCVz8HCE5ha6+HhkZiYCADY2dnx8fGBRD81NeXu7g6F7/b2dgKBAGNQd+/elRfaJCcnx8fHi8XinZ2dwMBAqIdQqVQymQyJHrZGhI55RUWFp6cn7GiRlpYGW/nQ6fTQ0FDoX8/Pz3t5eUGih91foX9dXV3t6+u7uroqk8kyMzMjIiJgqkNoaOjNBtHjagAAIABJREFUmzdh2xMKhQKJfnR01N3dHQ4sLS1FoVAw2SApKcnT0xMWFvn5+UH9Z2FhAYfDlZeX37t3D+YtfOi4d+8eFJdgWy6YoREWFhYSEgLzrwkEglwPkRfa9Pf3k8lk6F/Dxn7Q2jdv3oyMjIT5IWFhYVlZWbB61sPDA1p7bGwMh8PBgU1NTXA9lslkBQUFvr6+sPFIQkICLLvd3NwMCAiAbcjGxsZgk1UAQEtLizztsri4WL4NSkpKiouLk0gku7u7AQEBMDpCpVIpFAqMN3Z2dpJIJMjXlZWVx48f9/f3Pxy7v1coKPvN8fFQ9uTkZGRkZHl5OYFAgK5TWVmZvCI8JSUlICAA6tfyVj40Gg2+4wMeYXl5GYonAICZmRnYEVAsFk9OTsJWmRwOZ3x8XCAQAAB2d3cnJyehjVZXV6GfBQCgUqnQy5PJZOPj4wwGAwDA5/PHxsbgQAaDMT4+Dgeur69D+QIAMD8/DzUQBEGmpqZgB1eRSDQ2NsblcgEALBZrbGxMJpMBALa2tuTTXlxchOdYVlZGJBKhY56UlBQUFARbYfj5+cFCm6WlJSwWC4X+rKwsyHQfOqqrq9PT03NycshkMp1OFwgEsbGxoaGhkDF9fHzk2yB3d3fI1xsbGzMzMwetDd9TLhQKnz17xuFwwAtrw5t8e3tbbu2FhQW4g0EQZHp6GrZCFYlE4+PjTCYTDpyYmBCJRHAgFEwAAEtLS3AgAGB6ehq2qJdKpc+ePYMDeTze6OioWCwGANBoNFgHBABYW1uDYjcAYHZ2Ft5dCIJMTExgMBhfX98f28I/ARSU/eb4eCibSqWi0WhbW1uoSFRXV7u5uckbJ8H8ECaTCcOGAICFhYXY2Fj43H4EKC0tJZFI8vr7oKAg2N8Krk+wFYa81dzIyIipqenHEX6sqamxsrIik8mbm5sikSg2NjYyMhJ2Q/T29obn+FJbLljZf9gTfw+Iiory8vI67Fm8Bygo+83x8VD29PT0tWvXoJ5bWVnp4uICnRpYCiHnr/j4eLjVdXNzKykpgU7Nhw4WixUfHw8ddpjPx2Qy4fnCes61tTUcDifvH+vm5ibvk/Who6yszNXVFTqt4eHhYWFhXC6XzWbL9evFxUVnZ2eY7Q5f7AJFpA8d8MUdMFv0Q4eCst8cHw9lT0xMBAcHCwSCe/fuyRuTwsITKE3KG/+vrq6iUCjob34c4HK5IpFIIpEkJiZ6enoKhULYUxTuJ+bm5nA4HFRUYQV8b29vVVXVx/GQVFRU5OXliUSiiIiIsLAwqVRKp9Pd3d3lgTsnJycYuGtubnZ2doYRv48DwcHBZDL5sGfxHqCg7DfHe6NsRCYVCkXSt99uIlIRa4+xt88WS6VikUgilX3392USiVT2mp+ZmpoKDw9PSkry8PCQN04KDAyEFQ3e3t5Qz4U5XrBGmUqlQsn4IwCfz4+Pjw8ICIA1fj4+PvJUYgwGI+/g6uzsDIX+2NjY91KwLpWIhSLJO6gMUiFvj05ncfhSmVQkEr/ukj6HTMSj02gsnui1f62pqblx40ZoaCisMDzYOAm+cQ3qIQ8fPsRisZCvx8bGPo7dVWRk5HsJP0rFIqH4XS6iWMDZozPYXIHsey4iIhJw9hh0Op3O5gtf/dbhUTYiEYtEknfwPhEhj0WnM3gCkVQqEX2n9RAJn0Gjs/nv55Z7b5TNXeuPiUgc2X/bCSC9d+Pxbu5BETnzm1MlmSmtz7a+48sbTxuiwjOnaMJX/0alUu3t7bFY7NramlQqha18oH4dHBwMS43n5+cpFAr0N3t6eoKDg2Fx4Evg7e8srW4JvmfteBVSxiq1r6trdHKJw2Our65zRN96CO7uUn/Xo4GxWabwrX/mVcD6oJCQENjh09fXFzZagfo1LLQZHBx0cXGBieq1tbX6+vrv4xUHsrHWohs5Nbtvec/LmItFcX6uGPLN4uaFua6s9Px5luS13+TvTBbEB1E8PYOi0x9Nbr76YFRXV5uZmcFsHNgNERYKwuokGG+EbV4gXxcWFqakpLy6R+Tvby2ubL5+WfguILSlqb7unqcTSzwBc215jSv+zgsq5a0tL9H57+GiAwBg24MffpzBmlsJhU3Mt+RsMW06O8ITg6XklHcuzbRlZt5d47/+EJKdiewIAobs4+8XcKfzGf+VLxweZbMbC1NvPRh62+vOXuiL9ydi8X7V7U/GB6pv5tcxv+Wbkv3FsowoCpniF5HeN8/4ofN9j5S9P1dvfw3TvvP1J8vDTVkpSbdKHi7viwEAUuZqy72ctFuF1VX3n6zswe9sjzfZqJzWuo4LiMiZXRmMpuDu9q0DCaOnpiA+Mf3hk+UDz7F0oafCF3X5grbb0NZrLDw1NeXo6Aj13NTUVB8fH9jhQV4KsbS05O7uDvkavnOko6PjtWGoZ03ZxKD0+W/eWTBV4xv2+eb/hbuTCWQnayf3lOyaWWpruF/44w14COQl74O/OZLg404ODPEik28UtTF/sMK0v79fWFgIX8Tj6+sL16fV1VWo1wMABgcH5S9Oq66udnd3f08vEpN1Fkei/TLX5NdJuPe48W5CQlJF+zOuDAAAOKsjBRkpufml9Q/bF/bFAAAg43cWRqif++qqm29mQf3ESIUHMWSCBcTb42U5qSk5pU9XWPIf2KF2FRbXzCxNZga4+Wc1CF6ZQWlpqaenJ4/HYzKZBAIB8jUs4od6yKNHj+R6COx/DZM+X8JkYybWJ+WlBVz2st/48kWXMmdj3a7ZoMnxWfdXl9oCKMEju9CZevmiQyy33TS/als1/34crsDAwPcijDRmebuGFe6+mDDC2+6qKUhMSq3qmoIT/f/Ze8+4tq703/flPfdzzrv/59x77jn3fO4kTmbyz2TiZNLjOE6x47gb9266QA3UEUISAiF6r6ZXgei9Gpvem+m9VwESEhIItee+WETj2J6MHXsCcfb3RT5Y0dJee2vvn571rKesjjYlRobGJWeWVzfMKg3oTaVhzO++/u4WkROdfr+/PY3O8J7Ygu2FR8kRgWGJuYOLKtPnL7RkWZ4/eYfE8o/OGll9WrH3ULLXE4SOTjGVJhtQK5sqTY/2C773oGcOPfCzXZURoWGpadkV9e2rOwAA+q3FVL71oW9P2NKF2WUNDcWhLEGsAmCl/2FsWNC99PKZDdPzsNWQ6k0TxAzNTZWnJ+Q2jbz8b/Urk+yN8XI7K8da6e4/V3rzyDbE8NSMUAGN6pu5rlGVRfOpLn6StIirx79k5u2GTMmmGsnXLjP8/akkdk13bRCPndPQXZHsyxZGFBdlujLZOR1zu7Mwauf7OxvK7pEo3Ja5p59c6O/vFwqFMpksODgYxfOpVComkxkcHGw0Gh9vpdra2mpubo42Kp9Jd3EYjuk/8tOttbM2Jgl1IxAIvICUwRUNgHGmJYdDJbGcuHyhb/WEEgDAqK5JEBz+5PNrZJbIP7W3t4RD47avbC/3lnk6UxwY3MSKR6bHdL4rPygyZxNgpS7RGsdpWX7Z71Gj0QAAauxg8l+b9LqpqcmUcZeZmYkypPPy8l6Jld0g8SUJYubRLWpU1qZ5E2nu4swUFzI+vHRALR8NZBHdIlLjvRyOXbglGVIDABi2O/PCbt2y9Qj2ZDoFtHTm8zh+fdO9YVyqb1x2blIwgxvYt/b43bVRGMm5fPl2RPng06Z4dnZ2cnIyir82FU6ytLREel1dXW1paYn0OikpiUgkog4vT9NbGGju6GPScq18IjXAhUQiu/glDqxoAIzjDVkCpiOTxeG7edXMIaNhpyFJ8PmHH99wcBb4po6OlDGI7K7VrYVH5d4uNCKFk1Y98LgXYGuxw5d0/fCJ6zkTr0Cy0fYjn89/+Y+qjOU5eIlX0VQNipJ7PLKTd3p6IsPePqFhZnO504vp4B2dHiOwOXrFtgzZUcat2mTP2xYEN28Bkx/V2ZnN4wX3jbcFONOD0vKzY31dRNFDMvQlGgfux9rbM+LEKXxHO5/0hs2n7ve9k2xZijeTl1CNJNuonk31YVLdwjNSwh2IjKI+qWy8ikUgRaRm+lGuHLPhdm8AAOi3ZfkBzDskllDIEQaLayui3XxTJ8ZquA60+Jyi5ECBS3DmCrpTt2fu8e1xVFGgF98zNH1gSfXPZ/LcM361kl236xnWPQhzwHtWAQDMVDniXe7X1XjSafk9WwAgERDc8x/9NG41gsdJqa4IcHV70Fkb4s4X50i4Nhdx3ND8vCzGrQuOQdU/c4IsP2DRXJpmn/FDPTg4yOPxmEymUChENheDwTAVzjbV2Hy8cFJtbe0zH+Ce0gg8O2gUHUQvL4lwJnBjR6fGxSIyI7h4ebaNR8An3u/vux979fLlqFZ0zsalR2V0B3Z8djybLmzsKhFwvFp6HroSbELzWwab8xyt7bN7dt1GBoMeAEC7mhfKY/qmLz3DzfPCLC0tPeGvNxVaMfmvMzMz7ezsUGCvs7Pzq/BlI8mOXUD3gmzAl0a8VzkHACN5Xg68pI7SaBw5YA0AVrvdmczswV3zWTZ4X+AeVFqTLeQFtnTku7oG1xSHXjlt5p2Qk5vof+n09YTalccPo1qfr4hzJ7lEjSuftF0LCwt5PB6ZTEa/QN3d3Xg8HhXiQB25UIW86OhoGo22vLy8s7NTXV39tC+7rzjEmua/G/Jp3CwNZ+A48cOToxleFIeAkvX5DlcHcnxZ13BNwvnTZ+J60bNnXB+ooBKoMVkJTkzvjr5SLsO9ofO+myM+JLdlpC2fakPI6Vnb/cit5fyYwKiEFDcn54LJF3fAPAsPD49X0mG9Mpbn4JW+O9HVTj7BPr1lAwD6Ul0IblltBaEOnDgZAMzVc2hOFdO79+tie6G7V1hhSbJAeK+jI1vgGlyZ7XPx7PXQ9LzMSPdrl2zTm3flQL+zrdEaAWC2MtzGTtS/8uS6co8lO/EB+j42B4poeHbNlBEAivyp/IjKB4kCkrAQAFZbMmkc786fHBuDpfHCyLSi7AivkLTaihihf1JFEuvEOdvEnLxUP/qJC5TmeQMAgHIiwObHa6x7vf2dkRyCU0S5+qWDS1+dZI+V2VlRGn/yZdffo+M9igFAN1JCJvJrmhp8GLSsNjmALo2Hd8/v3X2fbiGQRY8uKfR2cX3YVRvsxhPnZArw1wm8iJLi3Iig4KyHY48fRjNTTqdwninZw8PDN2/eRPuNMpnMxcUF6dfThZNQfmNmZqarq+vKysrTH9VTGoF3Dh5Hd6ZqMoLjGFY0AQBLdbFUdkRTSTzR0W9OB6CZjuSyktp3P0E50eDKEeU9yBVyvJu7St35vveLo++cOU508Qrw5N66ahVd8diye2s+N8LNWXSvZ2Hz6Qm8KKgwBaopOjExQSAQTKXmTDXqcnNzCQQCqqFx796906dPv4pGYoYGiQ/JPe6nSzASxCJHFE8AQI/Eg+Iu7q6MtyP7LgAYF1td6QyTZK/0lDq7eOWWiwXcgJaOfD4/qKY04qbZNd+47HxJkm9AbOsE0kT9WFN+Sn4rAKzUxOPs3LqWn7zlc3JyLl68iB54VDgJZYSXlZWRSCRT2zYGg4GSQr29vaOjo59yc0FfcYg1PWAO/UMzE8bAhZQuAcBaYzyBea+1PIVODxhTAhgXQxjklF4leuPWbBOPycu8n+fODejsK+U7iUrzoywunCE6iwK8eea3cLEVUwAAYOzI8nNg+d1/UMa2s46sn/1lj/dz4ubm9kpqjFTEch19JLve2I1ed5J9at0KALTFsx08CzqKIx2d7y0D6CcfOFH/IdnTjVkuAr/M3Fi+e1RHR7YrP7gqN+Daxbth4oJccVxAWGrXNPoSd/rr8nKqegFguiyMQA0cXn/y5PdQspO9GfzkGjSh7dFyJpFVOawB0OX4UNxiHtSlCImCbABYrBdTnL27dh260JMfyQ2MzUoN9gwW11bECP0SK1Ndzl4iJOUUZiVF+kTkzCqMAAA7C9FsK0FSKwD0ioVEfsraS3tBX5lkKybLrx0/QQuITUmMT8msbKlOZ5AcQhJTg/h0un+2TKO+Hy9kcH3TU8Nvnj3qUjS8O0w350MhhRfkCpnOVe3VPixqRk1HRaof2y0kN1fsKfAo6PyZFayZKibhGfXT6qeni7rArKysKBQKLpeL/LkTExOmUj7Nzc0EAsHUqIVMJptS2p6guyQMxwrctbJ3FlM8HFyiagGgPUVAck0Z6SxywDGbl0G/2Mwm2se37zqDNkZrXVhuWZVZArZnY2eJK8erpiaDeNv8XknHWF9jYnRi09juc27YnEn1dWL5pI48ax/1VyCXyysrK3U6HcpvRKXmkP8a1Y99vFB4eHg4qliEymC9HMaGdOHp83d9Y5ITE5IKyuuKE30oTLfktERnB1JU2eD2xlgYl+IWmhTrQz193TpnZPeLW+4spDPdJMVJHJZ3Y2sWky7qmegJ5zG8otIkiWE8z6j+1V1Xy2x7JsmWEJyY5OlEcY8tkz91x0skEtRkCzVWR/Y16paJ/CGpqakODg6of5Cfn5+rq6tSqXz6THqLgiwovrtWtkGaLLBzutcCAN3pQltu2sSjUjrJuW5KA2vtVCvz5L7dH1r1VL0z1Tm9PNuV49fRW+JCd6+qFjtY2UYVtk0MNCXFJjWNISXUloXxbKztKQTLrz/58IabZPmlf6mNRqOHh8crcYxURDN/PGcVHJ+cEJ9cUt2YF+1OZYuSU2MYeGJS46xqudufQ/eMTLkntD91h1w1u+udmqwTMzmeaZJINje0tVXMYvn0jLQEujD94zMzYoOEgcnDa2gpYxh+EE+yp0QkJbnRHUJyW9X7yTGSIMCdu0O9l5QSn5hx/2FNkr8zwy04NSHY0YFd3CeVTzzkOlJCUzJ86bfPEIW9P22ydGaHsHwixYl+Ar+k6uIwZ2H86EgNn8K4l56dGOIljMrf3dEA3UBlPIXKiUlO4NGp4cU9z95kf6EZvyrJ1qkWSsSJ4eHhkRHhEYlFU1LV/KP7cVERidlV07IdAM3CcEthVkZ6ZhrtzjWv8p8k26Dqbqjvm5rsaGqZk853N9WPrWwZt1bqi8ShYZF5D7rlP48I0iun62ublpTPOHFUfHVqagrl+5l6jqDCSagUPbKvc3NzcTicKe34GR9VFXXu2ClLMp1OoYrCc5urc9wYJCqDTnR0zmqZ0RuUD5O8iGS6M83u1KWbCd27i6WNsXq+s0fO/Ryhi09TV6mA7dG1sPgwxY/OYHM5LLogYmBXoI0jBR6HPvzwih2DzaTxQnOmX3Sr/il0Oh38ZF+bGhM/4b9GiZGBgYHOzs4ymSwnJwdFLr8ky+MdadH3IiIiwsIi0ks65RurnVVZYWGRBbV9m3ow7igGWqoy09OSI32tbRyKJnYlW7061djUMT493NLcvbQy3tTYLteDav5RVtK9iJjU2kczj+3d6Sbay6PCwsQljStPP+sAOTk5KSkpfX19NjY2yL6urq62sLBACd/Jycl4PB7Z1z4+Pnw+H2X/P83Ig3snvv7Bmsqi02jCsLyOunwXBzsqk0EksyXNM2BUViZ6OlLoLnS74+cupw3trvPU041cBldSmevOC+zsK3OhCbrm56tTA5gsZxdnhpNHdL90d99lZ0utVGwsDdVxCPaJnau/ENT4/LwqK3t+qDkhIiIyMjIsLEJS0adSShuLxRER0YX1g1oA/dZqT0N5ZoY4IURoZc+qWdx9+pSLo82tnaPj/S1tfSsro01NXZsGUMx0iWMjIuMymocW/hHyq1cPNRZHhoVlVnUqnuXG3zvJ1g633Y+LiIiIjAgNjylrmtxcn67KTgiLTKh5NKcH2NlcaK4qEIvFkR4sK4bPwE8/tKsTvc3d/WPDPe09w/PTfc3tg3qAhd4HidER0cl5vTOyx77e7b66/IiwiOz7XRuvYtf5t0ql0a8VxHr6RWc/LE+lk9n3x144GPBfMjQ0xGKxLC0tUUzuxMTE4z1HzM3NUQVqiUSC/LkGg0EikaCMmyfYUcsnh/q7Otrb2tofDc/tGEAlnWpvax9fUgAAqOcbq8sbOvtaq9Ip9o55w7sLSr12a1W6plQr11bXt7ZVq9LVbSOAcWtqqLuts39J8Q/3pWptbmSo/1F3Z3t7e/fwjOpVODZR80Pkr6+ursbhcKaes6aeWIGBgWw2GxW3s7e3/w0aienWuoPcXFOKq/NivZ3co8ef3nh6aQoLCx0cHGxsbFBZrqKiIjs7O6TX0dHRVCp1eXlZq9W6u7ujDi9SqVQsFqMaII+j3d6YGOzr7Ghvb2/vHpzTAWwuT3S2d44tbACAYXOu8UFFQ3tP10MJwQJf8pNzwKjdWpWuKlXKtVXZtmZTuiLVAIBha3qop7Wjb0X59DOqk62uql5RFppIJPoNaoxsztT7e4gyyh5IwgXOPqnzz4irfln2bSqNtL9IwPcqfvgwxosjjCnZePX37wvz22U/rk92SWKCffxDS9sn/h0njoqvIn/u8PAwkUg09WC1t7dHhf1QIQ4k04GBgZ6enqgiz4uxPZPiz3Xx8PUVuriHZS+8ohjblwF1gzU1pjHVgM7KykKB6gaDISQkhM1m7+zsyGQygUBgZmb2mzQS0062lYf6eYbEZnRPv/rfaQDIysq6evUqKnRXXFxMIpFMHRQfr0Dt6elp6qcskUhetMaIUT2V7M/le/j6uDu7hmRLX359+yoQiURcLvfffhi9erC+KMzPMyQ+e2j5GdtIL8++lWzQKtrL0/28vWIk5dOyV7Np/JK8PgnrAwMDqDY0an1taiRGIpGQP1cikdBoNFPhJC6Xi+q3/QrU0umG6rL79e0LG/viW9zY2EA61dTUZG9vj+JDsrOzUeM0o9GIWn3LZDKlUunm5hYaGhoTE/PaNBJDcfeomw+6DqgNEIoP8fX1FQqFqAI1m82OjIx8eu/xeVAuTzQ/rKyqbV185tp+L3B1daXT6Xs9i1fA/pXs/cfrI9n9/f3e3t4tLS1kMhntv6EO5aZGYqbG6sHBwUwmUyaTAcDTC2QAAP3myGD/zM/3BpfHu1q6x17Vw6qcG2rp7p+enhwaXXh5Kx1pUENDg52dHYo3z8jIIBAIKLEoICCAw+Gsr6/rdDomkxkUFGQwGMRi8etRyS83NzcpKam8vNza2hoVkk5MTMTj8UtLS0aj0dvbm8fjaTQamUyGGqsDgFarfaZqG5RzXb2jm9qfvTTY2Tw4s/aKJmuc6m3vnZmf6B+Ykb6CEF3U1vLlP2fPwST7+Xl9JHt4eNjBweH69esoh6K2tvZx/zUOh0PF3lDhJJVKtb6+HhYWZiqQ/TizbYX+QcnjCjBsyyZHR2aW5UaApjS+oyBZBWDUbEyODk8v724absmWRoaGppdQ2oBepVSsLs1NTEyvKZHia1fmJkYn51Q/LaV3lNLJiYmKGCHRPfrRQEt4YGTH3DMCYF4U1HMW2dcpKSl4PB75r1FHG9TYASUWAcDU1NSNGzdem0ZilpaWpka90dHRFApFKpWa/Neo8SOZTEaJNn19fRERESj56Ods16WFhIrrNQDq9YWRkTGpUgu6mXAOOaywGwBU6wujo+MrCg0AgFG7tjA1PDy2LN8CAINeo5TLluemxqcX1OiL1iqnx0amFmWmh0S+ND0+/iiCQ/Ys6hioTvGLLlp/6XAhDw8PrF72H43XR7KHhoauX7+O9hsfPnxoY2OD/LlisZhMJiN/bmBgIJfLValUqONtZGQkajvwMzRL6YGCmPsTBtVMgpeTA5VKpvEL24ab8/xc/DJX1ifEwa4MFovFERa0jM2P1AfwnZxd2EQSI7V2HGApgku0c3Rx5zHpblGjsvWOgig2i+nEZnvFFq3pQD3XESZgMF24uKsn74jSZEZt9T2Rb3rjS15KlUolFAof70CGYtoCAwM5HA6yMV1cXEw9DOl0+p07d16PRmISicTc3Bx1UIyMjGSxWKj1opubm8l/7ejoiBJtBgYG7Ozsqqurn/Zla2bq3bnCxgWDtL/c05lGoZLpbtGPJvrjRM6J9/uXx2q8OHQnZzZbGNm7uPKoPJHLduI4Ue2pHj1rO8qp+ww7HNvNg0119EurWVmdzg53Z7BYLGeB+MGAFmCmOZvtSGaz6dfOn3UrGwHNVAiXW9j7K/1yCKPRKBAIsN6PfzReH8nu7+93dnbe2tqqq6sjk8mm/UY6nY7i+QICAgQCAWrU6+zsHBoa+kyviHq2UcBwqZlVjJYH2lBCZ5XqkdaHdZ39tTkBbn4p1Tl+lvb8pvG56hieraNXZX19YdH9kcm+cJaFfWDBtm5ehL/uld+3JRv0YjGislOYVhYRxR2jbYWk2xZprfNt6e4UYfra1mZlqONtftwqwHxVONEl9iUD7JVKJWqPkpmZSSKRZmZmDAYDKoylVCrlcjlq9Q0/6XVOTo5YLH49GollZWWh0BfUFnl5eVmn06EO5UivmUwmsq97e3tJJBJq2/YUxqHye3R+tFSnEHtTBbEP1Nvr9WXlj4Y6Y7x4aSWViR52ZM+Mkcn+SIYVLTi/ta685GH7SE8l+ZpZSPOybCjf1pJQMaWStmdQma6JyQGWNqwHQ7MNqSIrkuejidEoDsE/e0AlG/GhmPPzewF0BYFMz9TWl/naX2HC+p6DSfbz8/pI9sDAgJeXV3Z2NpFIRPHXqGc20msUj4wa16LCSUajEdW9e+JzVnuz6FS3gXVFQxyT6v8AAAD0O9uKukxfV5/4rFDy6fN3+B4ivhOV4RpTVVESKuILvX3p1rfwQQWqnfkAukNujxT0y9FCrnewx92zP9qz3DzcXOwJnIK64aJAmjCxGwDm7ic4iWKWADb7UuxJHuMv59hEX1VGRgaZTEaunoCAAC6XK5fLt7a2nJycUGOa+fl5e3t75OiPiYl5PRwj+fn5qCkahUJB9rWXl5erq6tWq5VKpUwmEwn64OAgkUhEjQ6Wl5efunt19SludO9MjXY6kO2Y9HABAGBHs7lwKMLBAAAgAElEQVQ2FO3JS87K8safPm9O9/AQMh0cPKJK6goT3Xh8bz8v8wsXgpuX1odKOEzRiBa2Ru5znV283R3Onb/B9RC5sqkUftyj9loB2TG/Vw9gLAsV+BR2A0BtMsc5sPAl/dlubm4MBuPlPmNfgEn28/P6SPbw8LCtre2NGzfQyWRmZqJ4ZKPRiPzXm5ubcrncxcXFz88PACYmJtzd3U3t+EzIhooYFF7X2tbE/TBLotfA/FJDTkxMdnlZhg/XK/FhUai9g1f7xPyjB7nJaZnhXJw1N3F5ZTqSce2mh0ShmfUm22V0LMLOXIgzPUiSzCUQ4ip6p4db4+8ldi8qO7M9Sc6R4wsLOZ5Wl5yjVgA2OuLtHP2elYH/YqSkpKD4EADw8fHhcrnoB4nJZAYGBqLCWHZ2dihxv729/ezZs6/H9mNBQcHVq1cdHR2Xl5e3t7c9PDxQfMjy8rKjoyPqbzkwMGBra4sKZ1dWVgYEBDxVY8TQIvGiuCdvw6bEh8YOLlpankoN9s+vrQ53YycXVab6URh+eRMzExWZqZnZaSzLaz5Z7QtjdfYXjrpXz60NFDAc+APboOwtYTI40cmhBKJr4+jcQG1uXHqldH02nk90jaubn+7g2Vx2yu4BgPuxbG5YxTPKm70ImC/7D8jrI9mDg4N37txB+43In4ty3vz9/Tkczvb2Nir8jwqPjIyMIHvz6bPQyYYCOUxx5yoY5EUJPiQmiy4Kb5iQDjZKInOalKAsTQmkMRmOXK/MlpHBzjI3NpMbEObrI/RMeyDXSMXR4dWzaoCN7JiwognZZFcRn+/syGC538tfBAD9StY9EZXDZTBoouxaBcAjsQ8zMO8lFXtjYyMwMBD5Q1Aj+Z2dHblczmKxkD9kZGSESCQiva6trcXj8WQy+fVoJJaRkUEkEtfX13d2dng8no+Pj06nW11dJRKJyPPT19dnbW2NEm3Ky8utrKyQ4/sJpG1ZNJZn/xao59oiPZyIJKIgPGd6eaYwMby4Y1q11BMuZFFpNAY/uHVsqiYjmEFlevgECtmMpIZZ2VRDRGj81A6oJ5rCIxIeLa7UpQfRqRRHOiehtHPbCKrJJl+OI43BpjlQE1tmwCBPcqNHVY69zIm/woT1PQeT7Ofn9ZFs1EhMoVBIJBI6nY6ajvv7+wsEAqVSubGxgWJyjUbj5OSkqdH4MzBu1WcE+8ZWbgJAZ8sGhaJMzQCt1jg5vuMuhKQkkEk3pqfkIh8IDYP52e3VlfXQcI3AXdfVbdBsawsL9K4CqKvTbSp1bZ3gLthKTVpfXNkZmwRvL0hJAfnqxviEystXHxqun2qN8ffJaJx6yXNXq9UajUaj0aDCsxqNZnV1lcfjocZpIyMjNBoN+UPq6+vJZHJTU1N2dvarKL6692RlZcXFxalUKk9PTx8fH71ev7i4SKVSUdGrvr4+AoFQUVEBABUVFaZGB89gazraU5BWOwMAOs3m+rpsWw8AoNPu6PRGANBtb66vr6s0OgAAg1Ypl8mVap1Wq9PpjUa9dkdrADAa9NodrREAjFqFbE2m/EfNf61aKdtQbm/v6I2wPlAqFAT3rLykkY01Evsj8vpINmokFhISwmKxkH8gICCAx+NtbGxsbm5yOJyQkBCDwTAzM0MkElGizejo6DMbianmu9PSc3p7ZiAkGCQSiI4GAgFcuCCRQEIC0BnAZEJmJmRkgDMHyGRISoLMTBC6Aw4HYeEgTgNfP8DjwdMT0sRw7x44OACPC+npEB8PNDo4OYE4HYqLFhrykzNKF15FQtnOzk5gYCCfz9/Y2FAoFBwOJzQ0FJ0viURC9nVbW5uNjQ1y9Pv6+v4GCeu/AaiRGMpv1Gq1y8vLTCYTuel7e3vJZDLyX1dUVJBIJBRE1Nvb+8xGYtPNBfGZD+T/9kQZXWtBiqTq0ctnYb2qrjR7DibZz8/rI9nDw8N3797F4XCoHnRAQACLxVKpVJubm87Ozqjw/+TkJJFIRA6BhoYGDofzzEZiAEaNZntbqQaFAgDAYIDRUVhc3P2fU1NgqkyysAAjI7t/r63B0BCgKBSVCoaHQS4HANDpYHQUln5qkDY5CTO7BeN2dna2Na8g99lgMKD9RtSIh06nI/t6bm4Oh8Oh9URra+vdu3eRXhcUFBw/fvz1sLLz8/PNzMyEQqFOp5NKpRQKBfno+/r6cDicqVGvtbU1sq8TEhL8/f2fnUIFOrV66181H315DFuqLd2rOIpIJOJwOK/gg/YaTLKfn9dHsgcHB21sbGZnZ5E/l81mI/+AqfD/0NCQqfB/TU2Nra0tSox8DZDL5WKxWK1Wr6+v02i08PBwABgZGTE1dqitrbW2tkbnm5GR4eDgIBAIXo+47IyMDGdnZ4PBsLS0hMfjUUXZR48eWVhYVFdXA0BFRYWlpSUqtBsfH08ikX51oYL9Bpaw/gfk9ZFs1EhsaWkpKCjIzc0N6RebzUbL/4mJCTwejwpFocKkKPHk9QDZjCsrKy4uLqgRz9DQEJVKRf7rhw8fEolEpNdpaWk0Gm1qaionJwdFK//eyc7OTkpKmp2dpdFoSK97enpwOBzabywrK7Ozs0P7jQkJCXQ6fdG0Wvr9g8IZ93oWrwBMsp+f10eyBwcH+Xw+m8329PRUKBSbm5tsNhvVlED7jajQHWrUggqTFhUVoQpw29vbOTk5aOG8urqanp6OvOHj4+NisXh9fR0A2tvbc3JykA+0srIS7Wjp9fqcnBzkIZXL5WlpaWNjYwAwNTUlFouRNdfd3Z2dnb21tQUADx48QAMBIC8vD+X7bG1ticVi1H9gaWkpOTkZDRwYGEhPT0ep1Q0NDcgnCwDFxcWoUYNKpcrKykKFNaRSqYuLC7KvUSMetJ5Av09Ir3Nzc02B6hwO57XxZfN4PCqViuJDuru7SSQSanRQVlZGJpPRzR0fH+/k5DQ3N6fX6xMSEoaGhgBgeXk5JSUFZSGhq42yYRsaGlAaLQCUlpaiq61Wq7OyslDZqeXl5YyMjJmZGQAYGhrKyMiQy+UA0NzcXFhYiG6S0tJSZObrdLrMzEw0jfX19ZSUFFRLYHJyUiwWo1o3HR0deXl56Ke3qqqqqqoKAAwGQ25uLmoqpFQqU1NT0d01Pz8vFouXl5cdHByoVOpveLH/XWCS/fy8PpI9PDx8/fp1lACpVCpR/ggATE5O4vF41JimsbHR1GgcJQoivQsMDHRxcVleXt7a2mKz2YGBgVtbW/Pz83g8PjU11Wg0dnV1WVlZoSewqKjIxsYGGW4xMTGoo6BarUYVLVQq1dzcHI1Gi4uLMxqN3d3d9vb2KOOuvLzczs4OhSHGx8c7OjrOzMzodDqRSOTm5qZUKqVSKY1Gi4qKMhgMg4ODJjfOgwcP8Hh8fX09ACQnJ1MolNHRUaPR6OPj4+rqura2plAoTP6QmZkZk/+6ra3NwsICFYrKzc21tbVFYhEREXHixInXo5Jfbm7u+fPnTfmN9vb2KP66vLwch8N1dnbCT1cbFZnx8PBAkUVra2t0Oj0qKkqv16OONqarjcPh0NVOS0ujUCjDw8MGg8HHx4fH46GrzWQyw8LCNBrN1NQUDodDu9ltbW3W1taobCRqozE8PIzKKDKZzLW1tY2NDT6f7+3tvb29PTU1RaFQUFhLW1sbHo9H/Rny8vIIBAJ6ICMjIxkMxvz8/M7ODp/P9/LyUqlUS0tLDg4OSUlJOp3u1q1bZDJ5jy78qwST7Ofn9ZHsgYEBIpG4sbGxtrbGZrORXg8PDxMIBBQvUVNTY2dnhwzb1NRUAoFgCgR0cnJSKBQKhQLpNQBMTk7a29sjoW9pabGysjJ15LKzs0MV8sLDw1FFC5VK5eLigiKC5+bmCASCaYVu8qiWlZVZW1sj4y4mJoZMJq+urqrVapRzrNfrFxYWkILAT9KDzOry8nJ7e3sk9LGxsQ4ODvPz80ajEVVxU6lUa2trJr0eHR3F4XDI/1NfX29paYnWE+np6Xg8fmpqymg0BgUF8Xi84ODg36Re9r8diUTi6ekJAL29vZaWluhql5eXP+6/JpPJUqlUo9Ggq63T6ZaWlhgMBlqEoUBAZFY//rOakJDg6Og4OzuLUsN5PN7m5qZMJjNd7bGxMRsbG7R6a2hosLS0ROstVIZscnLSYDAEBwez2eyNjQ25XO7s7BwQEGA0GpGbLj09HQDa29stLCzQ3ZWfn29jY4NM6cjISCqVKpfLNzc3XV1dPTw8AGB2dpZCoaDfp+7u7o8//tjJyWkvrvorBpPs5+f1kWzUSGxwcNDFxQUJHzKdkPCh/UZkc6WnpxMIBCR8QUFBaKNSLpdzuVxUOGlkZMTBwQE9UfX19QQCAdlcmZmZpozwkJAQDocjk8m2t7c5HA6KSFlYWCCRSCgipb293draGln0JSUlOBwOCX1sbCyNRltfX0epeh4eHgaDYWFhgUajmXqE29nZIZursrISh8OhHitJSUlkMnllZUWr1aKeWHq9XiqVslgs5L/u7+8nk8lIQe7fv29vb4/0OjU1lUKhIPva19fX1dVVpVJlZma+kkZie05ubm5iYmJbWxsOh0NXu7i42NraGl3t+Ph4CoWCrrZIJBIKhehqMxgMdPpoGYQcKcgwRwuvlJQUBweHpaUl1IGMx+PpdLq1tTUnJyek16jXqMkwJxAIpjZADg4OyBpAYaZKpXJzc5PFYqFt8KmpKTwej8yI5uZma2trZEY8vgyKjIyk0+lKpVKlUrm5uXl7e6OBVCoVWQMdHR04HO7Pf/4z5hj5o/ErJXsf5jqPjIyw2WwikYju6ampKUdHR7RGbm1tJZPJSK/z8vIoFAoKBIyKinJ1dVWr1QqFwtShfGpqislkokexo6PD0dERBcYVFxdTKBSk13FxcSjiGwkBag28sLDg5OSEhL6np4dKpZoiFhgMhmkHjMfjraysoFbfKHN6fX2dxWIhm3dkZIRMJqOBKO0F6TXqzyCVSnU6XWhoqIeHB1IQgUCAcrJHR0eZTCbywDQ0NDg6OiIfaE5ODp1OR17XiIgItDG7ublJJpPRwN87xcXFVCrVwcHh4cOHAFBRUUGlUk2NH7lcLqoo4uPj4+/vr9Vq0SIMOYVGR0cdHBzQfkZ9fb3JUZaZmUmn09HA0NBQd3d3nU63vr7++NVmMBjIMG9sbKTRaEivs7OzGQwG0mt0tTc3N1UqlUAgMLmt6HQ6CuPp6OhwcHBA1kBRURGdTjf9qLu6uq6vr6NlAconWFpaYjKZqJFpf3+/o6NjVVWVra3t62Flp6WlIR8Rxr9EoVC4u7u/mGSnp6cHBQVtbm5ub29v7Q92dna6u7vNzMxEIpFCoRgaGrK1tY2JidFqtbW1tZaWlkVFRdvb2xKJxMbGprW1ValUBgcHOzg4jI+PS6VSZ2dnNze31dVV5JqMiora3Nzs6Oi4c+dOfn7+1tZWYWHh7du3W1tbFQpFdHQ0WvZKpVJ3d3cWiyWTySYnJykUCnKCo4wVsVis1WqLi4utrKwePHiwvb0dGxuLw+H6+/vlcrmHhweKXlhYWKBSqb6+vpubm729vdbW1ikpKRqNpqqqysLCorKycmtrKyUlxcbGpru7Wy6X+/r6IglGS3uRSCSTyUZHR21tbePj49VqdUNDw+3bt0tLS9VqdXZ2trm5eU9Pz8bGRmhoKB6Pn5+fX1pacnV1/eGHH2JiYjQazR5/cy/Hzs5OSkrKmTNn0tPTtVptUVER8o1sb2/HxcXZ2dn19vai32MGg7GwsIASI318fBQKRX9/v7W1dXJyskajqa6uvnPnTlVVlVqtTk1NRd3ZNzY2/P39KRTKzMzM4uIii8USiURyuXx0dNTGxiYmJkatVjc1Nd25c6e0tBTtYN+5c6ezs3NjYyMsLAyPx8/MzCwvL/N4PA6Ho1Ao0O8xKiHZ1NRkY2OTlZW1s7OTm5trbW1dX1+vVqsjIiKIROLQ0JBMJuPz+c7OzsvLy3NzcyQSKTg4WKlUdnd33717Nzs7W6lU3rhxg0gkqtXqjd8zSqUyMjISVULe6xtqv6PRaObn552dnZEB+rySjdyyQqEQlbjcD/j4+NDp9IMHDx47duzs2bMHDx78y1/+cu7cuZMnT7777rvvv/++mZnZ0aNH33777U8//fTixYtHjhw5cODAkSNHLly48Pnnn7/55pvHjx8/d+7chx9++Oc///nMmTOnTp16991333vvPTMzsx9++OHtt9/++OOPL168+M033xw4cODw4cMXLlz48ssvDxw4cPTo0fPnz6OBJ0+ePHPmzF//+tf33nvv3LlzJ06cePvttz/66CN09DfeeOOrr74yMzP76quv3njjjaNHj547d+6TTz45cODAqVOnzpw58/7777/zzjvnz5//8ccf33nnnQ8//PDChQvff//9gQMHvvjiiwsXLhw+fPjNN9/89ttvzczMPv300wMHDvz444/nzp17//33//KXv5w5c+bkyZPvvPPOwYMHzczMjh079tZbb3322WfofN98803T+R44cOCvf/3rjRs3fHx89s+X+Cvw9fW9devW+++/f+bMmcev9rFjx954441Dhw6ZmZl9/fXXT1ztM2fOnD59+omr/cEHH6Cr/dZbb33xxRcXL148fPjwgQMHvvnmmwsXLqCrjW6SgwcPvvPOO+gm+c///M8PPvgAHfHNN980Xe033njj8av9ww8/oLvrL3/5y+nTp0+fPv3uu+/+7W9/O3/+/PHjx996661PPvnEzMzsu+++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" alt="" width="486" height="314" /></p>
<p><strong>（图二）可移除和不可移除日志</strong><strong> </strong></p>
<p>只要副节点能进行处理，主节点将一直异步地向副节点发送数据的日志信息，即使主节点中的事务还在进行或者这些事务还未提交。如果主节点中的某个事务最后被取消（abort），副节点中的同个事务同样会被取消。然而，应用程序的某个线程有可能会为了满足某个特殊事务对持久性的要求，会进行等待直至该特定事务在一个或多个副节点上提交。对于这类事务，副节点将通过向主节点发送确认响应明该事务已在副节点上提交。但这并不意味着主节点中的后续操作会被阻止，因为主节点在等待响应的过程中可以继续进行其他事务性操作。</p>
<p>对于主节点和副节点来说，主节点往replication stream发送写操作信息和副节点从replication stream读取（并且重演）这些操作是异步的。一旦应用程序创建了一个新日志条目，主节点就能将该日志条目写入复制流。副节点一旦从replication stream读取了这个操作信息，就可以重演该操作。并且，如果主节点需要，副节点可以在重演操作之后向主节点发送一个确认操作已经提交的应答信息。</p>
<p><strong>Heartbeat</strong></p>
<p>除了向副节点发送日志信息，主节点还会定期向副节点发送<strong>heartbeat</strong>。如果没有收到主节点发来的<strong>heartbeat</strong>，副节点将认为主节点或网络可能出现故障，并且发起一次主节点选举来解决这次潜在的问题。在任意的时间点，副节点在重演replication stream时都有可能滞后于主节点，所以在那一时刻副节点的环境可能会与主节点不一样（尽管在副节点赶上主节点之后，这些环境最终都将一致）。副节点将会利用<strong>heartbeat</strong>中的信息来判断在重演replication stream的时候它落后于主节点的程度，从而可以让副节点满足读一致性的要求（读一致性的要求决定了什么样的滞后程度是可以接受的）。</p>
<h1>应用程序架构</h1>
<p>JE HA建立在JE的基础之上，所以共用了JE大部分的API。然而，基于JE HA的应用程序是一个分布式的应用程序，这会带来一些额外的问题，而解决这些问题的最佳时机是在对应用程序的架构进行初始设计的时候。在这一章节中，我们将对JE HA的一些主要特性做一个概述，这些特性会对基于JE  HA的应用程序的架构设计有直接的影响。</p>
<h2>在应用程序中嵌入数据管理</h2>
<p>这一小节将会基于JE来讨论什么是在应用程序中“嵌入”数据管理，并且会将此讨论延伸到JE HA中。</p>
<p>在谈论JE的时候，我们通常用术语“嵌入式（embedded）”来描述应用程序和数据管理能力之间的关系。这些通过JE的类库实现的数据管理能力是被嵌入到应用程序中的。由于JE是被应用程序直接使用和管理的，所以应用程序的用户或者管理员都不需要注意到JE的存在。这种应用程序有可能运行在一个嵌入式设备中，比如一台手持设备，一台桌面机器或者一个数据中心。事实上，JE提供的是存储层的功能，因此它往往是作为存储引擎来为应用程序提供数据管理服务。</p>
<p>对比其他传统的客户端-服务器端（client-server）数据管理架构，嵌入式的数据管理架构有以下一些优点：</p>
<ul>
<li>数据将以原始的形式进行存储和读取，而不需要在不同的数据模型（比如，关系型（relational）数据模型）之间进行转换。应用程序可以将一些结构体或者复杂的对象直接进行序列化后存储进JE的数据库中。</li>
<li>不需要数据库管理员（DBA）。相反，应用程序将数据库配置和管理直接纳入到它自身的配置和管理中，其结果仅需在应用程序中增加几个新的配置。</li>
<li>数据库能够自动恢复（recovery）。终端用户不会注意到任何单独的数据库恢复过程。相反，应用程序在打开一个数据库的时候，JE只在必要的时候会自动并且透明地进行数据库恢复。类似的，当应用程序关闭时，数据库也会被自动关闭。</li>
<li>性能会优于传统的客户端-服务器端架构，其原因是嵌入式结构将消除进程之间通信的额外消耗。这种进程间的通信通常发生在应用程序和数据管理服务之间。</li>
</ul>
<p>对于JE HA来说，应用程序通常运行在replication group中的每一个可选节点中，并且都拥有一份JE 环境副本。在基于JE HA的应用程序中嵌入数据管理的方式与基于JE是一样的。运行在主节点中的应用程序可以进行读和写的操作；而运行在副节点中的应用程序则只能进行读操作。</p>
<p><strong> </strong></p>
<h2>写操作管理</h2>
<p>应用程序负责将应用层面上对数据库的所有修改请求（例如，通过JE对数据进行插入、删除和修改操作，以及对数据库的建立、重命名、清空和删除操作等等）提交到主节点上。应用程序有两种方式可以向主节点发送写操作请求：</p>
<ul>
<li>基于副节点的转发：每一个副节点上的应用程序时刻与主节点保持联系，并且能将所有写操作请求转发到当前主节点。</li>
<li>基于监测节点的路由：应用程序在监测节点中运行一个路由程序，该路由程序可以将写操作请求路由到当前主节点，并且能够将读操作请求路由到所有合适的活跃节点以达到负载平衡。</li>
</ul>
<p>当你在以上两种方式做出选择时，必须考虑以下几个因素：</p>
<ul>
<li>与当前存在的负载平衡机制的整合。在某些情况下，例如，一个基于硬件的负载平衡器，并不容易甚至不可能将一个中间级的路由器整合进来。在这种情况下，基于副节点的转发将是最好的选择，因为这种机制不会干扰到当前负载平衡机制。</li>
<li>写操作请求的延迟性。利用基于副节点路由来转发一个写操作请求会带来额外的网络跃点（network      hop），因此会增加写操作请求的延迟时间。这种延迟的增加在某些应用程序中并不希望看到，例如这些应用程序要求较低的写延迟和较短的反应时间。</li>
<li>网络利用率。如果写请求的平均有效载荷很高，操作请求的转送机制会与replication      stream竞争网络资源，这样反而会影响replication性能。如果应用程序的写请求有效载荷很高，那么基于监测节点的路由会是更好的选择。</li>
<li>操作请求的格式。如果采用基于监测点的路由方式，可能需要对应用程序的操作请求格式设计成能够易于识别其是否为写操作。例如，网络应用可以利用URL的格式协议来让路由器能识别读操作和写操作。当采用基于监测点路由方式时，必须要考虑到设计这些请求格式时的额外需求。</li>
<li>路由器的可用性。对于高可用性，应用程序的设计者必须考虑到使用多路由的情况，这样路由器就不会是导致故障发生的热点。在采用基于监测点路由时，多路由会带来额外的复杂性。</li>
</ul>
<p>对这两种方式的选择是对简单性和性能之间的权衡考虑。基于监测点的路由方式也许会提供更高的性能，但也会带来额外的复杂性。基于副节点的转发方式实现起来相对简单，但相对来说或许没有那么好的性能。</p>
<p>由于不同应用程序中的操作请求的格式和协议各有不同，JE HA并不提供任何机制用于传送成员节点之间或者路由器和成员节点之间的操作请求。应用程序必须自己提供这样的传送功能。</p>
<p>不过，JE HA提供接口用于判定replication group中的成员节点，并且能跟踪当前主节点的状态。</p>
<p>以下几个章节将描述JE HA所支持的一些功能，这些功能将会帮助用户实现上述的两种方式。</p>
<p><strong>基于副节点的转发</strong></p>
<p><img class="aligncenter" src="data:image/png;base64,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" alt="" width="437" height="310" /></p>
<p><strong>（图三）基于副节点的转发</strong><strong> </strong></p>
<p>一个基于JE HA的应用程序通过一个支持replication的环境的句柄（replicated environment handle）来访问其环境副本。这个句柄的API可以为应用程序提供以下功能：</p>
<ul>
<li>决定节点当前状态。例如，可以查询某个节点当前是主节点或是副节点。</li>
<li>将一个状态变化监-听-器（state change listener）和一个句柄相关联。这样，状态变化监-听-器将会持续收到来自主节点的各种信息。</li>
</ul>
<p>利用这些API，应用程序可以知道它当前所在的节点是否是主节点。如果不是，那么它可以将它接收到的写请求操作转发到当前的主节点上，过程如图三所示。用于转发写请求操作到恰当的节点的机制实际上是应用程序所提供的，并不会涉及JE。</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>基于监测节点的路由</strong></p>
<p style="text-align: center;"><img class="aligncenter" src="data:image/png;base64,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" alt="" width="367" height="370" /></p>
<p><strong> </strong></p>
<p><strong>（图四）基于监测节点的路由</strong><strong> </strong></p>
<p>监测节点并不拥有环境的本地备份。它唯一的作用就是用来跟踪replication group当前的状态。路由程序可以根据这些状态信息来将读写操作路由到replication group适当的节点中去。路由程序是应用程序基础架构中的一部分，一般来说不会包含任何应用程序特有的逻辑，但有一个例外：路由程序有足够的信息可以识别读操作和写操作请求格式。</p>
<p>为了实现这种方式的路由，应用程序将一个监-听-器和监测节点句柄（monitor handle）相关联起来。监-听-器接受三类消息：</p>
<ul>
<li>组内成员节点组成的变化。组内成员节点的加入和移除都会通知给监-听-器。</li>
<li>组内当前主节点的变化。</li>
<li>组内节点当前状态的变化。也就是，此节点当前是否是活跃节点。</li>
</ul>
<p>路由程序一旦接收到应用程序的操作请求，就会判断此请求是否是写操作请求。若是，路由程序将利用监测节点来确定哪个节点是主节点，从而将此写操作请求转发到主节点。对于读操作请求，它利用监测节点来确定组内的当前节点组成，选择一个活跃节点来完成读操作请求，从而在此过程中实现负载平衡。</p>
<p>更复杂的路由程序的实现将会根据键值范围（key ranges）的分布以及数据读取的方式，将每个读操作请求转发到某个最有可能在缓存中拥有此被读数据备份的成员节点中。因此可以说，该方式实现了一种读分区（read partition）数据存储模式。</p>
<h2>可选节点的热备切换（failover）</h2>
<p>在程序运行过程中，主节点的选举过程是透明的。因此，应用程序必须允许由于选举而产生的各种状态变化，这样应用程序才能在状态变化中继续运行。下面几种状态的变化均是由于热备切换所导致的：</p>
<ul>
<li>如果当前主节点发生故障，那么某个可选节点将会由副节点通过选举转变成主节点。在利用基于监测节点路由机制的应用程序中，这种转变意味着，一个之前只能接收读操作请求的节点，现在开始接受和处理写操作请求。而在利用基于副节点转送机制的应用程序中，新的主节点必须停止转发写操作请求，相反，它必须开始接受来自其他副节点的写操作请求。</li>
<li>当前的主节点可能转变成副节点。这种情况很少发生，一般会涉及到临时网络分割（network      partition），这时候主节点不能参与节点选举。因此，剩下的节点会重新选举一个新的主节点。在该情况下，由于某些试图在此副节点（之前是主节点）上进行写操作的事务会失败，并抛出异常，因此变成副节点之后的该主节点必须转发所有它接收到的写操作请求，或者拒绝这些请求。</li>
<li>由于热备切换，一个副节点可能会将自己与发生故障的主节点间的通信切换到一个选举出来的新主节点。通常这种转变对应用程序是透明的。JE      HA只需重新与新的主节点建立replication stream。在某些罕见的情形下，JE HA有可能需要进行恢复操作，并撤销某些之前已经提交的事务。在这种情况下，replication环境的句柄便会失效。因此，应用程序必须重新建立环境和数据库的句柄，并且通过访问之前环境句柄重新获得所有被缓存起来的瞬时状态。</li>
</ul>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<h1>JE HA事务配置选项</h1>
<p>支持Replication的环境必须是是事务性（transactional）的。支持Replication的事务提供了额外的选项用于对事务进行配置，这些选项对应用程序的性能有直接的影响。对这些配置选项的选择实际上是对持久性、写可用性、副节点读一致性以及性能等各方面的权衡考虑。这一章节将具体描述这些配置选项，并且突出讨论如何进行这种权衡考虑。</p>
<h2>持久性选项</h2>
<p>JE提供了三种不同程度的持久性，分别对应于已经提交的数据在磁盘上所具有的三种不同的持久状态。</p>
<ul>
<li><strong>SYNC</strong>：已经提交的更新被写到磁盘上。该级别的持久性能够保证在机器发生故障的时候，已经提交的数据不会被丢失。但是这种持久性并不能保证在媒介（比如磁盘）损坏的时候数据没有丢失。</li>
<li><strong>WRITE_NO_SYNC</strong>:      已经提交的更新被写进文件系统缓冲区。该级别的持久性仅仅保证在应用程序发生故障时，已提交的数据不会丢失。如果机器不发生故障，这些已经提交的数据将最终写进磁盘。</li>
<li><strong>NO_SYNC</strong>:      已提交的更新只写进JE的内部缓冲区。在这一级别的持久性中，已提交的数据在应用程序发生故障的时候会丢失。</li>
</ul>
<p>JE HA扩展了JE持久性的概念，即允许事务通过向快速的网络提交更新从而持久化数据，而不是提交到相对缓慢的磁盘上。因此，除了允许在主节点和副节点中设置以上提及的各种同步级别之外，JE HA还规定副节点完成事务重演之后向主节点发送一个提交响应。并不是所有事务的提交都会从副节点中返回一个响应。主节点只有在必要的时候才会明确要求副节点产生响应。如果一个副节点已经落后于主节点并且尝试赶上主节点，那么主节点将不会要求该副节点发送响应。</p>
<p>因此，JE HA的持久性有三个方面：</p>
<ul>
<li>主节点上数据同步的程度。</li>
<li>对副节点返回响应数目的要求，这一要求在与事务相关的响应策略（Acknowledgment      Policy，下文会有介绍）中有所规定。</li>
<li>在副节点返回提交响应前，副节点上数据的同步程度。</li>
</ul>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>响应策略（Acknowledgment Policy</strong><strong>）配置</strong></p>
<p>响应策略配置提供三种可能的选择：ALL，SIMPLE_MAJORITY以及 NONE。</p>
<ul>
<li><strong>ALL</strong>：该策略要求，在事务被主节点持久化之前，所有可选的副节点都必须向主节点发送响应说明它们已提交了这些事务。这一策略会保证较高的数据可持久性，因为在此事务被持久化之前，每个副节点都拥有一份该事务所做的更新操作的拷贝。该策略也保证副节点上较高的读一致性，这是因为所有副节点都能赶上主节点，并且在副节点处理replication      stream的过程中没有滞后性。然而，该策略会降低replication group的写可用性，特别是在replication group的节点数较大的情况下。因为即使仅仅一个节点变成不可用，写事务提交操作都会失败。另外一个缺点是提交的延迟性会被提高，因为提交所需的时间将会由性能最差的副节点决定。</li>
<li><strong>SIMPLE_MAJORITY</strong>：该策略要求，简单多数（即过半数）的可选节点必须向主节点发送响应说明它们已经提交了事务。由于在事务被提交之后，该事务所做的数据更新的拷贝存在于过半数的副节点中，并且当其余的副节点赶上replication      stream的进度时，这些更新最终会传播到这些节点中，因此该策略保证了中级别到高级别的持久性。如果在主节点上某次事务成功提交之后，主节点发生故障，选举程序将保证这些事务的更新不会被丢失。之所以有这个保证，是因为选举程序要求过办数的可选节点都参与到选举过程中，从而保证了至少一个节点既发送了事务提交响应又参与了选举过程。选举算法更进一步保证拥有最新日志的节点将被选举成为主节点，这样可以在产生事务的主节点发生故障之后保持这些更新<strong>。</strong></li>
</ul>
<p>“SIMPLE_MAJORITY”策略在副节点上的读一致性没有“All”策略那么高，这是因为主节点上事务产生的更新有可能没有被复制到并不发送事务提交响应的副节点上（由于只有过半数的副节点要求发送响应）。因此，对数据一致性的要求比较严格的事务会停滞在所有有滞后的副节点中，直到这些滞后的副节点赶上主节点。在正常情况下，这种滞后会很小，并且处于滞后中的副节点会迅速赶上主节点的事务。</p>
<p>“SIMPLE_MAJORITY”策略具备从中等级别到高等级别的写可用性，这是因为replication group允许节点发生故障，并且只要有过半数的节点保持可用，那么replication group便可以继续完成那些要求过半数持久性的写事务。由于主节点需要等待的节点数较少，所以“SIMPLE_MAJORITY”策略的性能比“all”策略要好，同样，主节点会向所有与它有通信的副节点发出响应请求，但它只需要等待到过半数的副节点做出反应即可。这样意味着提交延迟并不会取决于组内速度最慢的节点。</p>
<ul>
<li><strong>NONE</strong>：在该策略下，事务的持久性不依赖于任何副节点发送提交响应。只要事务满足主节点上的同步策略，就可以认为该事务已经被持久化。由于并不能保证在事务提交的时候所做的更新已经被复制到其他副节点中，因此这种策略会导致较低级别的持久性（相对于不支持replication的JE环境）。如果在主节点上某次事务成功提交之后，主节点发生故障，那么这次事务所做的更新有可能会丢失。同样，该策略导致副节点上的读一致性较低，特别是在主节点负载很重并且没有必需的资源来维持replication      stream的时候。因此，副节点有可能会远远落后于主节点。总而言之，这种策略会提供较高的写性能，但也会带来较低的持久性。</li>
</ul>
<p>下面的表格总结了这三种响应策略的优缺点：</p>
<table border="1" cellspacing="0" cellpadding="0" width="542">
<tbody>
<tr>
<td width="124" valign="top"></td>
<td width="93" valign="top">持久性</td>
<td width="96" valign="top">写可用性</td>
<td width="120" valign="top">副节点读一致性</td>
<td width="108" valign="top">写操作性能</td>
</tr>
<tr>
<td width="124" valign="top">All</td>
<td width="93" valign="top">高</td>
<td width="96" valign="top">低</td>
<td width="120" valign="top">高</td>
<td width="108" valign="top">低</td>
</tr>
<tr>
<td width="124" valign="top">SIMPLE_MAJORITY</td>
<td width="93" valign="top">中-高</td>
<td width="96" valign="top">中-高</td>
<td width="120" valign="top">中-高</td>
<td width="108" valign="top">中</td>
</tr>
<tr>
<td width="124" valign="top">NONE</td>
<td width="93" valign="top">低</td>
<td width="96" valign="top">高</td>
<td width="120" valign="top">低</td>
<td width="108" valign="top">高</td>
</tr>
</tbody>
</table>
<h2>副节点读一致性</h2>
<p>因为replication stream代表着被序列化的JE数据库日志，所以对replication stream的重演会导致副节点从一个事务的一致性状态转变到另外一个事务的一致性状态。副节点的重演机制保证所有事务性的更新会作为一个原子单元来提交，并且更新的过程会与其他正在进行的写事务隔离开，从而保证这些更新所要求的隔离性（isolation）。如果从单独一个节点的角度来看，副节点的所有行为完全具备事务性，并且满足通常的ACID特性，就如不支持replication的JE环境一样。这一章节将讲述关于副节点与主节点之间一致性的问题。</p>
<p>JE HA支持最终一致性（Eventual Consistency）。这种一致性模型并不能保证在事务在主节点提交的那一刻，所有副节点保持一致。然而，它保证在足够长的一段时间内如果没有新的更新产生，那么所有的更新会在所有的成员节点中传播，并且所有的副节点最终会与主节点共享一个一致的环境视图（environment view）。</p>
<p>由于所有在主节点上的读操作都具有绝对的一致性，所以所有要求绝对一致性的读操作都应该路由到主节点中。应用程序可以利用之前提到过的写转发（write forwarding）技术将这些读操作请求发送到主节点中。然而，对于并不要求绝对一致性的情况，在副节点的读事务开始时，读事务可以指定副节点滞后于主节点最大所能接受的程度。有两种方式可以量化这种滞后程度：</p>
<ul>
<li>以时间衡量 – 在JE API的TimeConsistencyPolicy中有所描述。</li>
<li>以副节点在replication      stream中的位置衡量 – 在JE API的CommitPointConsistencyPolicy中有所描述。</li>
</ul>
<p>滞后的程度主要取决于主节点和副节点的负载，以及传输replication stream时的通信延迟。还有一种可能的情况是，某个副节点在一段时间内都没有和主节点联系，它需要赶上主节点在这段时间内所做的一些更新。</p>
<p>对一致性策略的选择取决于应用程序所采取的操作的性质。而对所选择策略的配置会直接影响到副节点上的读操作性能。接下来的章节将会详细描述这些策略以及它们的一些配置。</p>
<p><strong>时间一致性策略（Time Consistency Policy</strong><strong>）</strong></p>
<p>这种策略描述了当副节点上的读事务开始时，副节点允许滞后于主节点的时间长短。假设t0是当前时刻（t0是时刻变化的），lag是所允许滞后的时间长度，那么所有在（t0 – lag）时刻之前在主节点上被提交的事务都必须在副节点上进行重演。而在这些事务进行重演之前，副节点上的读事务都不允许进行。值得强调的一点是，t0是时刻变化的瞬时间，而不是读事务开始时的固定时间，意味着副节点是在试图赶上一个随时间不断移动的目标。因此，这里的滞后表示的是一个有固定长度的时间窗（长度为lag），这个时间窗是随时间而不断移动的。所以，副节点上的读事务会一直等到副节点对replication stream的重演充分赶上主节点之后才开始，也就是说，直到副节点所重演的事务落在长度为lag的时间窗口之内时，或者来自主节点上的heartbeat表示副节点已经赶上主节点时，副节点上的读事务才可以开始。如果副节点在规定的时间内（这一时间同样由此策略设置）没有赶上主节点，那么读操作事务将会被放弃。</p>
<p>时间一致性策略可以适用于某些网页应用中。在这些应用中，可以使滞后时间小于用户访问一序列的网页时的交互时间。</p>
<p>在给定的负载和可用的硬件资源情况下，如果将滞后时间设置得过短，会导致经常性的超时异常，从而会降低副节点的读操作可用性。过短的滞后时间同样会增加读操作请求的等待时间，因为副节点会让读事务一直等待，直到它能在replication stream中赶上主节点。应用程序的设计者应该需要从应用程序的角度来决定可以接受的最长滞后时间，然后用这个时间来配置时间一致性策略。</p>
<p><strong>提交点一致性策略（Commit Point Consistency Policy</strong><strong>）</strong></p>
<p>这个策略以副节点在replication stream上所处的位置来定义滞后时间，这个位置与某个特定的事务的提交点相关。这个策略保证，在副节点上的读操作可以开始之前，replication stream上所有在提交点之前出现的事务，包括处于提交点的事务，都将被副节点重演。这种情况下的滞后表示了一个可扩大的事务更新窗口，窗口的下端固定在提交点，而窗口上端可以随着新事务在主节点上的提交而扩大。JE HA扩展了事务的API，从而使应用程序可以得到与某事务的提交点。</p>
<p>和时间一致性策略一样，如果副节点在该策略规定的时间内没有重演提交点所限定的事务，那么副节点上的读操作事务会被放弃。</p>
<p>提交点一致性策略可以为网页应用提供会话一致性（session consistency）。通过将一个提交点和用户的会话相关联，并且在会话的每一个写操作中更新提交点，这样便可以实现会话的一致性。会话中的读事务可以利用提交点一致性策略来保证所有的读事务都可以读到会话所写入的数据，而无论该读操作是发生在哪个副节点上。</p>
<p>由于需要应用程序在读写操作过程中维护提交点的状态，所以提交点一致性的使用会比时间一致性复杂。时间一致性相对来说比较简单，但是它对时间的依赖意味着，当主节点、副节点或者网络负载过高时，这一策略不一定能正确地实施。</p>
<h1>性能</h1>
<p>由于JE HA 以JE为基础，因此所有适用于JE的性能调优方法都适用于JE HA。除此之外，还有一些专门针对JE HA的调优。以下章节将进行详细说明。</p>
<h2>持久性</h2>
<p>持久性配置对应用程序的写操作性能调优来说是最重要的方面之一。在不支持replication的JE环境中持久性的缺省设置是SYNC，这样可以保证已提交的事务在机器发生故障时不会被丢失。虽然SYNC设置通常会导致较大的性能损失，但为了保证数据在事务提交之后可以永久保留在磁盘上，这种设置是必要的。</p>
<p>对基于JE HA的应用程序的调优，把持久性设置成，NO_SYNC和SIMPLE_MAJORITY是一个较好的着手点。这个设置可以允许主节点和副节点异步地向文件系统和磁盘写入数据，也就是在提交之后的某个时间点才写入磁盘，而不是在提交后马上同步写入文件系统和磁盘。此外，当向磁盘存储数据时，JE可以对多个事务产生的更新进行打包，从而形成条数较少的，体积较大的，然而效率会更高的顺序写操作。</p>
<p>把提交响应策略设置成SIMPLE_MAJORITY可以减少主节点等待提交响应所带来的延迟时间，因为这种延迟不受性能最差的副节点所决定。对节点数目较大的replication group来说，延迟时间会随着节点数目的增大而延长。采用SIMPLE_MAJORITY设置可以保证万一当前的主节点发生故障时，数据在其他副节点中是可用的。但是有一种情况例外：即同时有多个程序发生故障从而导致过半数的节点（这些节点将会产生提交响应）在事务提交之后并且在将数据存储到磁盘之前发生宕机。这时候主节点会由于接收不到过半数的节点发来的提交响应而进行无限期等待。</p>
<p>从这种持久性设置开始着手调优，程序设计者可以为程序的整体需求选择最好的持久性等级。值得注意的是，持久性可以在事务级别上进行设置。这样可以允许一个程序的不同部分根据本地的需求使用不同级别的持久性。</p>
<h2>读一致性</h2>
<p>为了能有效利用副节点上的读操作吞吐量，并且能使主节点上的负载达到最小（因为只有主节点才能进行写操作），所有不要求绝对一致性的读操作请求都应该由应用程序路由到副节点上。并且，为了使延迟达到最小，可以在满足应用程序需求的条件下选择最不严格的一致性策略。</p>
<p>和持久性一样，可以在单独的事务级别上设置一致性。在之前的章节中，已经详细说明了如何选择和设置一致性策略。</p>
<p><strong>Replication stream</strong><strong>的</strong><strong>代价</strong><strong> </strong></p>
<p>JE HA利用TCP协议从主节点向副节点传输replication stream。在一个有N个节点的replication group中，一共有（最后肯定会有）N-1份日志拷贝在网络中传输。因此在设计数据模型时，对键（key）所占空间大小进行优化会对性能有所帮助。特别是对写密集型的应用程序来说，这一点尤其重要。</p>
<p>值得注意的是，正如写操作性能的瓶颈往往是连续写磁盘的吞吐量，网络的吞吐量也正是replication性能的瓶颈。因此，重要的是要确保可利用的网络带宽能够负担预期的写负载。</p>
<h2>副节点的滞后</h2>
<p>当主节点需要向副节点发送最新的日志条目时，由于最新的日志条目很有可能存储在主节点的缓存中，从而不需要访问磁盘，因此主节点上的缓存能有助于主节点高效地构造replication stream。如果需要访问磁盘来获得旧的日志条目，则会导致与正在进行的所有磁盘写操作（这些写操作会在磁盘存储新的日志条目）发生竞争。这种读/写磁盘的竞争会扰乱顺序写磁盘的模式，而这种模式正是JE能保证较高写操作性能的关键。</p>
<p>因此，最好能保证所有的节点处在运行状态，这样副节点可以和主节点的保持一致，主机点将不用频繁通过访问磁盘来构建replication stream。如果某个副节点发生故障，则应尽快让它恢复运行。</p>
<p>如果某个节点（假设是节点A）发生故障，某些日志文件尽管已经被清除器（cleaner）回收，但是这些日志对节点A来说是其恢复运行后构建replication stream所必需的，那么JE HA将会阻止replication group中其他活动节点删除这些日志文件。JE HA只会在某段时间（这个时间是可设置的）之内阻止对这些日志文件的删除。在这段时间内，日志文件将会在活动节点中不断堆积，导致活动节点存在磁盘空间耗尽的风险。如果节点A在这段时间之后（磁盘空间已经耗尽）重新运行，那么有可能任何一个活动节点中都不存在一个连续的replication stream。因此，这种情况下节点A需要进行网络恢复（Network Restore）操作。网络恢复操作将某个活动节点中的日志文件复制到节点A中，然后在节点A中开始重演主节点发送过来的replication stream。如果数据库环境比较大，网络恢复操作则有可能是磁盘读/写密集型和网络传输密集型操作。</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<h1>JE HA的可扩展性</h1>
<p>JE HA架构支持单节点写和多节点读。下面的章节将分别描述读操作和写操作的扩展。</p>
<h2>写扩展性</h2>
<p>对于单节点写来说，写操作的可扩展性主要由主节点处理写操作的能力所决定，继而又取决于主节点上可用的硬件资源。通过使用提交到网络这种持久性策略，以及通过降低那些不需要绝对一致性的读操作的负荷，主节点可以降低某些I/O负载。</p>
<p>在当前的实现中，主节点负责维护发送到其他所有成员节点的replication stream。每个replication stream的构建都会在主节点上增加CPU负载。为了改进这个问题，每个replication stream都将由一个专门的feeder线程来维护，这个feeder线程可以利用多核机器的优势来维护并行的replication stream。每个replication stream同样会给主节点所在的子网带来网络传输负载，并且写密集型的应用程序对带宽的需求有可能会超出子网上可用的网络带宽。</p>
<p><strong>写分区（</strong><strong>partition</strong><strong>）</strong><strong> </strong></p>
<p>如果应用程序的需求允许，写操作的水平扩展性可以通过将数据分区到多个支持replication的环境中实现。但是JE HA目前没有提供明确的API来支持这种数据分区。</p>
<p>下图描述了如何利用三个支持replication的环境来对数据进行分区：RE1，RE2和RE3对应着三个replication groups，G1，G2以及G3。数据既可以均匀地分布在三个组中，也可以基于预期的写/更新频率来进行分区。例子中的每个replication group由三个可选节点以及一个监测节点组成。这几个replication groups分布在三台机器中MC1，MC2以及MC3。</p>
<p>这个例子里的路由器包含三个监测节点：G1（M），G2（M）以及G3（M），每个监测节点对应一个replication group。路由器必须根据数据分区规则来将数据操作请求路由到特定的节点中。这些路由方式都取决于要访问的数据本身以及操作的类型（读或写）。</p>
<p><img class="aligncenter" src="data:image/png;base64,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" alt="" width="377" height="309" /></p>
<p><strong>（图五）</strong><strong>HA</strong><strong>写分区：</strong><strong>3</strong><strong>个写分区，</strong><strong>3</strong><strong>个</strong><strong>replication groups</strong><strong>，每个</strong><strong>replication group</strong><strong>有</strong><strong>3</strong><strong>个可选节点。</strong><strong> </strong></p>
<h2>读扩展性</h2>
<p>JE HA中读扩展性可以通过多个只读副节点来实现。JE HA并没有对replication group中节点的数目有所限制。添加一个新的节点并不会增加当前的replication group对资源的需求。但是正如上文所描述一样，添加新节点会增加写节点（即主节点）以及网络的负载。</p>
<p>通过添加新节点来提高读扩展性对于应用程序来说是完全透明的。一个新节点可以被添加进一个正在运行的replication group中，并且一旦这个新节点在本地拥有足够多的日志副本，新节点便可以开始处理读操作请求。</p>
<h1>结语</h1>
<p>JE HA通过简单、直接地扩展JE的API来提供快捷、可靠以及可扩展的数据管理功能，并且能够嵌入到应用程序当中。JE HA的配置是十分灵活的，允许用户在数据持久性、数据一致性以及性能等方面综合权衡之后，设计出具有广泛适用范围的应用程序。</p>
<p>你可以在以下网址下载Oracle Berkeley DB Java版本：</p>
<p><a href="http://www.oracle.com/technology/software/products/berkeley-db/je/index.html">http://www.oracle.com/technology/software/products/berkeley-db/je/index.html</a></p>
<p>你可以在Oracle Technology Network（OTN）上提交你对Oracle Berkeley DB Java版本的意见或者问题：</p>
<p><a href="http://forums.oracle.com/forums/forum.jspa?forumID=273">http://forums.oracle.com/forums/forum.jspa?forumID=273</a></p>
<p>关于销售或者产品支持的信息，请发送Email：berkeleydb-info_us@oracle.com</p>
<p>想了解关于新产品发布信息，请发送Email：bdb-join@oss.oracle.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2011/09/berkeley-db-java-edition-%e9%ab%98%e5%8f%af%e7%94%a8%e6%80%a7%e4%bb%8b%e7%bb%8d/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>OTN论坛翻译：如何在JE中实现分页</title>
		<link>http://www.bdbchina.com/2011/06/otn%e8%ae%ba%e5%9d%9b%e7%bf%bb%e8%af%91%ef%bc%9a%e5%a6%82%e4%bd%95%e5%9c%a8je%e4%b8%ad%e5%ae%9e%e7%8e%b0%e5%88%86%e9%a1%b5/</link>
		<comments>http://www.bdbchina.com/2011/06/otn%e8%ae%ba%e5%9d%9b%e7%bf%bb%e8%af%91%ef%bc%9a%e5%a6%82%e4%bd%95%e5%9c%a8je%e4%b8%ad%e5%ae%9e%e7%8e%b0%e5%88%86%e9%a1%b5/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 08:51:37 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[OTN]]></category>
		<category><![CDATA[pagination]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1548</guid>
		<description><![CDATA[这篇文章翻译了一个在JE OTN论坛关于如何实现分页的讨论。由于时间仓促，采用google翻译的内容可能比较晦涩，请谅解。英文原文见 http://forums.oracle.com/forums/thread.jspa?messageID=3197926.
1楼，用户Shoaib的提问：
有一点我注意到的是，在使用DPL我们无法得到ArrayList的代理实现，像Map和sorteMap。 假设，如果我想从索引第5000条记录位置获取到下50条记录，我会通过EntityCursor迭代器或key的Map遍历获取未来50个记录。
因此，当我们实现分页并一页一页进行页面遍历，这个过程中要消耗大量的CPU周期。 我可以使用EntityCursor跳转到记录号对应位置（而不通过主键）吗？ 现在我不看任何这样的选项。 有没有使用DPL我们可以指定记录号而不是主键进行访问？
如果我这样做（如下），它将吃了整个内存，如果有百万条记录的话。
ArrayList list = new ArrayList（dao.getMyEntityByPK（）.map（）.values（））;
这将把所有实体值载入到内存的ArrayList。

2楼，JE开发者Mark的答复：
嗨Shoaib，
BDB JE目前没有一种方法来通过记录号而不是主键来访问记录，并且我们目前没有计划去增加。
目前最好的办法是保存当前分页上的第一个和最后一个键值。 当你需要遍历到下一页或前一页，从记录下的键开始，向前或向后读取。
但是，这并没有提供一种方法来跳转到第5000条记录。 BDB JE没有有效的方式做到这一点。  JE使用B树索引，而只要是使用标准的B树就有没有办法来有效的索引。
我们的BDB C版本产品使用了一个不同的B树索引，支持按记录号访问，但是，使用此功能大大降低并发性。 该产品是用C语言实现，但提供一个Java JNI接口。 如果你有兴趣，请参阅：
http://www.oracle.com/technology/documentation/berkeley-db/db/java/com/sleepycat/db/DatabaseConfig.html＃setBtreeRecordNumbers （布尔）
如果您有关于C版产品进一步的问题，请使用它的论坛：
http://forums.oracle.com/forums/forum.jspa?forumID=271
3楼，Mark的进一步补充：
我还有一个实现分页的建议。
我知道，在SQL数据库，分页有时通过LIMIT关键字，或在Oracle DB使用ROWNUM实现。 见：
http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html
事实证明在这些SQL DB中，通常这一功能LIMIT/ ROWNUM指定了有限的记录数（当查询请求任意一组大型数据集时）。 整个查询，只有所要求范围的记录数是从服务器返回。 这对于客户机 &#8211; 服务器模式的数据库而言是可以的，因为减少了返回客户端的记录数，但对任何一个像BDB嵌入式数据库而言是无价值的。 而即使是客户机 &#8211; 服务器数据库，执行在一个大型数据集的查询仍然是非常昂贵的。 更糟的是，当你每请求另一页的记录时，这个大型查询要执行一次。
我问了一下熟悉Oracle DB的人，关于应用程序中如何最好的实现分页。 一种已知可以正常工作的方法是创建一个临时数据库（在SQL术语中是Table，JE中是Database），由行号或页码索引。 这个临时DB用于分页非常有效，因为它是由行号索引。 如果不再需要时，临时数据库可以被删除。
临时数据库是对一个要进行分页的数据集的copy。当然，创建和初始化临时数据库是有代价的。 但如果你将在许多查询或者场合使用它，初始的代价是值得的。 另外，要知道，临时数据库是一个对你想分页数据集的快照，所以它不会包含（在临时DB）构造完后所做的更改。
要创建一个BDB JE的临时数据库，我们建议使用Deferred Write数据库以获得最佳性能。 要创建一个Deferred Write数据库，在当打开数据库时调用DatabaseConfig.setDeferredWrite（true）。 使用Deferred Write数据库会将所有信息都保存在内存中，直到缓存被填满。 当缓存溢出时数据才写入到磁盘。 你不应该显示调用Database.sync，因为数据是暂时的。 当您完成使用临时数据库，将其关闭并删除它（使用Environment.removeDatabase）。
创建完临时数据库，将要分页的信息复制到临时数据库。 当你复制时，你可以通过简单地指定一个整数计数器递增的行号。 有几种方法你可以考虑存储在临时数据库的信息。
1）使用行号作为Key，要显示的行信息作为Data。
2）使用行号作为Key，将要显示信息对应的数据库主键作为Data。
3）使用页码作为Key，并将该子页的行信息列表作为Data。
4）使用页码作为Key，并将该子页的行信息对应的数据主键的列表作为Data。
对于（1）和（2），行号是临时数据库的Key。 您可以轻松地检索从行号5000开始的记录，例如。 利用行号做Key的好处是，你可以随时更改页面大小（page size）而不用更改临时数据库。
对于（3）和（4），页码是临时数据库的Key。 它的优点是，你可以读取一个记录，以获得所需显示页面的信息（或一个页面信息的主键）。 [...]]]></description>
			<content:encoded><![CDATA[<p><em>这篇文章翻译了一个在JE OTN论坛关于如何实现分页的讨论。由于时间仓促，采用google翻译的内容可能比较晦涩，请谅解。英文原文见 http://forums.oracle.com/forums/thread.jspa?messageID=3197926.</em></p>
<p><strong><span style="text-decoration: underline;">1楼，用户Shoaib的提问：</span></strong></p>
<p>有一点我注意到的是，在使用DPL我们无法得到ArrayList的代理实现，像Map和sorteMap。 假设，如果我想从索引第5000条记录位置获取到下50条记录，我会通过EntityCursor迭代器或key的Map遍历获取未来50个记录。</p>
<p>因此，当我们实现分页并一页一页进行页面遍历，这个过程中要消耗大量的CPU周期。 我可以使用EntityCursor跳转到记录号对应位置（而不通过主键）吗？ 现在我不看任何这样的选项。 有没有使用DPL我们可以指定记录号而不是主键进行访问？</p>
<p>如果我这样做（如下），它将吃了整个内存，如果有百万条记录的话。</p>
<p style="padding-left: 30px;"><em>ArrayList list = new ArrayList（dao.getMyEntityByPK（）.map（）.values（））;</em></p>
<p>这将把所有实体值载入到内存的ArrayList。</p>
<p><span id="more-1548"></span></p>
<p><strong><span style="text-decoration: underline;">2楼，JE开发者Mark的答复：</span></strong></p>
<p>嗨Shoaib，</p>
<p>BDB JE目前没有一种方法来通过记录号而不是主键来访问记录，并且我们目前没有计划去增加。</p>
<p>目前最好的办法是保存当前分页上的第一个和最后一个键值。 当你需要遍历到下一页或前一页，从记录下的键开始，向前或向后读取。</p>
<p>但是，这并没有提供一种方法来跳转到第5000条记录。 BDB JE没有有效的方式做到这一点。  JE使用B树索引，而只要是使用标准的B树就有没有办法来有效的索引。</p>
<p>我们的BDB C版本产品使用了一个不同的B树索引，支持按记录号访问，但是，使用此功能大大降低并发性。 该产品是用C语言实现，但提供一个Java JNI接口。 如果你有兴趣，请参阅：</p>
<p><a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com&amp;sl=auto&amp;tl=zh-CN&amp;twu=1&amp;u=http://www.oracle.com/technology/documentation/berkeley-db/db/java/com/sleepycat/db/DatabaseConfig.html&amp;usg=ALkJrhg_TKdJ98MqsDN8ZNryr4zIUithWw#setBtreeRecordNumbers">http://www.oracle.com/technology/documentation/berkeley-db/db/java/com/sleepycat/db/DatabaseConfig.html＃setBtreeRecordNumbers</a> （布尔）</p>
<p>如果您有关于C版产品进一步的问题，请使用它的论坛：</p>
<p><a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com&amp;sl=auto&amp;tl=zh-CN&amp;twu=1&amp;u=http://forums.oracle.com/forums/forum.jspa%3FforumID%3D271&amp;usg=ALkJrhjVMQVUH-63i2rWvRWCqhPdkTqE2g">http://forums.oracle.com/forums/forum.jspa?forumID=271</a></p>
<p><strong><span style="text-decoration: underline;">3楼，Mark的进一步补充：</span></strong></p>
<p>我还有一个实现分页的建议。</p>
<p>我知道，在SQL数据库，分页有时通过LIMIT关键字，或在Oracle DB使用ROWNUM实现。 见：</p>
<p><a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;ie=UTF8&amp;prev=_t&amp;rurl=translate.google.com&amp;sl=auto&amp;tl=zh-CN&amp;twu=1&amp;u=http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html&amp;usg=ALkJrhjljxdPSkXYwsM7kzuaZ05HRHw2DQ">http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html</a></p>
<p>事实证明在这些SQL DB中，通常这一功能LIMIT/ ROWNUM指定了有限的记录数（当查询请求任意一组大型数据集时）。 整个查询，只有所要求范围的记录数是从服务器返回。 这对于客户机 &#8211; 服务器模式的数据库而言是可以的，因为减少了返回客户端的记录数，但对任何一个像BDB嵌入式数据库而言是无价值的。 而即使是客户机 &#8211; 服务器数据库，执行在一个大型数据集的查询仍然是非常昂贵的。 更糟的是，当你每请求另一页的记录时，这个大型查询要执行一次。</p>
<p>我问了一下熟悉Oracle DB的人，关于应用程序中如何最好的实现分页。 一种已知可以正常工作的方法是创建一个临时数据库（在SQL术语中是Table，JE中是Database），由行号或页码索引。 这个临时DB用于分页非常有效，因为它是由行号索引。 如果不再需要时，临时数据库可以被删除。</p>
<p>临时数据库是对一个要进行分页的数据集的copy。当然，创建和初始化临时数据库是有代价的。 但如果你将在许多查询或者场合使用它，初始的代价是值得的。 另外，要知道，临时数据库是一个对你想分页数据集的快照，所以它不会包含（在临时DB）构造完后所做的更改。</p>
<p>要创建一个BDB JE的临时数据库，我们建议使用Deferred Write数据库以获得最佳性能。 要创建一个Deferred Write数据库，在当打开数据库时调用DatabaseConfig.setDeferredWrite（true）。 使用Deferred Write数据库会将所有信息都保存在内存中，直到缓存被填满。 当缓存溢出时数据才写入到磁盘。 你不应该显示调用Database.sync，因为数据是暂时的。 当您完成使用临时数据库，将其关闭并删除它（使用Environment.removeDatabase）。</p>
<p>创建完临时数据库，将要分页的信息复制到临时数据库。 当你复制时，你可以通过简单地指定一个整数计数器递增的行号。 有几种方法你可以考虑存储在临时数据库的信息。</p>
<p>1）使用行号作为Key，要显示的行信息作为Data。</p>
<p>2）使用行号作为Key，将要显示信息对应的数据库主键作为Data。</p>
<p>3）使用页码作为Key，并将该子页的行信息列表作为Data。</p>
<p>4）使用页码作为Key，并将该子页的行信息对应的数据主键的列表作为Data。</p>
<p>对于（1）和（2），行号是临时数据库的Key。 您可以轻松地检索从行号5000开始的记录，例如。 利用行号做Key的好处是，你可以随时更改页面大小（page size）而不用更改临时数据库。</p>
<p>对于（3）和（4），页码是临时数据库的Key。 它的优点是，你可以读取一个记录，以获得所需显示页面的信息（或一个页面信息的主键）。 但是你不能改变page size而无需重新创建临时数据库。</p>
<p>对于（1）及（3），所有你需要显示的信息存储在临时数据库中。 需要显示信息时，你无需做别的查询。 但临时DB的大小会变得很大（对比于存储的是主键），所以临时数据库信息更容易填满缓存并写入磁盘。</p>
<p>用（2）及（4），要显示信息的主键存储在临时数据库中。 缺点是，你必须通过主键再查询来获得相应的显示信息。 而存在其他数据库中的数据可能已被更改或删除，您必须考虑到这一点。 它的优点是临时DB要小得多，因为只存储了Key，而不是Data本身。</p>
<p>为简单起见，我建议首先尝试方法（1）或（3），这取决于页大小是固定的还是没有。 如果您发现临时DB过大，并导致性能问题，然后尝试方法（2）或（4）。</p>
<p>我希望这会有所帮助。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2011/06/otn%e8%ae%ba%e5%9d%9b%e7%bf%bb%e8%af%91%ef%bc%9a%e5%a6%82%e4%bd%95%e5%9c%a8je%e4%b8%ad%e5%ae%9e%e7%8e%b0%e5%88%86%e9%a1%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bdb开通新浪微博</title>
		<link>http://www.bdbchina.com/2011/05/bdb%e5%bc%80%e9%80%9a%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a/</link>
		<comments>http://www.bdbchina.com/2011/05/bdb%e5%bc%80%e9%80%9a%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a/#comments</comments>
		<pubDate>Mon, 30 May 2011 10:41:58 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB]]></category>
		<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Berkeley DB XML]]></category>
		<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[生活圆桌]]></category>
		<category><![CDATA[bdb]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1537</guid>
		<description><![CDATA[各位BDB中文博客的粉丝们，为了更好的和大家交互并分享BDB的消息，我们刚刚开通的新浪微博。微博地址为：
http://www.weibo.com/bdbchina
欢迎各位朋友添加关注并和我们分享信息。感谢大家的一直以来的支持。
备注： 由于工作比较忙（很少看博客评论），我们推荐大家使用新浪微博和我们互动，从而可以得到更及时、有效的反馈。
Oracle Berkeley DB 中国开发团队
]]></description>
			<content:encoded><![CDATA[<p>各位BDB中文博客的粉丝们，为了更好的和大家交互并分享BDB的消息，我们刚刚开通的新浪微博。微博地址为：<a title="http://weibo.com/bdbchina" href="http://www.weibo.com/bdbchina" target="_blank"></a></p>
<p><a title="http://weibo.com/bdbchina" href="http://www.weibo.com/bdbchina" target="_blank">http://www.weibo.com/bdbchina</a></p>
<p>欢迎各位朋友添加关注并和我们分享信息。感谢大家的一直以来的支持。</p>
<p><em><strong>备注： 由于工作比较忙（很少看博客评论），我们推荐大家使用新浪微博和我们互动，从而可以</strong></em><em><strong>得到</strong></em><em><strong>更及时、有效的反馈。</strong></em></p>
<p>Oracle Berkeley DB 中国开发团队</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2011/05/bdb%e5%bc%80%e9%80%9a%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using Oracle Berkeley DB as a NoSQL Data Store</title>
		<link>http://www.bdbchina.com/2011/02/using-oracle-berkeley-db-as-a-nosql-data-store/</link>
		<comments>http://www.bdbchina.com/2011/02/using-oracle-berkeley-db-as-a-nosql-data-store/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 03:37:59 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB]]></category>
		<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Berkeley DB XML]]></category>
		<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[nosql]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1527</guid>
		<description><![CDATA[

Using Oracle Berkeley DB as a NoSQL Data Store
By Shashank Tiwari
Learn why and how Oracle Berkeley DB can bring NoSQL benefits to your app.
Published February 2011
“NoSQL” is the new popular buzzword among developers, architects and even technology managers. However, despite the term&#8217;s newfound popularity, surprisingly there is no universally agreed-upon definition for it.
Generally, any database [...]]]></description>
			<content:encoded><![CDATA[<div>
<div>
<h2>Using Oracle Berkeley DB as a NoSQL Data Store</h2>
<p><em>By Shashank Tiwari</em></p>
<p><strong>Learn why and how Oracle Berkeley DB can bring NoSQL benefits to your app.</strong></p>
<p>Published February 2011</p>
<p>“NoSQL” is the new popular buzzword among developers, architects and even technology managers. However, despite the term&#8217;s newfound popularity, surprisingly there is no universally agreed-upon definition for it.</p>
<p>Generally, any database that isn’t RDBMS, upholds schema-less structures, is generally relaxed on ACID transactions, and promises high availability and support for large data sets in horizontally scaled environments is popularly categorized as a “NoSQL data store”. Given that these common features often seem in direct contrast to those of a good old RDBMS, some people propose <em>non-relational</em>, perhaps shortened as NonRel, as a more appropriate term than NoSQL.</p>
<p>Regardless, while the definitional conflict continues, many have begun to realize the benefits of NoSQL data stores by including them in their application stack. The rest are keeping a close watch and evaluating if NoSQL is right for them.</p>
<p><span id="more-1527"></span></p>
<p>The growth of NoSQL as a category has also led to the emergence of a number of new data stores. Some of these new NoSQL products are good at persisting JSON-like documents, some are sorted ordered column-family stores, and others persist distributed key-value pairs. While newer products are exciting and offer many nice features, a few existing ones rise up to deliver the new promise as well.</p>
<p>One such data store is <a href="http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html">Oracle Berkeley DB</a>. In this article I will illustrate and explain why and how Berkeley DB can be included in the stack as a NoSQL solution. The article focuses exclusively on Berkeley DB’s NoSQL-centric features and thus does not exhaustively cover all of Berkeley DB’s capabilities and idiosyncrasies.</p>
<h3>Berkeley DB Essentials</h3>
<p>Fundamentally a key-value store, Berkeley DB comes in three distinct flavors:</p>
<ul>
<li>Berkeley DB – key-value store programmed in C. (Berkeley DB official documentation uses the term <em>key-data</em> in place of key-value.) This is the &#8220;classic&#8221; flavor.</li>
<li>Berkeley DB Java Edition (JE) – key-value store re-written in Java. Can easily be incorporated into a Java stack.</li>
<li>Berkeley DB XML – Written in C++, this version wraps the key-value store to behave as an indexed and optimized XML storage system.</li>
</ul>
<p>(Note: Although this article does not expressly cover Berkeley DB JE or Berkeley DB XML, it does include examples that use the Java API and the Java-based persistence frameworks to illustrate the capabilities of Berkeley DB.)</p>
<p>Simple as it may be at its core, Berkeley DB can be configured to provide concurrent non-blocking access or support transactions, scaled out as a highly available cluster of master-slave replicas, or in a number of other ways.</p>
<p>Berkeley DB is a pure storage engine that makes no assumptions about an implied schema or structure to the key-value pairs. Therefore, Berkeley DB easily allows for higher level API, query, and modeling abstractions on top of the underlying key-value store. This facilitates fast and efficient storage of application specific data, without the overhead of translating it into an abstracted data format. The flexibility offered by this simple, yet elegant design, makes it possible to store both structured and semi-structured data in Berkeley DB.</p>
<p>Berkeley DB can run as an in-memory store to hold small amounts of data or it can be configured as a large data store, with a fast in-memory cache. Multiple databases can be set up in a single physical install with the help of a higher-level abstraction, called <em>environment</em>. One environment can have multiple databases. You need to open an environment and then a database to write data to it or read data from it. It’s advised that you close a database and the environment when you have completed your interactions to optimally use resources.</p>
<p>Each item in a database is a key-value pair. The key is typically unique but you could have duplicates. A Value is accessed using a key. A retrieved value can be updated and saved back to the database. Multiple values are accessed and iterated over using a cursor. Cursors allow you to loop through the collection of values and manipulate them one at a time. Transactions and concurrent access are additionally supported.</p>
<p>The key of a key-value pair almost always serves as the primary key, which is indexed. Other properties within the value could serve as secondary indexes. Secondary indexes are maintained separately in a secondary database. The main database, which has the key-value pairs, is therefore also sometimes referred to as the primary database.</p>
<p>Berkeley DB runs as an in-process data store, so you statically or dynamically link to it when accessing it using the C, C++, C#, Java or scripting language APIs from a corresponding program.</p>
<p>With that whirlwind introduction, the following section describes Berkeley DB in the context of its NoSQL-centric features.</p>
<h3>Fluid Schema</h3>
<p>The first benefit of a NoSQL store is its relaxed attitude toward well-defined database schemas. Let us see how Berkeley DB fares on this feature.</p>
<p>To appreciate Berkeley DB’s capabilities, I suggest you take it for a spin. Therefore, it is recommended that you download and install both Berkeley DB and Berkeley DB JE on your machine so you can try some examples yourself and follow along with the rest of the illustrations in this article. Download links and installation instructions are available online <a href="http://www.oracle.com/technetwork/database/berkeleydb/downloads/index.html">here</a>. (I compiled Berkeley DB with &#8211;enable-java, &#8211;enable-sql, and &#8211;prefix=/usr/local for this article.) The fundamental concepts that relate to storage, access mechanisms and the API don’t vary much between Berkeley DB and Berkeley DB JE so most things I cover next apply equally well to both.</p>
<p>Berkeley DB itself imposes little restrictions on the data items beyond it being a collection of key-value pairs. This allows applications to flexibly use Berkeley DB to manage data in a variety of formats, including SQL, XML and Java objects. You can access data in Berkeley DB via the base API, the SQL API, the Java Collections API, and the Java Direct Persistence Layer (DPL). It allows a few different storage configurations: B-Tree, Hash, Queue, and Recno. (The Berkeley DB documentation refers to the different storage mechanisms as “access methods”. Hash, Queue, and Recno access methods are available only in Berkeley DB and not in Berkeley DB JE or Berkeley DB XML.)</p>
<p>Depending on your specific use case, you could choose an access mechanism and a storage configuration. This choice of a particular access method and a storage configuration can affect schema. To understand the impact of the choices, you need to first understand what they are. I cover the access methods and storage configurations next.</p>
<h4>Using the Base API</h4>
<p>The Base API is a low-level API that allows you to store, retrieve and update data, the key-value pairs. This API is similar across different language bindings. Therefore the Base API for C, C++ and Java are quite the same. DPL and the Java Collections API, on the other hand, are only offered as an abstraction in the Java API.</p>
<p>The Base API puts, gets and deletes key-value pairs. Both the key and the value are an array of bytes. All key and data values get serialized to byte arrays before they are stored. One could use Java’s built-in serializer or Berkeley DB’s BIND API to serialize various data types to byte arrays. Java’s built-in serializer is typically a slow performer so one must go in favor of the BIND API. (The jvm-serializers project benchmarks various alternative serializers and is a good reference point to <a href="https://github.com/eishay/jvm-serializers/wiki/">analyze relative performance</a> among different serialization mechanisms in the JVM.) The BIND API avoids redundantly storing the class information with every serialized class and instead puts that information in a separate database. Potentially, you could makes things faster by writing your own <a href="http://download.oracle.com/docs/cd/E17076_02/html/gsg/JAVA/bindAPI.html#customTuple.">custom tuple binding</a> to improve the BIND API performance.</p>
<p>As an elementary example, you can have a data value defined as follows:</p>
<pre>import java.io.Serializable;
public class DataValue implements Serializable {
    private long prop1;
    private double prop2;

    DataValue() {
      prop1 = 0;
      prop2 = 0.0;
    }

    public void setProp1(long data) {
      prop1 = data;
    }

    public long getProp1() {
      return prop1;
    }

    public void setProp2(double data) {
      prop2 = data;
    }

    public double getProp2() {
      return prop2;
    }
}</pre>
<p>Now, you can store this data value using two databases, one to store the value with a key and another to store the class information.</p>
<p>The data is stored using four distinct steps:</p>
<ol>
<li>First a second database, apart from the one to store key-value pairs, is configured to store class data as follows:
<pre>Database aClassDB = new Database("classDB", null, aDbConfig);</pre>
</li>
<li>Then a class catalog is instantiated as follows:
<pre>StoredClassCatalog storedClassCatalog = new StoredClassCatalog(aClassDb);</pre>
</li>
<li>A serial entry binding is established like so:
<pre>EntryBinding binding = new SerialBinding(storedClassCatalog, DataValue.class);</pre>
</li>
<li>Finally, a DataValue instance like so:
<pre>DataValue val = new DataValue();
val.setProp1(123456789L);
val.setProp2(1234.56789);</pre>
<p>is mapped to a Berkeley DB DatabaseEntry, which serves as a wrapper for both the key and value, using the binding you just created as follows:</p>
<pre>DatabaseEntry deKey = new DatabaseEntry(aKey.getBytes("UTF-8"));
DatabaseEntry deVal = new DatabaseEntry();
binding.objectToEntry(val, deVal);</pre>
</li>
</ol>
<p>Now you are ready to put the key-value pair in Berkeley DB.</p>
<p>The base API supports a few variants of the put and get methods, to allow or dis-allow duplicates and overwrites. (The intent of neither this example nor the article is to teach you the detailed syntax or semantics of using the base API so I will not get into further details; see the doc <a href="http://www.oracle.com/technetwork/database/berkeleydb/documentation/index.html">here</a>.) An important takeaway is that the base API allows for low-level manipulation and custom serialization around storing, retrieving and deleting key-value pairs.</p>
<p>If you prefer to interact with Berkeley DB with a higher level API, then you should use DPL.</p>
<h4>Using DPL</h4>
<p>Direct Persistence Layer (DPL) provides familiar Java persistence framework semantics for manipulating objects. You can treat Berkeley DB as an entity store where objects are persisted, retrieved to be updated and deleted. DPL uses annotations to mark a class as an @Entity. Associated classes, which get stored with an Entity, are annotated as @Persistent. Specific properties or variables can be annotated as @PrimaryKey and @SecondaryKey. A simple Entity could be as follows:</p>
<pre>@Entity
public class AnEntity {

    @PrimaryKey
    private int myPrimaryKey;

    @SecondaryKey(relate=ONE_TO_ONE)
    private String mySecondaryKey;
    ...
}</pre>
<p>DPL imposes the class definition as a well-defined schema. From the base API we know that such a conformance to schema is not a requirement for Berkeley DB. For some use cases, however, formal entity definitions are helpful and provide a structured approach to data modeling.</p>
<h4>Storage Configuration</h4>
<p>As mentioned previously, key-value pairs can be stored in four different types of data structures: B-Tree, Hash, Queue and Recno. Let’s see how they stack up.</p>
<ul>
<li><strong>B-Tree. </strong>A B-tree needs little introduction but if you do need to review its definition then read the Wikipedia page on B-Tree, available online at <a href="http://en.wikipedia.org/wiki/B-tree">http://en.wikipedia.org/wiki/B-tree</a>. It’s a balanced tree data structure that keeps its elements sorted and allows for fast sequential access, insertions and deletions. Key and values can be arbitrary data types. In Berkeley DB the B-tree access method allows duplicates. This is a good choice if you need complex data types as keys. It’s also a great choice if data access patterns lead to access of contiguous or neighboring records. B-Tree keeps a substantial amount of metadata to perform efficiently. Most Berkeley DB applications use the B-Tree storage configuration.</li>
<li><strong>Hash. </strong>Like the B-Tree a hash also allows complex types to be keys. Hashes have a more linear structure as compared to a B-Tree. Berkeley DB hash structures allow duplicates.While both a B-Tree and a hash support complex keys, a hash database usually outperforms a B-Tree when the data set far exceeds the amount of available memory. That is because a B-Tree keeps more metadata than a hash and a larger data set implies that the B-Tree metadata may not fit in the in-memory cache. In such an extreme situation the B-Tree metadata as well as the actual data record itself will often have to be fetched from files, which can cause multiple I/Os per operation. The hash access method is designed to minimize the I/Os required to access the data record and therefore in these extreme cases, may perform better than a B-Tree.</li>
<li><strong>Queue. </strong>A queue is a set of sequentially stores fixed length records. Keys are restricted to logical record numbers, which are integer types. Records are appended sequentially allowing for extremely fast writes. If you are impressed by Apache Cassandra’s fast writes by appending to logs then give Berkeley DB with queue access method a try and you wouldn’t be disappointed. Methods also allow reading and updating effectively from the head of the queue. A queue has additional support for row-level locking. This allows effective transactional integrity even in cases of concurrent processing.</li>
<li><strong>Recno. </strong>Recno is similar to a queue but allows variable length records. And like a queue, recno keys are restricted to integers.</li>
</ul>
<p>The different configurations allow you to store arbitrary types of data in a collection. Similar to NoSQL, there is no fixed schema, other than those imposed by your model. In the extreme situation, you are welcome to store disparate value types for two keys in a collection. Value types can be complex classes, which for the sake of argument could represent a JSON document, a complex data structure or a structured data set. The only restriction really is that the value should be serializable to a byte array. A single key or a single value can be as large as 4GB.</p>
<p>The possibility of secondary indexes allows filtering on the basis of value properties. The primary database does not store data in a tabular format and so non-existing properties are not stored for sparse data sets. A secondary index skips all key-value pairs that lack the property on which the index is created. In general the storage is compact and efficient.</p>
<h3>Support for Transactions</h3>
<p>Berkeley DB is a very flexible database that can turn many features on and off. Berkeley DB can run without transaction support or it could be compiled to support ACID transactional integrity. Perhaps, the malleable nature of Berkeley DB makes it a very appropriate data store for many situations. Transactional integrity is the least supported feature in a quintessential NoSQL data store. Berkeley DB, in highly available systems, that don’t expect ACID transactional compliance can turn transactions off and work like a typical NoSQL product. However, in others it could be flexible and support transactional integrity.</p>
<p>While I don’t intend to cover details on transactions, it’s worth noting that like traditional RDBMS systems, Berkeley DB enabled with transactions allows definition of transactional boundaries. Once committed, data is persisted to disk. To enhance performance, one can use non-durable commits, where writes are committed to in-memory log files and later synched with the underlying file systems. Isolation levels and locking mechanisms are also supported.</p>
<p>Before a database is closed a sync operation assures that persistent file copies have up-to-date in-memory information in the system. The combination of this sync operation and Berkeley DB&#8217;s transactional recovery subsystem (assuming that you have enabled transactions) ensure that the database is always returned to a consistent transactional state, even in the event of application or system failure.</p>
<h3>Large Data Sets</h3>
<p>Theoretically Berkeley DB has an upper bound of 256TB but in real life it’s usually bound by the size of the machine it runs on. At the time of this writing, Berkeley DB does not demonstrate support for extremely large files that span multiple machines with the help of distributed file systems. (Files larger than the size of a single node can be managed with the help of distributed file systems like the Hadoop Distributed File System, or HDFS.) Berkeley DB works better on local file systems than it does on network file systems. More accurately, Berkeley DB relies on the POSIX compliant attributes of a file system. For example, when Berkeley DB calls fsync() and the file system returns, Berkeley DB assumes that the data has been written to persistent media. For performance reasons, distributed file systems typically do not guarantee that a write has been completed all the way to the persistent media.</p>
<p>The maximum B-Tree depth supported is 255. Lengths of the key and value records are typically bound by the available memory.</p>
<h3>Horizontal Scale-out</h3>
<p>Berkeley DB replication follows a master-slave pattern. In such a pattern there is one master and multiple slaves or replicas. However, the selection of a master is not static and it’s recommended that the selection is not manual. All participants in a replication cluster go through an election process to choose the master. The one with the most up-to-date log records is the winner. If there is a tie, then priorities are used to select the master. The election process is based on an industry standard <a href="http://en.wikipedia.org/wiki/Paxos_algorithm">Paxos-compliant algorithm</a>.</p>
<p>Replication has numerous benefits including the following:</p>
<ul>
<li>Improves read performance – The availability of multiple replicated nodes to read data from improves the read performance drastically.</li>
<li>Improves reliability – The presence of replicated instances provides better failover options in times of node failure and data corruption.</li>
<li>Improves durability – You can relax durability guarantees on the master to avoid excessive write to disk operations, which typically involves expensive I/O. In a clustered environment the durability is enhanced by the fact that the write has been committed to multiple nodes, even if it’s not written to disk.</li>
<li>Improves availability – The presence of multiple nodes, along with asynchronous write to disk, makes it possible for replicas to keep serving operations even when the master is under heavy load.</li>
</ul>
<h3>Summary</h3>
<p>Berkeley DB undoubtedly qualifies as a robust and scalable NoSQL key-value store; the use of Berkeley DB as the underlying storage for Amazon’s <a href="http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html">Dynamo</a>, <a href="http://project-voldemort.com/">Project Voldemort</a>, <a href="http://memcachedb.org/">MemcacheDB</a>, and <a href="http://www.geniedb.com/">GenieDB</a> is further evidence supporting this claim. There has been a little bit of FUD around Berkeley DB performance, especially in the wake of couple of comparative benchmarks published online:</p>
<ul>
<li><a href="http://www.dmo.ca/blog/benchmarking-hash-databases-on-large-data/">http://www.dmo.ca/blog/benchmarking-hash-databases-on-large-data/</a></li>
<li><a href="http://stackoverflow.com/questions/601348/berkeleydb-vs-tokyo-cabinet">http://stackoverflow.com/questions/601348/berkeleydb-vs-tokyo-cabinet</a></li>
</ul>
<p>However, there are many live systems that prove Berkeley DB’s strengths. Many of these systems, through careful tuning and application coding improvements, have achieved excellent scalability, throughput, and reliability results. Following the lead of those systems, Berkeley DB can certainly be used as a scalable NoSQL solution.</p>
<hr /><strong>Shashank Tiwari </strong>is Founder &amp; CEO of <a href="http://www.treasuryofideas.com/">Treasury of Ideas</a>, a technology driven innovation and value optimization company. As an experienced software developer and architect, he is adept in a multitude of technologies. He is an internationally recognized speaker, author and mentor. As an expert group member on a number of JCP (Java Community Process) specifications he has been actively participating in shaping the future of Java. He is also an common voice in the NoSQL and Cloud Computing space and a recognized expert in the RIA community.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2011/02/using-oracle-berkeley-db-as-a-nosql-data-store/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BDB JE事务的提交方式概述</title>
		<link>http://www.bdbchina.com/2010/12/bdb-je%e4%ba%8b%e5%8a%a1%e7%9a%84%e6%8f%90%e4%ba%a4%e6%96%b9%e5%bc%8f%e6%a6%82%e8%bf%b0/</link>
		<comments>http://www.bdbchina.com/2010/12/bdb-je%e4%ba%8b%e5%8a%a1%e7%9a%84%e6%8f%90%e4%ba%a4%e6%96%b9%e5%bc%8f%e6%a6%82%e8%bf%b0/#comments</comments>
		<pubDate>Fri, 24 Dec 2010 05:33:29 +0000</pubDate>
		<dc:creator>taozhang</dc:creator>
				<category><![CDATA[Berkeley DB JE]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1516</guid>
		<description><![CDATA[简要介绍数据库的事务持久性和BDB JE的事务提交方式。]]></description>
			<content:encoded><![CDATA[<p>这段时间看到有些用户对BDB JE的事务持久性（Durability)，主要是JE各种事务提交方式比较感兴趣。以下这篇博客介绍了事务的持久性，并简要描述了JE事务所提供的提交方式。</p>
<p>大家知道，事务具有ACID特性，即：原子性，一致性，隔离性和持久性。事务的持久性意味着当系统或介质发生故障时，确保已提交事务的更新不能丢失，即一旦一个事务提交，数据库保证它对数据库中数据的改变是永久性的，能够承受任何系统故障，持久性通过数据库备份和恢复来保证。</p>
<p>事务的持久性与事务的提交方式有着密切联系，当JE的用户创建一个事务时，用户通过设置TransactionConfig来指定事务的提交方式，分别是：</p>
<ol>
<li>TransactionConfig.setNoSync(boolean)，即txnNoSync</li>
<li>TransactionConfig.setWriteNoSync(boolean)，即txnWriteNoSync</li>
<li>TransactionConfig.setSync(boolean)，即txnSync。</li>
</ol>
<p><span id="more-1516"></span></p>
<p>您可以参看下图了解这几种提交方式的区别：</p>
<p><a href="http://www.bdbchina.com/wp-content/uploads/2010/12/durability.jpg"><img class="aligncenter size-full wp-image-1523" title="durability" src="http://www.bdbchina.com/wp-content/uploads/2010/12/durability.jpg" alt="" width="527" height="525" /></a></p>
<p><a href="http://www.bdbchina.com/wp-content/uploads/2010/12/durability.bmp"></a>当选择txnNoSync方式时，在事务提交之前，JE会将数据写入JE自己的缓冲区，操作系统会选择适当的时机（缓冲区满，后续事务选择txnSync 提交方式或数据库做了一次checkpoint）将数据写到磁盘上，一旦应用程序或是JVM崩溃了，用户的数据就会丢失。</p>
<p>当选择txnWriteNoSync方式时，在事务提交之前，JE会将数据写入文件系统的缓冲区，操作系统会选择适当的时机（缓冲区满，后续事务选择 txnSync提交方式或数据库做了一次checkpoint）将数据写到磁盘上，这种方式可以避免因为应用程序或JVM崩溃而带来的数据丢失，但是无法避免操作系统崩溃带来的数据丢失，因此也无法保障数据的持久性。</p>
<p>当选择txnSync方式时，在事务提交之前，它会强制调用操作系统的fsync方法将数据写到磁盘上，这样一旦事务提交成功，即使操作系统崩溃也能保证数据的持久性，但是该方式不能保证介质故障的数据持久性，在这种情况下，需要采用数据库备份的方式来提供持久性。</p>
<p>这三种事务提交模式给性能带来的影响如下：</p>
<ol>
<li>txnNoSync，节省了JE与操作系统的交互和磁盘I/O，性能相对其它两种更好</li>
<li>txnWriteNoSync，节省了磁盘I/O，性能次之</li>
<li>txnSync，性能相对其它两种方式要差一些</li>
</ol>
<p>因此，用户需要根据他们的需要来选择不同事务提交方式。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2010/12/bdb-je%e4%ba%8b%e5%8a%a1%e7%9a%84%e6%8f%90%e4%ba%a4%e6%96%b9%e5%bc%8f%e6%a6%82%e8%bf%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BDB JE 发布4.1新版本 &#8212; 3倍cache性能提升</title>
		<link>http://www.bdbchina.com/2010/11/bdb-je-%e5%8f%91%e5%b8%834-1%e6%96%b0%e7%89%88%e6%9c%ac-3%e5%80%8dcache%e6%80%a7%e8%83%bd%e6%8f%90%e5%8d%87/</link>
		<comments>http://www.bdbchina.com/2010/11/bdb-je-%e5%8f%91%e5%b8%834-1%e6%96%b0%e7%89%88%e6%9c%ac-3%e5%80%8dcache%e6%80%a7%e8%83%bd%e6%8f%90%e5%8d%87/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 04:43:55 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[JE]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1512</guid>
		<description><![CDATA[BDB Java Edition 4.1 delivers up to a 3X performance improvement over JE 4.0 in some read-only scenarios where the working set doesn&#8217;t fit in the cache. The new release includes multi-threaded cache management and advanced in-memory Internal Node compression.
With Concurrent Eviction, cache management is now multi-threaded, resulting in reduced latency and a smoother performance [...]]]></description>
			<content:encoded><![CDATA[<p>BDB Java Edition 4.1 delivers up to a 3X performance improvement over JE 4.0 in some read-only scenarios where the working set doesn&#8217;t fit in the cache. The new release includes multi-threaded cache management and advanced in-memory Internal Node compression.</p>
<p>With Concurrent Eviction, cache management is now multi-threaded, resulting in reduced latency and a smoother performance curve as the application data exceeds the cache space. Internal Node (IN) Compression significantly reduces the in-memory footprint of internal data structures, creating better efficiency.</p>
<p>Tests run by a BDB JE user comparing JE 4.0.103 to JE 4.1 using a read-only workload demonstrate extraordinary improvements. The two versions have equivalent performance when the database fits completely in cache (4 GB of memory), but when the cache size is dropped to .5 GB (only some of the Internal Nodes fit in memory) the throughput and latency of JE 4.1 is 300% better than 4.0.103.  Further, the variation in latency is greatly reduced.</p>
<p>Software Downloads</p>
<p>* Downloads for software and the latest documentation will be available on OTN.<br />
* Downloads available today at http://download.oracle.com/berkeley-db/je-4.1.6.tar.gz (.zip).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2010/11/bdb-je-%e5%8f%91%e5%b8%834-1%e6%96%b0%e7%89%88%e6%9c%ac-3%e5%80%8dcache%e6%80%a7%e8%83%bd%e6%8f%90%e5%8d%87/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Oracle Berkeley DB 产品家族介绍</title>
		<link>http://www.bdbchina.com/2010/09/oracle-berkeley-db-%e4%ba%a7%e5%93%81%e5%ae%b6%e6%97%8f%e4%bb%8b%e7%bb%8d/</link>
		<comments>http://www.bdbchina.com/2010/09/oracle-berkeley-db-%e4%ba%a7%e5%93%81%e5%ae%b6%e6%97%8f%e4%bb%8b%e7%bb%8d/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 05:45:49 +0000</pubDate>
		<dc:creator>haomianwang</dc:creator>
				<category><![CDATA[Berkeley DB]]></category>
		<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Berkeley DB XML]]></category>
		<category><![CDATA[Haomian Wang]]></category>
		<category><![CDATA[JE]]></category>
		<category><![CDATA[Mobile Sync Server]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1336</guid>
		<description><![CDATA[Oracle Berkeley DB最先由加州大学伯克利分校为了移除受到AT&#38;T限制的dbm代码，而从BSD 4.3到4.4时所改写的。经过将近二十年的衍化，目前Oracle Berkeley DB家族已经发展到包含4个独立产品线 &#8211; Berkeley DB、Berkeley DB Java 版、Berkeley DB XML和Mobile Server，被应用到行行业业，在全球有超过2亿的部署。
本文将分别介绍Oracle Berkeley DB四大产品线的特点以及应用，希望能对中国市场的新老用户有所启发和帮助。

1. Oracle Berkeley DB数据库产品系列
（图一）
Oracle Berkeley DB 产品家族目前有三大数据库产品，分别是：Berkeley DB，Berkeley DB XML 和 Berkeley DB Java Edition。它们的关系和系统架构可以参照图一。下面我将分别进行介绍。
1.1 Berkeley DB
Berkeley DB 也称 Core（下文都以此简称），是Berkeley DB家族第一个发布的产品。Core的核心代码全部由C语言写成，同时提供其他多种语言的应用程序接口（包括 C++, C#,  Java, Perl, Python, PHP, Tcl, Ruby等等）。Core有以下一些特点（请大家注意，下面列举的大部分特点其实是Berkeley DB家族所有产品的共同特点）：

基于Key/Value的存储：对于Core以及Berkeley DB其他产品来说，用户可以任意定义所存储数据的键（key）以及对应的值（value），这样的数据存储方式具有很好的灵活性和多样性。也是由于这个特点，Berkeley DB产品家族被业界归为非关系型（non-relational）数据库。
嵌入式数据管理：这里的嵌入式跟大家平时提到的嵌入式有点不一样。这里的嵌入式的意思是指，Core是作为库（library）的形式直接嵌入到用户的应用程序当中，和用户程序运行到同一地址空间，用户选择适当的API进行编程调用。这样“嵌入式”的最大好处就是不需要人为进行管理（即不需要专门的DBA），并可以大大提高程序开发的周期，和降低程序后期的维护成本。
体积(footprint)小：由于Core是直接嵌入应用程序当中，所以产品的体积必须越小越好。目前，Core的体积只有1M左右，这意味着，即使对于移动设备（如手机）来说，Core也可以十分轻松嵌入到你的程序中。
几乎具备数据库的所有功能和特性：对于这么小体积的数据库，你也许会问，Core会不会丧失很多数据库的特性呢。恰恰相反，在保持小体积的优势下，Berkeley DB几乎具备数据库的所有特性，包括：ACID，事务性（transaction），错误恢复（failure recover），高并发性（high concurrency）等等。
高可用性（high availability，简称HA)：高可用性一方面可以提高数据读取性能，另一方面是具备自动错误恢复（automatic failover）功能，使数据存储更加安全可靠。
高性能：Core拥有极高的数据存取性能，并且用户可以根据机器的配置进行调优。具体性能测试可以参考文档  Oracle [...]]]></description>
			<content:encoded><![CDATA[<p>Oracle Berkeley DB最先由加州大学伯克利分校为了移除受到AT&amp;T限制的dbm代码，而从BSD 4.3到4.4时所改写的。经过将近二十年的衍化，目前Oracle Berkeley DB家族已经发展到包含4个独立产品线 &#8211; Berkeley DB、Berkeley DB Java 版、Berkeley DB XML和Mobile Server，被应用到行行业业，在全球有超过2亿的部署。</p>
<p>本文将分别介绍Oracle Berkeley DB四大产品线的特点以及应用，希望能对中国市场的新老用户有所启发和帮助。</p>
<p><span id="more-1336"></span></p>
<h1>1. Oracle Berkeley DB数据库产品系列</h1>
<p style="text-align: center;"><a href="http://www.bdbchina.com/wp-content/uploads/2010/09/bdb11gr21.png"><img class="aligncenter size-full wp-image-1416" style="margin-top: 10px; margin-bottom: 10px;" title="bdb11gr2" src="http://www.bdbchina.com/wp-content/uploads/2010/09/bdb11gr21.png" alt="" width="595" height="304" /></a>（图一）</p>
<p>Oracle Berkeley DB 产品家族目前有三大数据库产品，分别是：Berkeley DB，Berkeley DB XML 和 Berkeley DB Java Edition。它们的关系和系统架构可以参照<strong>图一</strong>。下面我将分别进行介绍。</p>
<h2><strong>1.1 Berkeley DB</strong></h2>
<p>Berkeley DB 也称 Core（下文都以此简称），是Berkeley DB家族第一个发布的产品。Core的核心代码全部由C语言写成，同时提供其他多种语言的应用程序接口（包括 C++, C#,  Java, Perl, Python, PHP, Tcl, Ruby等等）。Core有以下一些特点（请大家注意，下面列举的大部分特点其实是Berkeley DB家族所有产品的共同特点）：</p>
<ul>
<li><strong>基于Key/Value的存储</strong>：对于Core以及Berkeley DB其他产品来说，用户可以任意定义所存储数据的键（key）以及对应的值（value），这样的数据存储方式具有很好的灵活性和多样性。也是由于这个特点，Berkeley DB产品家族被业界归为非关系型（non-relational）数据库。</li>
<li><strong>嵌入式数据管理：</strong>这里的嵌入式跟大家平时提到的嵌入式有点不一样。这里的嵌入式的意思是指，Core是作为库（library）的形式直接嵌入到用户的应用程序当中，和用户程序运行到同一地址空间，用户选择适当的API进行编程调用。这样“嵌入式”的最大好处就是不需要人为进行管理（即不需要专门的DBA），并可以大大提高程序开发的周期，和降低程序后期的维护成本。</li>
<li><strong>体积(footprint)小：</strong>由于Core是直接嵌入应用程序当中，所以产品的体积必须越小越好。目前，Core的体积只有1M左右，这意味着，即使对于移动设备（如手机）来说，Core也可以十分轻松嵌入到你的程序中。</li>
<li><strong>几乎具备数据库的所有功能和特性：</strong>对于这么小体积的数据库，你也许会问，Core会不会丧失很多数据库的特性呢。恰恰相反，在保持小体积的优势下，Berkeley DB几乎具备数据库的所有特性，包括：ACID，事务性（transaction），错误恢复（failure recover），高并发性（high concurrency）等等。</li>
<li><strong>高可用性（high availability，简称HA)：</strong>高可用性一方面可以提高数据读取性能，另一方面是具备自动错误恢复（automatic failover）功能，使数据存储更加安全可靠。</li>
<li><strong>高性能：</strong>Core拥有极高的数据存取性能，并且用户可以根据机器的配置进行调优。具体性能测试可以参考文档 <a href="http://www.oracle.com/technology/products/berkeley-db/pdf/berkeley-db-perf.pdf" target="_blank"> Oracle Berkeley DB:Performance Metrics and Benchmarks</a>。</li>
</ul>
<p>尤其需要指出的是：最新版本的Oracle Berkeley DB（11gR2）的一个引人瞩目的特性就是我们引入了对SQL 92标准的支持（见图一红色圆圈部分）。Oracle Berkeley DB SQL接口完全兼容SQLite原有的编程接口， 从而以往运行在SQLite上的程序和应用都可以无缝的、方便的迁移到Oracle Berkeley DB这个更加强大的存储引擎。并且，Oracle Berkeley DB和SQLite还将进行长期的官方层面的合作，保证了Oracle Berkeley DB的SQL接口和SQLite保持一致，免除了用户的后顾之忧。此外，Berkeley DB SQL接口完美支持很多第三方的SQLite工具，如JDBC，ODBC，FireFox 3及其SQLite Manager 插件等。更多有关DBSQL的技术细节，可以参考本站另外一篇博客《<a href="http://www.bdbchina.com/2010/03/oracle-berkeley-db-%e6%94%af%e6%8c%81sql%e5%95%a6%ef%bc%81/" target="_blank">Oracle Berkeley DB 支持SQL啦</a>》。</p>
<p>也许有人会问：何时该选用BDB的Key/Value的选项，何时该选用BDB的SQL接口呢？</p>
<ul>
<li>简单的来理解，BDB的Key/Value的选项是一个本地持久化的“HashTable”，可以存取任何数据类型（声音、视频、图像、Java对象等），通过简单的put/get/delete接口来操作。简单的数据访问方式、不需要太多复杂的统计和分析计算的场合都可以使用。比如，微博客的底层数据管理；如果再和hadoop集成后，还可以做一些复杂的分析功能。</li>
</ul>
<ul>
<li>当使用场合需要轻量级的数据库、有SQL支持、要求高性能和高并发；或者需要和企业端的Oracle 数据库（如Oracle 11g）进行双向的数据同步时，建议可选用Oracle Berkeley DB的SQL接口。举例来说，手持设备/平台上（如Android，Windows Mobile、iPhone等）。</li>
</ul>
<p>更多关于Core的信息，可以参考下面相关链接：</p>
<ul>
<li><a href="http://www.oracle.com/technology/software/products/berkeley-db/index.html" target="_blank">Core下载</a></li>
<li><a href="http://www.oracle.com/technology/documentation/berkeley-db/db/index.html" target="_blank">Core相关文档</a></li>
<li><a href="http://www.oracle.com/technology/products/berkeley-db/faq/db_faq.html" target="_blank">Core FAQ</a> （可以在此找到常见问题答案）</li>
<li><a href="http://forums.oracle.com/forums/forum.jspa?forumID=271" target="_blank">Core官方论坛</a> （在此论坛提出技术问题，会得到Berkeley DB组资深工程师的回答，当然，提问必须是英文。）</li>
<li><a href="http://forums.oracle.com/forums/forum.jspa?forumID=272" target="_blank">Core HA官方论坛</a></li>
</ul>
<h2><strong>1.2 Berkeley DB XML</strong></h2>
<p>Berkeley DB XML是基于Core数据存取之上，专门用于存取XML文档的数据库（如图一所示），简而言之，Berkeley DB XML以Core作为存储引擎，在此基础上建立对XML文档进行管理、索引和查询优化模块，并提供相应的XML 标准的API。因为Berkeley DB XML建立在Core之上，所以除了具备Core的大部分特点之外，还有以下针对XML文档的一些特点：</p>
<ul>
<li><strong>支持XQuery 1.0 and XPath 2.0。</strong></li>
<li><strong>十分灵活的索引功能：</strong>Berkeley DB XML支持节点（node），element（元素），attribute（属性）和元数据（meta-data）索引。这样灵活的索引可以极大提高查找性能，特别是针对存取较大的XML文件。</li>
<li><strong>支持对XML文档的修改</strong></li>
</ul>
<p>更多关于Berkeley DB XML的信息，可以参考下面相关链接：</p>
<ul>
<li><a href="http://www.oracle.com/technology/software/products/berkeley-db/index.html" target="_blank">Berkeley DB XML下载</a></li>
<li><a href="http://www.oracle.com/technology/documentation/berkeley-db/xml/index.html" target="_blank">Berkeley DB XML相关文档</a></li>
<li><a href="http://www.oracle.com/technetwork/database/berkeleydb/xml-faq-088319.html" target="_blank">Berkeley DB XML FAQ</a></li>
<li><a href="http://forums.oracle.com/forums/forum.jspa?forumID=274" target="_blank">Berkeley DB XML官方论坛</a></li>
</ul>
<h2><strong>1.3 Berkeley DB Java Edition</strong></h2>
<p>Berkeley DB Java Edition（以下简称JE）是Berkeley DB产品家族另外一个独立的产品，也就是说，它并不像BDB XML一样基于BDB Core。JE 除了具备上述 Core 的特点（K/V存储、体积小、性能高以及高可用性（HA）等等）之外，还有以下特色：</p>
<ul>
<li><strong>纯java，简单易用：</strong>JE 是纯java语言编写的，意味着JE可以无缝运行于任何java环境。用户只需要在应用程序中包含JE的jar文件，便可调用JE的API进行编程，无需任何额外配置工作。</li>
<li><strong>更高的并发性，更高的性能：</strong>相对于Core，由于JE提供基于“记录”级别（record level，一条记录由Key和Value组成）的锁，所以JE拥有更高的并发性以及更高的读写性能。关于JE的性能测试，可以参考文档：
<ul>
<li><a href="http://www.oracle.com/technetwork/database/berkeleydb/je-derby-performance-130289.pdf" target="_blank">Oracle Berkeley DB Java Edition vs. Apache Derby: A Performance Comparison</a></li>
<li><a href="http://www.oracle.com/technetwork/database/berkeleydb/bdb-je-highavailability-whitepaper--129298.pdf" target="_blank">Oracle Berkeley DB Java Edition High Availability -Large Configuration and Scalability Testing</a></li>
</ul>
</li>
<li><strong>Java对象存储：</strong>JE 利用直接持久层（Direct Persistence Layer，DPL) 可以十分方便、灵活、快速存取用户定义的任意java对象。可参考文档<a href="http://www.oracle.com/technetwork/cn/database/berkeley-db/bdb-je-persistence-api-basics-133242-zhs.pdf?ssSourceSiteId=otnen" target="_blank">Direct Persistence Layer for Berkeley DB Java Edition</a>。</li>
<li><strong>适用于J2EE：</strong>JE 提供对Java Transaction API (JTA), J2EE Connector Architecture (JCA) 和 Java Management Extensions (JMX)的支持。</li>
</ul>
<p>更多关于JE的信息，可以参考下面相关链接：</p>
<ul>
<li><a href="http://www.oracle.com/technology/software/products/berkeley-db/index.html" target="_blank">JE下载</a></li>
<li><a href="http://www.oracle.com/technology/documentation/berkeley-db/je/index.html" target="_blank">JE相关文档</a></li>
<li><a href="http://www.oracle.com/technology/products/berkeley-db/faq/je_faq.html" target="_blank">JE FAQ</a></li>
<li><a href="http://forums.oracle.com/forums/forum.jspa?forumID=273" target="_blank">JE官方论坛</a></li>
</ul>
<h2><strong>1.4 应用举例</strong></h2>
<p>概括而言，你需要一个数据存取的产品，并要满足：</p>
<ul>
<li>性能要求高，相应时间短、占用资源少的场合</li>
<li>方便管理，不需要DBA</li>
<li>数据访问方式是简单的，任何类型的数据</li>
<li>运行于普通硬件平台，随着业务增长可以水平扩展</li>
<li>高可用集群和容错备份</li>
</ul>
<p>可能的应用场景包括：</p>
<ul>
<li>搜索及内容管理</li>
<li>缓存及日志模块</li>
<li>SOA及Web Service的相关模块</li>
<li>资源、系统或者仪器管理</li>
<li>存储设备</li>
<li>网关、网络设备、网络计费系统等</li>
<li>消息队列、工作流等系统</li>
<li>授权及身份管理</li>
<li>仪器、终端和手持设备</li>
</ul>
<p>举例而言：</p>
<ol>
<li>某全球知名电子商务公司，选择Core作为中间层的静态数据缓存。当用户浏览产品页面的时候，所有的产品信息、价格、用户评价等等数据都是先从Core进行读取。这样可以大大提高页面的显示时间，从而增进用户购物体验。同时还利用Core来管理购物车和交易结算等。</li>
<li>某全球著名互联网公司，利用Core HA存取数亿用户的账户信息。Core HA的高性能、高并发性和高可用性满足了此互联网公司对用户登录功能的苛刻要求，包括极短的登录请求响应时间，24×7的无间断服务，高达十亿级别的扩展性，以及极高的可靠性。</li>
<li>比如某知名手机公司推出的智能手机选择Berkeley DB SQL作为其底层数据库。某知名POS机厂商也选择 Berkeley DB SQL接口作为新推出的某款POS机的存储引擎。</li>
<li>某全球连锁酒店选择Berkeley DB XML来实现在线预定和销售系统。</li>
<li>某大型跨国企业选择Berkeley DB XML里进行资产和仪器管理。</li>
<li>很多全球型的金融公司的交易系统和底层基础架构的数据存取模块中选择Berkeley DB及Berkeley DB JE。</li>
<li>军方的战场实施动态监控系统选择Berkeley DB JE。</li>
<li>若干全球知名的社交网站中选择Berkeley DB JE构建上千个节点的云计算方案。</li>
<li>某全球知名的网络服务商的视频点播、短信/邮件、视频电话等系统中。</li>
</ol>
<h1>2. Oracle Berkeley DB 11gR2 + Mobile Server</h1>
<p style="text-align: center;"><a href="http://www.bdbchina.com/wp-content/uploads/2010/07/BDB_MobileServer.png"><img class="aligncenter size-full wp-image-1340" style="margin-top: 10px; margin-bottom: 10px;" title="BDB_MobileServer" src="http://www.bdbchina.com/wp-content/uploads/2010/07/BDB_MobileServer.png" alt="" width="561" height="331" /></a>（图二）</p>
<p style="text-align: left;">Oracle Berkeley DB 11gR2 + Mobile Server 可以提供移动数据同步解决方案。Oracle Mobile Sync Server（以下简称为Mobile Server）是一个提供企业级移动解决方案的中间层（middle-tier infrastructure）。它的一端连接的是客户端数据库，另外一端连接的是Oracle数据库。Mobile Server主要提供以下功能：</p>
<ol>
<li>应用程序统一部署和配置。比如，应用Mobile Server方案的移动设备都可以自动实现软件的安装、更新和打补丁等等配置，这一过程不需要用户的过多参与。</li>
<li>移动设备统一管理。管理员可以远程收集众多移动设备的信息，同时也可以进行统一的操作与部署。比如，管理员可以远程向丢失的移动设备进行额外加密或者销毁设备中的数据。</li>
<li>移动设备与Oracle数据库的数据双向同步。与Oracle数据库的同步功能可以保持移动设备的完整性和及时性，并且不要求移动设备时刻与Oracle数据库保持连接。</li>
</ol>
<p>在Oracle Berkeley DB 11gR2之前，Mobile Server支持的客户端数据库是Oracle Database Lite Client。往后Oracle Berkeley DB 11gR2 会是Mobile Server客户端数据库的推荐选择，而原来的Oracle Database Lite Client将停止新功能开发。因为Berkeley DB 11gR2安装更加简单，性能更加优越，并且体积更小。Berkeley DB 11gR2 + Mobile Server的总体架构图如<strong>图二</strong>所示。</p>
<p>Oracle Mobile Server 的应用举例：</p>
<ol>
<li>某国的海岸卫队的舰船上的数据同步和设备管理。</li>
<li>某大型的博彩机构的手机订单系统。</li>
<li>某国海关的缉私等设备上。</li>
<li>某大型快速消费品公司的自动售货机上。</li>
</ol>
<p>更多关于Oracle Mobile Sync Server的信息，可以参考下面相关链接：</p>
<ul>
<li><a href="http://www.oracle.com/technetwork/database/database-lite/overview/index.html" target="_blank">Oracle Database Lite 10g</a></li>
<li><a href="http://www.oracle.com/technetwork/database/database-lite/lite-mobile-server-083863.html" target="_blank">Oracle Database Lite Mobile Server 10g</a></li>
</ul>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1562px; width: 1px; height: 1px; overflow: hidden;">- 性能要求高，资源少的场合 （如任务密集型的应用，像工作流、规则引擎、队<br />
列、SOA事件管理和监控、网站缓存等）<br />
- 方便管理，不需要dba （如仪器、设备，像手机，汽车、医疗设备等）<br />
- 数据管理/访问方式是简单的，面向对象的 （如Twitter， facebook等，只需要<br />
简单、高效的插入和删除操作；不需要很多复杂的分析和统计功能）<br />
- 运行于普通硬件平台，随着业务增长可以水平扩展的 (如云计算、金融系统等）</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2010/09/oracle-berkeley-db-%e4%ba%a7%e5%93%81%e5%ae%b6%e6%97%8f%e4%bb%8b%e7%bb%8d/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>使用Oracle Berkeley DB实现空间数据库</title>
		<link>http://www.bdbchina.com/2010/07/%e4%bd%bf%e7%94%a8oracle-berkeley-db%e5%ae%9e%e7%8e%b0%e7%a9%ba%e9%97%b4%e6%95%b0%e6%8d%ae%e5%ba%93/</link>
		<comments>http://www.bdbchina.com/2010/07/%e4%bd%bf%e7%94%a8oracle-berkeley-db%e5%ae%9e%e7%8e%b0%e7%a9%ba%e9%97%b4%e6%95%b0%e6%8d%ae%e5%ba%93/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 02:10:18 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB]]></category>
		<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[bdb]]></category>
		<category><![CDATA[JE]]></category>
		<category><![CDATA[spatial]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1332</guid>
		<description><![CDATA[关于使用Oracle Berkeley DB作为空间数据库的引擎，可以参考如下资料：
* 使用基于Key/Value 接口的场合，可以考虑Berkeley DB C版本或者Berkeley DB Java 版的产品。可以参考美国University of Virginia的叫做PRIDE的学术论文：http://www.cs.virginia.edu/~stankovic/psfiles/pride.pdf
* 使用Oracle Berkeley DB SQL产品中的R*Tree功能，具体可以参考：http://www.bdbchina.com/2010/04/bdb11gr2的r-tree功能/
更多反馈，欢迎留言。
]]></description>
			<content:encoded><![CDATA[<p>关于使用Oracle Berkeley DB作为空间数据库的引擎，可以参考如下资料：</p>
<p>* 使用基于Key/Value 接口的场合，可以考虑Berkeley DB C版本或者Berkeley DB Java 版的产品。可以参考美国University of Virginia的叫做PRIDE的学术论文：<a href="http://www.cs.virginia.edu/~stankovic/psfiles/pride.pdf">http://www.cs.virginia.edu/~stankovic/psfiles/pride.pdf</a></p>
<p>* 使用Oracle Berkeley DB SQL产品中的R*Tree功能，具体可以参考：<a href="http://www.bdbchina.com/2010/04/bdb11gr2%E7%9A%84r-tree%E5%8A%9F%E8%83%BD/">http://www.bdbchina.com/2010/04/bdb11gr2的r-tree功能/</a></p>
<p>更多反馈，欢迎留言。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2010/07/%e4%bd%bf%e7%94%a8oracle-berkeley-db%e5%ae%9e%e7%8e%b0%e7%a9%ba%e9%97%b4%e6%95%b0%e6%8d%ae%e5%ba%93/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BDB-JE HA性能白皮书</title>
		<link>http://www.bdbchina.com/2010/07/bdb-je-ha%e6%80%a7%e8%83%bd%e7%99%bd%e7%9a%ae%e4%b9%a6/</link>
		<comments>http://www.bdbchina.com/2010/07/bdb-je-ha%e6%80%a7%e8%83%bd%e7%99%bd%e7%9a%ae%e4%b9%a6/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 01:43:07 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Chao Huang]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1325</guid>
		<description><![CDATA[自从BDB-JE 4.0推出了高可用/集群的新特性，我们的工程师进一步做了关于在大型服务器上运行BDB-JE HA的性能测试。具体测试案例及结果数据可参考：http://www.oracle.com/technology/products/berkeley-db/pdf/BDB-JE-HighAvailability-WhitePaper-June2010.pdf。
这篇白皮书可以作为BDB-JE HA性能的参考，也可以作为测试选型BDB-JE HA的依据。需要注意的是， 性能数据依赖于很多因素的影响，我们的测试结果仅作参考。
同时，你可能发现附件中涉及到的关于GC和JVM参数的调整，对于性能的巨大影响。
希望能对您有用。更多反馈，欢迎留言。
]]></description>
			<content:encoded><![CDATA[<p>自从BDB-JE 4.0推出了高可用/集群的新特性，我们的工程师进一步做了关于在大型服务器上运行BDB-JE HA的性能测试。具体测试案例及结果数据可参考：http://www.oracle.com/technology/products/berkeley-db/pdf/BDB-JE-HighAvailability-WhitePaper-June2010.pdf。</p>
<p>这篇白皮书可以作为BDB-JE HA性能的参考，也可以作为测试选型BDB-JE HA的依据。需要注意的是， 性能数据依赖于很多因素的影响，我们的测试结果仅作参考。</p>
<p>同时，你可能发现附件中涉及到的关于GC和JVM参数的调整，对于性能的巨大影响。</p>
<p>希望能对您有用。更多反馈，欢迎留言。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2010/07/bdb-je-ha%e6%80%a7%e8%83%bd%e7%99%bd%e7%9a%ae%e4%b9%a6/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
Դ
