1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6 <title>Replication Benefits</title> 7 <link rel="stylesheet" href="gettingStarted.css" type="text/css" /> 8 <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /> 9 <link rel="start" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" /> 10 <link rel="up" href="introduction.html" title="Chapter 1. Introduction" /> 11 <link rel="prev" href="introduction.html" title="Chapter 1. Introduction" /> 12 <link rel="next" href="apioverview.html" title="The Replication APIs" /> 13 </head> 14 <body> 15 <div class="navheader"> 16 <table width="100%" summary="Navigation header"> 17 <tr> 18 <th colspan="3" align="center">Replication Benefits</th> 19 </tr> 20 <tr> 21 <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td> 22 <th width="60%" align="center">Chapter 1. Introduction</th> 23 <td width="20%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td> 24 </tr> 25 </table> 26 <hr /> 27 </div> 28 <div class="sect1" lang="en" xml:lang="en"> 29 <div class="titlepage"> 30 <div> 31 <div> 32 <h2 class="title" style="clear: both"><a id="repadvantage"></a>Replication Benefits</h2> 33 </div> 34 </div> 35 </div> 36 <p> 37 38 Replication offers your application a number of benefits that 39 can be a tremendous help. Primarily replication's benefits 40 revolve around performance, but there is also a benefit in 41 terms of data durability guarantees. 42 </p> 43 <p> 44 Briefly, the reasons why you might choose to implement 45 replication in your DB application are: 46 </p> 47 <div class="itemizedlist"> 48 <ul type="disc"> 49 <li> 50 <p> 51 Improve application reliability. 52 </p> 53 <p> 54 By spreading your data across multiple 55 machines, you can ensure that your 56 application's data continues to be 57 available even in the event of a 58 hardware failure on any given machine in 59 the replication group. 60 </p> 61 </li> 62 <li> 63 <p> 64 Improve read performance. 65 </p> 66 <p> 67 By using replication you can spread data reads across 68 multiple machines on your network. Doing so allows you 69 to vastly improve your application's read performance. 70 This strategy might be particularly interesting for 71 applications that have readers on remote network nodes; 72 you can push your data to the network's edges thereby 73 improving application data read responsiveness. 74 </p> 75 <p> 76 Additionally, depending on the portion of your data 77 that you read on a given replica, that replica may need 78 to cache part of your data, decreasing cache misses and 79 reducing I/O on the replica. 80 </p> 81 </li> 82 <li> 83 <p> 84 Improve transactional commit performance 85 </p> 86 <p> 87 In order to commit a transaction and achieve a 88 transactional durability guarantee, the commit must be 89 made <span class="emphasis"><em>durable</em></span>. That is, the commit 90 must be written to disk (usually, but not always, 91 synchronously) before the application's thread of 92 control can continue operations. 93 </p> 94 <p> 95 Replication allows you to avoid this disk I/O and still 96 maintain a degree of durability by <span class="emphasis"><em>committing 97 to the network</em></span>. In other words, you relax 98 your transactional durability guarantees on the master, 99 but by virtue of replicating the data across the 100 network you gain some additional durability guarantees 101 above what is provided locally. 102 </p> 103 <p> 104 Usually this strategy is implemented using some form of 105 an asynchronous transactional commit on the master. In 106 this way your data writes will eventually be written to 107 disk, but your application will not have to wait for 108 the disk I/O to complete before continuing with its 109 next operation. 110 </p> 111 <p> 112 Note that it is possible to cause DB's replication 113 implementation to wait to hear from one or 114 more replicas as to whether they have successfully 115 saved the write before continuing. However, in this 116 case you might be trading performance for a even 117 higher durability guarantee (see below). 118 </p> 119 </li> 120 <li> 121 <p> 122 Improve data durability guarantee. 123 </p> 124 <p> 125 In a traditional transactional application, you commit your 126 transactions such that data modifications are saved to 127 disk. Beyond this, the durability of your data is 128 dependent upon the backup strategy that you choose to 129 implement for your site. 130 </p> 131 <p> 132 Replication allows you to increase this durability 133 guarantee by ensuring that data modifications are 134 written to multiple machines. This means that multiple 135 disks, disk controllers, power supplies, and CPUs are 136 used to ensure that your data modification makes it to 137 stable storage. In other words, replication allows you 138 to minimize the problem of a single point of failure 139 by using more hardware to guarantee your data writes. 140 </p> 141 <p> 142 If you are using replication for this reason, then you 143 probably will want to configure your application such 144 that it waits to hear about a successful commit from 145 one or more replicas before continuing with the next 146 operation. This will obviously impact your 147 application's write performance to some degree 148 — with the performance penalty being largely dependent 149 upon the speed and stability of the network connecting 150 your replication group. 151 </p> 152 <p> 153 For more information, see <a class="xref" href="fwrkpermmessage.html" title="Permanent Message Handling">Permanent Message Handling</a>. 154 </p> 155 </li> 156 </ul> 157 </div> 158 </div> 159 <div class="navfooter"> 160 <hr /> 161 <table width="100%" summary="Navigation footer"> 162 <tr> 163 <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a> </td> 164 <td width="20%" align="center"> 165 <a accesskey="u" href="introduction.html">Up</a> 166 </td> 167 <td width="40%" align="right"> <a accesskey="n" href="apioverview.html">Next</a></td> 168 </tr> 169 <tr> 170 <td width="40%" align="left" valign="top">Chapter 1. Introduction </td> 171 <td width="20%" align="center"> 172 <a accesskey="h" href="index.html">Home</a> 173 </td> 174 <td width="40%" align="right" valign="top"> The Replication APIs</td> 175 </tr> 176 </table> 177 </div> 178 </body> 179</html> 180