<?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>VoltDB Blog &#187; Best Practices</title>
	<atom:link href="http://blog.voltdb.com/category/blog/best-practices/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.voltdb.com</link>
	<description>VoltDB Blog</description>
	<lastBuildDate>Tue, 07 May 2013 21:53:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>What’s the plan?</title>
		<link>http://blog.voltdb.com/whats-the-plan-2/</link>
		<comments>http://blog.voltdb.com/whats-the-plan-2/#comments</comments>
		<pubDate>Tue, 07 May 2013 09:05:09 +0000</pubDate>
		<dc:creator>Ruth Morgenstein</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[NewSQL]]></category>

		<guid isPermaLink="false">http://blog.voltdb.com/?p=649</guid>
		<description><![CDATA[<h1 dir="ltr"></h1>
<p dir="ltr">“Why is this so slow?” Have you put your application into testing (you did this before going to production, right?) and wondered why you’re not getting VoltDB’s world-class performance? The problem might be with the SQL execution plan.</p>
<p dir="ltr">This article shows you how to look at the SQL execution plans and use the information to tune your application.</p>
<h2 dir="ltr">Getting the plans at compile time</h2>
<p>In VoltDB, you can get execution plan information when you compile your stored procedures or later, when the database is up and running. When you <a href="http://voltdb.com/docs/UsingVoltDB/BuildCompileCatalog.php">build the application catalog</a> using the <span style="font-family: 'courier new', courier;">voltdb compile</span> command, the console &#8230; <a href="http://blog.voltdb.com/whats-the-plan-2/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/whats-the-plan-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSON in VoltDB</title>
		<link>http://blog.voltdb.com/json-support-in-voltdb/</link>
		<comments>http://blog.voltdb.com/json-support-in-voltdb/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 15:00:46 +0000</pubDate>
		<dc:creator>John Piekos</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[NewSQL]]></category>
		<category><![CDATA[Building VoltDB Apps]]></category>
		<category><![CDATA[High Throughput Apps]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[VoltDB Products/Versions]]></category>

		<guid isPermaLink="false">http://blog.voltdb.com/?p=586</guid>
		<description><![CDATA[<p>VoltDB 3.0 introduces the use of <a href="http://en.wikipedia.org/wiki/JSON">JSON-encoded</a> columns to allow more flexibility in how you structure and interact with your data. New SQL functions and index capabilities let you work more naturally with JSON data while maintaining the efficiency and transactional consistency of a relational database.</p>
<p><strong>How?  A VoltDB JSON Example</strong></p>
<p>Let’s assume that you want to implement a single sign-on (SSO) application using VoltDB.  You wish to store the login session for a set of different online sites under a common username.  Each login session could hold different user state, simple data values or possibly more complex structures. Additionally, &#8230; <a href="http://blog.voltdb.com/json-support-in-voltdb/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/json-support-in-voltdb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scaling with VoltDB: The Clustered Database</title>
		<link>http://blog.voltdb.com/scaling-with-voltdb-the-clustered-database/</link>
		<comments>http://blog.voltdb.com/scaling-with-voltdb-the-clustered-database/#comments</comments>
		<pubDate>Wed, 09 Jan 2013 19:20:48 +0000</pubDate>
		<dc:creator>John Piekos</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Benchmarking]]></category>
		<category><![CDATA[Building VoltDB Apps]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[High Availability]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://blog.voltdb.com/?p=569</guid>
		<description><![CDATA[<p>This is part 2 (of 2) of my Programming VoltDB &#8211; Easy, Flexible and Ultra-fast series. <a href="http://blog.voltdb.com/programming-voltdb-easy-flexible-and-ultra-fast/">Blog post, part 1</a>, showed how to build a VoltDB application using ad hoc queries and achieving thousands of transactions a second. It also showed how converting that logic to use VoltDB stored procedures allowed you to parallelize query execution and achieve 100,000+ transactions a second on a single node. In this blog post I’ll talk about scaling beyond 100,000 transactions per second by creating a VoltDB clustered database.</p>
<p>There are primarily two reasons why you would want to run VoltDB as a &#8230; <a href="http://blog.voltdb.com/scaling-with-voltdb-the-clustered-database/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/scaling-with-voltdb-the-clustered-database/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Simplify Your Stored Procedure Logic with Expectations</title>
		<link>http://blog.voltdb.com/simplify-your-store-procedure-logic-with-expectations/</link>
		<comments>http://blog.voltdb.com/simplify-your-store-procedure-logic-with-expectations/#comments</comments>
		<pubDate>Tue, 04 Dec 2012 03:06:14 +0000</pubDate>
		<dc:creator>Andrew Wilson</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Building VoltDB Apps]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.voltdb.com/?p=420</guid>
		<description><![CDATA[<p>John Hugg was talking with me today about a way to reduce the complexity of error checking in a stored procedure and how rarely it is used. VoltDB’s stored procedures let you set “expectations” on each SQL statement. Those expectations can eliminate several lines of code leading to shorter, readable and more reliable stored procedures.</p>
<p>Consider the following sample:</p>
<p><strong>Example.DDL</strong><strong></strong></p>
<p><strong>LoginProc1.java</strong></p>
<p><strong>LoginProc2.java</strong><strong></strong></p>
<p><em>LoginProc1</em> checks for a row count and returns either a 0 or a 1 if the username and password combination could not be found. <em>LoginProc2</em> sets an expectation that the results of <em>voltExecuteSQL</em>() will return exactly one &#8230; <a href="http://blog.voltdb.com/simplify-your-store-procedure-logic-with-expectations/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/simplify-your-store-procedure-logic-with-expectations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Upserts in VoltDB</title>
		<link>http://blog.voltdb.com/upserts-in-voltdb/</link>
		<comments>http://blog.voltdb.com/upserts-in-voltdb/#comments</comments>
		<pubDate>Fri, 16 Nov 2012 15:34:03 +0000</pubDate>
		<dc:creator>Andrew Wilson</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Building VoltDB Apps]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SQL Java]]></category>

		<guid isPermaLink="false">http://newblog.voltdb.com/?p=307</guid>
		<description><![CDATA[<p><strong>Upserts in VoltDB</strong><strong></strong></p>
<p>The idea behind an upsert is that you try an update or an insert query first and if it fails, you then do the other query.<br />
Why do an upsert? Upserts tend to be very fast in traditional databases because they can execute in as little as one query or as many as two. Consequently, a good upsert strategy has only two defined queries (insert and update) rather than three (insert, update and select). More importantly, “upsert” itself can be a keyword in which the database understands that it is responsible for figuring out whether to update &#8230; <a href="http://blog.voltdb.com/upserts-in-voltdb/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/upserts-in-voltdb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Recap of VoltDB for SQL Devs Webinar</title>
		<link>http://blog.voltdb.com/recap-voltdb-sql-devs-webinar/</link>
		<comments>http://blog.voltdb.com/recap-voltdb-sql-devs-webinar/#comments</comments>
		<pubDate>Tue, 31 Jul 2012 17:14:21 +0000</pubDate>
		<dc:creator>Ben Ballard</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[OLTP]]></category>
		<category><![CDATA[VoltDB Products]]></category>
		<category><![CDATA[Building VoltDB Apps]]></category>
		<category><![CDATA[Public Presentations]]></category>
		<category><![CDATA[VoltDB Applications]]></category>

		<guid isPermaLink="false">http://newblog.voltdb.com/?p=109</guid>
		<description><![CDATA[<p>We had a great turnout for the <strong><em>VoltDB for SQL Developers</em></strong> webinar on July 19th. The audience was engaged and asked many good questions.  We had attendees from all over the US, Canada and Germany.  I&#8217;d like to thank all those who attended and asked questions, and those who have contacted us since then with additional questions and feedback.</p>
<p>There were several questions in particular about partitioning and working with stored procedures, which hit upon what I think are the two most important concepts.</p>
<p><strong>Partitioning</strong> enables scalability and throughput, by distributing both data storage and transaction processing across the hardware &#8230; <a href="http://blog.voltdb.com/recap-voltdb-sql-devs-webinar/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/recap-voltdb-sql-devs-webinar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building A High Throughput Web App with Spring-MVC and VoltDB</title>
		<link>http://blog.voltdb.com/building-high-throughput-web-app-spring-mvc-and-voltdb/</link>
		<comments>http://blog.voltdb.com/building-high-throughput-web-app-spring-mvc-and-voltdb/#comments</comments>
		<pubDate>Thu, 21 Jun 2012 17:04:51 +0000</pubDate>
		<dc:creator>Andrew Wilson</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Real-time Analytics]]></category>
		<category><![CDATA[Building VoltDB Apps]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring Integration]]></category>

		<guid isPermaLink="false">http://newblog.voltdb.com/?p=99</guid>
		<description><![CDATA[<p>My last few posts have discussed parts of a web application that integrate <a href="http://www.voltdb.com/tao-volt/products-solutions.php" data-cke-saved-href="http://voltdb.com/products-services/products">VoltDB</a> into a Spring web application. Today I will show how all the pieces are put together to build a low latency, high throughput Spring-MVC application. Much of my focus will be on the data layer where VoltDB resides, but I will go all the way up to the browser too.</p>
<p><a href="http://newblog.voltdb.com/wp-content/uploads/2012/10/Spring-Logo.png"><img class="alignright size-full wp-image-96" title="Spring Logo" src="http://newblog.voltdb.com/wp-content/uploads/2012/10/Spring-Logo.png" alt="Spring Logo" width="235" height="83" /></a>The application is simple. It has two main parts. The first is a scheduled process that casts votes into VoltDB. Those votes simulate people calling in and voting for their favorite contestant in a talent show. &#8230; <a href="http://blog.voltdb.com/building-high-throughput-web-app-spring-mvc-and-voltdb/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/building-high-throughput-web-app-spring-mvc-and-voltdb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the Spring Converter API with VoltDB Data Objects</title>
		<link>http://blog.voltdb.com/using-spring-converter-api-voltdb-data-objectsh-voltdb-data-objects/</link>
		<comments>http://blog.voltdb.com/using-spring-converter-api-voltdb-data-objectsh-voltdb-data-objects/#comments</comments>
		<pubDate>Wed, 20 Jun 2012 17:00:56 +0000</pubDate>
		<dc:creator>Andrew Wilson</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Real-time Analytics]]></category>
		<category><![CDATA[Building VoltDB Apps]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring Integration]]></category>

		<guid isPermaLink="false">http://newblog.voltdb.com/?p=95</guid>
		<description><![CDATA[<p>Mapping one type to another is a pretty common task. Hibernate and other ORM’s map a result from a data source’s native representation to an application specific representation. In English, I want to convert a JDBC result set, or data objects, into a collection of POJOs (plain old Java objects) using some kind of data mapping tool or API. Spring exposes a low level service provider interface that makes it very easy to convert one data type to another with either built-in converters or customer converters, allowing a developer to support just about any conversion one can think of. Today &#8230; <a href="http://blog.voltdb.com/using-spring-converter-api-voltdb-data-objectsh-voltdb-data-objects/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/using-spring-converter-api-voltdb-data-objectsh-voltdb-data-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To Flash or Not to Flash: That is the Question</title>
		<link>http://blog.voltdb.com/to-flash-or-not-to-flash-that-is-the-question/</link>
		<comments>http://blog.voltdb.com/to-flash-or-not-to-flash-that-is-the-question/#comments</comments>
		<pubDate>Tue, 12 Jun 2012 14:46:53 +0000</pubDate>
		<dc:creator>Mike Stonebraker</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[NewSQL]]></category>
		<category><![CDATA[Deployment Management]]></category>
		<category><![CDATA[Durability]]></category>
		<category><![CDATA[High Availability]]></category>

		<guid isPermaLink="false">http://newblog.voltdb.com/?p=80</guid>
		<description><![CDATA[<p>I am often asked about the value of flash memory in OLTP database applications.  This blog post discusses flash technology in this context.  First, I discuss the future of flash in general; then I turn to flash (and other future storage technologies) in the context of a main memory DBMS, such as <a href="http://www.voltdb.com/tao-volt/products-solutions.php" data-cke-saved-href="http://voltdb.com/products-services/products">VoltDB</a>.</p>
<h3>The Future of Flash</h3>
<p>Flash memory is clearly a “moving window”, since its price and performance are changing quickly.  Historically, flash could only be written a few thousand times, before it would “wear out” and have to be replaced.  This drawback seems to have been eliminated &#8230; <a href="http://blog.voltdb.com/to-flash-or-not-to-flash-that-is-the-question/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/to-flash-or-not-to-flash-that-is-the-question/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the Spring @Schedule Annotation</title>
		<link>http://blog.voltdb.com/using-spring-schedule-annotation/</link>
		<comments>http://blog.voltdb.com/using-spring-schedule-annotation/#comments</comments>
		<pubDate>Wed, 30 May 2012 14:43:27 +0000</pubDate>
		<dc:creator>Andrew Wilson</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Real-time Analytics]]></category>
		<category><![CDATA[Building VoltDB Apps]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring Integration]]></category>

		<guid isPermaLink="false">http://newblog.voltdb.com/?p=75</guid>
		<description><![CDATA[<p>In a previous life I had a requirement that a web application scanned the expiration date of purchased content and sent one of three emails letting the user know that the item would expire soon, was going to expire very soon and that the item has expired. It fired up at early in the morning when the server had the lowest utilization. Later, I had to write a similar feature that would run every couple of minutes. It wasn’t terribly hard to implement the logic, but the scheduler was an external component that required much more work to configure than &#8230; <a href="http://blog.voltdb.com/using-spring-schedule-annotation/" class="read_more">Read more</a></p>]]></description>
		<wfw:commentRss>http://blog.voltdb.com/using-spring-schedule-annotation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
