riak / www / dev.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta name="author" content="Basho Technologies" />
	<meta name="description" content="riak - a decentralized key value store - basho technologies" />
	<meta name="keywords" content="riak nosql decentralized distributed key value store" />
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<link rel="stylesheet" href="css/style.css" type="text/css" />
	<title>Riak - A document-oriented Web database</title>
</head>
<body>
	<div id="content">
		<h1><span class="hr"></span><a href="/">riak</a></h1>
		<ul id="top">
			<li><a href="/">Home</a></li>
			<li><a href="http://bitbucket.org/justin/riak/">Source Code</a></li>
                        <li><a href="edoc/index.html">API Docs</a></li>
			<li><a href="faq.html">FAQ</a></li>
			<li><a href="contact.html">Contact</a></li>
		</ul>
		
		<div id="intro">
			<p>Schema-free document databases are in many ways a more natural fit for Web applications than the traditional RDBMS.  With interfaces that are natural and convenient for rapid development, and a lack of object-relational mappers and other heavy middleware, applications can be both simpler and more powerful.</p>
		</div>
		<div id="left">
			
			<p>Building with Riak feels natural to the Web developer.  We didn't build Riak as a fun exercise in distributed systems, we built it for two reasons: to <a href="ops.html">reduce operational expense</a> and to build Web applications in an environment of quick delivery despite rapidly changing business needs.</p>

			<p>Many applications are built using "object-relational mappers" which effectively turn a rich query interface (such as SQL) into a much simpler data persistence model.  Since Riak is at its heart a key/value store there is no need to add heavy middleware just to perform simple actions such as storage and retrieval of application data.</p>

			<p>That simple interface doesn't mean that you can't express complex queries over your data in Riak.  We provide a variant of the <a href="mapreduce.html">map/reduce programming model</a> that is very well suited to data analysis on a decentralized document database like Riak.</p>

			<p>This model also lends itself very well to linked data, the engine of discovery and growth of applications on the Web.  The map/reduce model was popularized by Google as a result of their use on very large sets of linked data, and we have found that applications structured in terms of links (as opposed to less flexible relations) are very easy to develop without losing your grasp on your data model.</p>

			<p>The loose schemas of a document database like Riak are a great boon to rapid development.  In a traditional static-schema RDBMS, changes to data models are traumatic events, often requiring long downtime to convert tables to the new schema.  In Riak, you simply add fields to your documents as needed by the changing demands of your application.<br />
(And if you were using an ORM, just what was that schema buying you anyway?)
</p>

			<p>Riak's primary programming interface is JSON over (RESTful) HTTP, which is as close as you can come these days to a universal language and protocol for data exchange.  If you can process JSON and issue an HTTP request, you can easily use Riak.</p>

			<br />
			
			
		</div>
		<div id="right">
			<h3>quick links for developers</h3>
			<ul>
				<li><a href="programming.html">HTTP interface and libraries</a></li>
				<li><a href="mapreduce.html">map/reduce in riak</a></li>
			</ul>

			
		</div>


		<div id="footer">

		</div>
	</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-10051263-1");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.