<?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>Learn Software Development &#187; Technical</title>
	<atom:link href="http://learnsoftwareprocesses.com/category/technical/feed/" rel="self" type="application/rss+xml" />
	<link>http://learnsoftwareprocesses.com</link>
	<description>All about the processes involved in software development</description>
	<lastBuildDate>Tue, 07 Feb 2012 19:53:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What is the ARIES Recovery Algorithm ?</title>
		<link>http://learnsoftwareprocesses.com/2009/09/07/what-is-the-aries-recovery-algorithm/</link>
		<comments>http://learnsoftwareprocesses.com/2009/09/07/what-is-the-aries-recovery-algorithm/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 10:19:08 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Recovery]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Transaction]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[ARIES]]></category>
		<category><![CDATA[ARIES recovery algorithm]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=331</guid>
		<description><![CDATA[<p>&#8216;Algorithms for Recovery and Isolation Exploiting Semantics&#8217;, or ARIES is a recovery algorithm designed to work with a no-force, steal database approach; it is used by IBM DB2, Microsoft SQL Server and many other database systems.</p> <p>Three main principles lie behind ARIES: - Write ahead logging: Any change to an object is first recorded in [...]]]></description>
			<content:encoded><![CDATA[<p>&#8216;Algorithms for Recovery and Isolation Exploiting Semantics&#8217;, or ARIES is a recovery algorithm designed to work with a no-force, steal database approach; it is used by IBM DB2, Microsoft SQL Server and many other database systems.</p>
<p>Three main principles lie behind ARIES:<br />
- Write ahead logging: Any change to an object is first recorded in the log, and the log must be written to stable storage before changes to the object are written to disk.<br />
- Repeating history during Redo: On restart after a crash, ARIES retraces the actions of a database before the crash and brings the system back to the exact state that it was in before the crash. Then it undo the transactions still active at crash time.<br />
- Logging changes during Undo: Changes made to the database while undoing transactions are logged to ensure such an action isn&#8217;t repeated in the event of repeated restarts.</p>
<p>The ARIES recovery procedure consists of three main steps :<br />
- Analysis : It identifies the dirty (updated) pages in the buffer and the set of transactions active at the time of crash. The appropriate point in the log where REDO operation should start is also determined.<br />
- REDO phase : It actually reapplies updates from the log to the database. Generally the REDO operation is applied to only committed transactions. However, in ARIES, this is not the case. Certain information in the ARIES log will provide the start point for REDO, from which REDO operations are applied until the end of the log is reached. Thus only the necessary REDO operations are applied during recovery.<br />
- UNDO phase : The log is scanned backwards and the operations of transactions that were active at the time of the crash are undone in reverse order. The information needed for ARIES to accomplish its recovery procedure includes the log, the transaction table, and the dirty page table. In addition, checkpointing is used.   </p>
<p>DATA STRUCTURES USED IN ARIES RECOVERY ALGORITHM :<br />
Log records contain following fields :<br />
- LSN<br />
- Type (CLR, update, special)<br />
- TransID<br />
- PrevLSN (LSN of prev record of this txn)<br />
- PageID (for update/CLRs)<br />
- UndoNxtLSN (for CLRs)<br />
   * indicates which log record is being compensated<br />
   * on later undos, log records upto UndoNxtLSN can be skipped<br />
- Data (redo/undo data); can be physical or logical.</p>
<p>Transaction Table :<br />
- Stores for each transaction:<br />
   * TransID, State.<br />
   * LastLSN (LSN of last record written by txn).<br />
   * UndoNxtLSN (next record to be processed in rollback).<br />
- During recovery:<br />
   * Initialized during analysis pass from most recent checkpoint.<br />
   * Modified during analysis as log records are encountered, and during undo.</p>
<p>Dirty Pages Table<br />
- During normal processing :<br />
   * When page is fixed with intention to update<br />
       &#8220;Let L = current end-of-log LSN (the LSN of next log record to be generated).<br />
       &#8221; if page is not dirty, store L as RecLSN of the page in dirty pages table.<br />
   * When page is flushed to disk, delete from dirty page table.<br />
   * Dirty page table written out during checkpoint.<br />
   * (Thus RecLSN is LSN of earliest log record whose effect is not reflected in page on disk).<br />
- During recovery :<br />
   * Load dirty page table from checkpoint.<br />
   * Updated during analysis pass as update log records are encountered.</p>
<p>Checkpoints :<br />
- Begin_chkpt record is written first.<br />
- Transaction table, dirty_pages table and some other file mgmt information are written out.<br />
- End_chkpt record is then written out.<br />
   * For simplicity all above are treated as part of end_chkpt record.<br />
- LSN of begin_chkpt is then written to master record in well known place on stable storage.<br />
- Incomplete checkpoint.<br />
   * if system crash before end_chkpt record is written.<br />
- Pages need not be flushed during checkpoint<br />
   * They are flushed on a continuous basis.<br />
- Transactions may write log records during checkpoint.<br />
- Can copy dirty_page table fuzzily (hold latch, copy some entries out, release latch, repeat).</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/09/07/what-is-the-aries-recovery-algorithm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overview of Shadow Paging</title>
		<link>http://learnsoftwareprocesses.com/2009/09/06/overview-of-shadow-paging/</link>
		<comments>http://learnsoftwareprocesses.com/2009/09/06/overview-of-shadow-paging/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 11:56:45 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Explanation]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Terms]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Page]]></category>
		<category><![CDATA[Recovery]]></category>
		<category><![CDATA[Recovery Technique]]></category>
		<category><![CDATA[Shadow Paging]]></category>
		<category><![CDATA[Transaction]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=325</guid>
		<description><![CDATA[<p>A computer system, like any other mechanical or electrical system is subject to failure. There are a variety of causes, including disk crash, power failure, software errors, a fire in the machine room, or even sabotage. Whatever the cause, information may be lost. The database must take actions in advance to ensure that the atomicity [...]]]></description>
			<content:encoded><![CDATA[<p>A computer system, like any other mechanical or electrical system is subject to failure. There are a variety of causes, including disk crash, power failure, software errors, a fire in the machine room, or even sabotage. Whatever the cause, information may be lost. The database must take actions in advance to ensure that the atomicity and durability properties of transactions are preserved. An integral part of a database system is a recovery scheme that is responsible for the restoration of the database to a consistent stage that existed prior to the occurrence of the failure.</p>
<p>Shadow paging is a technique used to achieve atomic and durable transactions, and provides the ability to manipulate pages in a database. During a transaction, the pages affected by the transaction are copied from the database file into a workspace such as volatile memory, and modified in that workspace. When a transaction is committed, all of the pages that were modified by the transaction are written from the workspace to unused pages in the database file. During execution of the transaction, the state of the database exposed to the user is that is which the database existed prior to the transaction, since the database file still contains the original versions of the modified pages, as they existed before being copied into the workspace if a user accesses the database before the transaction is complete, or upon recovery of failure, it will appear as though the transaction has not occurred. </p>
<p>- Shadow paging is an alternative to log-based recovery; this scheme is useful if transactions execute serially.<br />
- Basic Idea: Maintain two page tables during the lifetime of a transaction – the current page table, and the shadow page table.<br />
- Store the shadow page table in nonvolatile storage, such that state of the database prior to transaction execution may be recovered.<br />
    * Shadow page table is never modified during execution.<br />
- Initially, both the page tables are identical. Only current page table is used for data item accesses during execution of the transaction.<br />
- Whenever any page is about to be written for the first time<br />
    * A copy of this page is made onto an unused page.<br />
    * The current page table is then made to point to the copy.<br />
    * The update is performed on the copy.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/09/06/overview-of-shadow-paging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Tech Tip: Encapsulation &#8211; What does it mean ?</title>
		<link>http://learnsoftwareprocesses.com/2009/07/29/quick-tech-tip-encapsulation-what-does-it-mean/</link>
		<comments>http://learnsoftwareprocesses.com/2009/07/29/quick-tech-tip-encapsulation-what-does-it-mean/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 17:46:50 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Definition]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Object Oriented]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=261</guid>
		<description><![CDATA[<p>Encapsulation is not a common word in the English language; however, it is an important phrase in the word of software design, especially in the world of Object Oriented Programming. So what does encapsulation mean ? In computer science, the principle of information hiding means the hiding of design decisions in a computer program, those [...]]]></description>
			<content:encoded><![CDATA[<p>Encapsulation is not a common word in the English language; however, it is an important phrase in the word of software design, especially in the world of Object Oriented Programming. So what does encapsulation mean ?<br />
In computer science, the principle of information hiding means the hiding of design decisions in a computer program, those decisions that are most likely to change, thus protecting other parts of the program from change; especially if the design decision is changed. The protection involves providing a stable interface which shields the remainder of the program from the implementation (the details that are most likely to change). The purpose is to achieve potential for change: the internal mechanisms of the component can be improved without impact on other components, or the component can be replaced with a different one that supports the same public interface.<br />
The term encapsulation is often used interchangeably with information hiding, while some make distinctions between these two terms (although to most people these terms seem the same). It seems that people, however, fail to agree on the distinctions between information hiding and encapsulation though one can think of information hiding as being the principle and encapsulation being the technique. A software module hides information by encapsulating the information into a module or other construct which presents an interface.<br />
The concept of encapsulation is a term that is an integral part of object-oriented programming, where the interface to an object is defined by its public methods, while its internal state is represented by private data. Encapsulation is a good principle of object oriented design, and part of well designed systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/07/29/quick-tech-tip-encapsulation-what-does-it-mean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Tech Tip: Layer 2 Tunneling protocol : L2TP</title>
		<link>http://learnsoftwareprocesses.com/2009/07/23/quick-tech-tip-layer-2-tunneling-protocol-l2tp/</link>
		<comments>http://learnsoftwareprocesses.com/2009/07/23/quick-tech-tip-layer-2-tunneling-protocol-l2tp/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 13:49:58 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[L2TP]]></category>
		<category><![CDATA[Layer Two Tunneling Protocol (L2TP)]]></category>
		<category><![CDATA[Point-to-point protocol]]></category>
		<category><![CDATA[PPP]]></category>
		<category><![CDATA[traffic]]></category>
		<category><![CDATA[virtual private network]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=253</guid>
		<description><![CDATA[<p>Layer Two Tunneling Protocol (L2TP) is an extension of the Point-to-Point Tunneling Protocol (PPTP) used by an Internet service provider (ISP) to enable the operation of a virtual private network (VPN) over the Internet. The two end components that make up L2TP are the L2TP Access Concentrator (LAC) which is the device that physically terminates [...]]]></description>
			<content:encoded><![CDATA[<p>Layer Two Tunneling Protocol (L2TP) is an extension of the Point-to-Point Tunneling Protocol (PPTP) used by an Internet service provider (ISP) to enable the operation of a virtual private network (VPN) over the Internet.<br />
The two end components that make up L2TP are the L2TP Access Concentrator (LAC) which is the device that physically terminates a call and the L2TP Network Server (LNS), which is the device that terminates and possibly authenticates the PPP stream. Once a tunnel is established, the network traffic between the peers is bidirectional. To be useful for networking, higher level protocols are then run through the L2TP tunnel. To facilitate this L2TP session (or call) is established within the tunnel for each higher-level protocol such as PPP. Either the LAC or LNS may initiate sessions. The traffic for each session is isolated by L2TP, so it is possible to set up multiple virtual networks across a single tunnel.<br />
The packets exchanged within an L2TP tunnel are either categorized as control<br />
packets or data packets. L2TP provides reliability features for the control packets, but no reliability for data packets. Reliability, if desired, must be provided by the nested protocols running within each session of the L2TP tunnel.<br />
An L2TP tunnel can extend across an entire PPP session or only across one segment of a two-segment session. This can be represented by four different tunneling models :<br />
- Voluntary Tunnel model : a tunnel is created by the user, typically by the use of an L2TP enabled client which is called the LAC client. The user will send L2TP packets to the Internet Service Provider (ISP) which will forward them on to the LNS.<br />
- Compulsory tunnel model-incoming call: a tunnel is created between ISP LAC and the LNS home gateway.<br />
- Compulsory tunnel model-remote dial the home gateway (LNS) initiates a tunnel to an ISP (LAC) (outgoing call) and instructs the ISP to place a local call to the PPP enabled client which is the remote user.<br />
- L2TP Multi-hop connection : It is a way of redirecting L2TP traffic on behalf of client LACs and LNSs. A Multi-hop connection is established using an L2TP Multi-hop gateway. A tunnel is established from a client LAC to the L2TP Multi-hop gateway and then another tunnel is established between the L2TP Multi-hop gateway and a target LNS. L2TP traffic between client LAC and LNS is redirected to each other through the gateway.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/07/23/quick-tech-tip-layer-2-tunneling-protocol-l2tp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Technical Tip : Tunneling</title>
		<link>http://learnsoftwareprocesses.com/2009/07/23/quick-technical-tip-tunneling/</link>
		<comments>http://learnsoftwareprocesses.com/2009/07/23/quick-technical-tip-tunneling/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 13:44:51 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[L2TP]]></category>
		<category><![CDATA[Layer 2 tunneling protocol]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Networks]]></category>
		<category><![CDATA[Point-to-point protocol]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[Transfer of data]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=249</guid>
		<description><![CDATA[<p>Tunneling is a way in which data is transferred between two networks securely. All the data that is being transferred are fragmented into smaller packets or frames and then passed through the tunnel. This process is different from a normal data transfer between nodes. Every frame passing through the tunnel will be encrypted with an [...]]]></description>
			<content:encoded><![CDATA[<p>Tunneling is a way in which data is transferred between two networks securely. All the data that is being transferred are fragmented into smaller packets or frames and then passed through the tunnel. This process is different from a normal data transfer between nodes. Every frame passing through the tunnel will be encrypted with an additional layer of tunneling encryption and encapsulation which is also used for routing the packets to the right direction. This encapsulation would then be reverted at the destination with decryption of data which is later sent to the desired destined node.<br />
Example: People have written tunnels over ICMP, DNS, HTTP, e-mail messages, and TCP connections. Tunnels can either by of the &#8220;port redirector&#8221; style (which run on top of any TCP/IP stack) or of the network interface variety (below the TCP/IP stack requiring kernel mod).<br />
VPN connection are of two type, PPTP (Point-to-Point tunneling protocol) and L2TP (Layer 2 tunneling protocol). Both PPTP and L2TP tunnels are nothing but local sessions between two different endpoints. Incase they have to communicate then the tunneling type must be negotiated between the endpoint, either PPTP or L2TP and then more configurable parameters like encryption, address assignment, compression etc must be configured in order to get the best possible security over the internet based private logical tunnel communication. This communication is created, maintained and terminated using a tunnel management protocol.<br />
Data can be sent once the tunnel is in place and clients or server can use the same tunnel to send and receive data across the internetwork. The data transfer depends upon the tunneling protocols being used for the transfer.</p>
]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/07/23/quick-technical-tip-tunneling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

