<?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"
	>

<channel>
<title>Scalien | Blog</title>
<atom:link href="http://blog.scalien.com/feed.xml" rel="self" type="application/rss+xml" />
<link>http://blog.scalien.com</link>
<description>The Scalien blog about Keyspace and other distributed systems</description>
<language>en</language>
<item>
<title>Keyspace 1.5 - Recommended for Production Usage</title>
<link>http://blog.scalien.com//2010/03/09/keyspace-1.5-recommended-for-production-usage</link>
<guid isPermaLink='false'>http://bytepawn.com//2010/03/09/keyspace-1.5-recommended-for-production-usage</guid>
<pubDate>Tue, 09 Mar 2010 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
Great news: we are releasing Keyspace 1.5, the most stable and feature complete version of Keyspace to date. We are very excited as we have reached a point where all issues related to replication and catch-up have been resolved, this version is suitable for general production deployment! Keyspace 1.5 has seen tons of testing on our dedicated test cluster, and it has performed like a charm.
</p><p>
<a href="http://scalien.com/downloads">Download 1.5 here.</a>
</p><p>
For the end-user, the only visible change is the removal of the <i>submit</i> parameter from the commands (such as <i>keyspace_client_set()</i>), since this can be derived from the use of <i>keyspace_client_begin()</i> before the commands are issued in batch.
</p><p>
More good news: we have starting wrapping the C/C++ client library, which itself has reached a very stable state, using <a href="http://www.swig.org">SWIG, the Simplified Wrapper and Interface Generator</a>. We are planning to release fully featured Python, PHP, Java libraries next week. In parallel, we are finally going to write up proper manuals starting today.
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace 1.4.1</title>
<link>http://blog.scalien.com//2010/02/17/keyspace-1.4.1</link>
<guid isPermaLink='false'>http://bytepawn.com//2010/02/17/keyspace-1.4.1</guid>
<pubDate>Wed, 17 Feb 2010 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
We are releasing Keyspace 1.4.1, a bugfix release, mostly fixing TCP speed issues we were having. It turns out our client protocol was "interfering" with Nagle's algorithm and causing performance problems on some platforms. Also, under Windows we ran into a Windows bug, where if you filled up the socket buffers Windows would use delayed ACKs, which again caused performance issues.
</p><p>
<a href="http://scalien.com/downloads">Download 1.4.1 here.</a>
</p><p>
Here are some performance numbers from a n=3 node Keyspace setup on Windows over a 100Mbit LAN:
</p><p>
VALUE LENGTH = 100 bytes long<br/>
batch set: 30487 tx/sec<br/>
single set: 1777 tx/sec<br/>
batch get: 45662 tx/sec<br/>
single get: 6734 tx/sec<br/>
</p><p>
VALUE LENGTH = 1000 bytes long<br/>
batch set: 2443 tx/sec<br/>
single set: 845 tx/sec<br/>
batch get: 8888 tx/sec<br/>
single get: 3137 tx/sec<br/>
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace 1.4 Released - Major improvements</title>
<link>http://blog.scalien.com//2010-02-12/keyspace-1.4-released-major-improvements</link>
<guid isPermaLink='false'>http://bytepawn.com//2010-02-12/keyspace-1.4-released-major-improvements</guid>
<pubDate>Fri, 12 Feb 2010 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
We released <a href="http://scalien.com/downloads">Keyspace 1.4</a>, which fixes a <i>lot of</i> issues/bugs both in the server and the C/C++ client libraries.
</p><p>
Notable changes in the server:
<ul>
<li>Improved stability on Windows<li>
<li>PaxosLease now uses TCP instead of UDP, in an effort to make master leases last longer</li>
<li>Servers now explicitly store 100.000 Paxos rounds in their local DB to help lagging nodes, in effect eliminating the need for our previous truncation hack, at the expense of disk space</li>
<li>More info printed in HTTP hello message</li>
<li>7 seconds sleep() on startup uses a timer instead of a blocking sleep, making the server responsive during the time</li>
<li>Max. value size decreased to 100K</li>
<li>Configuration files have not changed</li>
<li>Much more...</li>
</ul>
Note: Some metadata stored in the database changed, so make sure all your nodes are in sync before switching to 1.4.
</p><p>
Notable changes in the C/C++ client library:
<ul>
<li>We rewrote much of the client library</li>
<li>It now handles failovers in the nodes, without the application having to call the library again</li>
<li>Application can specify global and master timeouts:</li>
<li>Global timeout: the client library will return no matter what within this time</li>
<li>Master timeout: the client library will return if the master is lost and no new master is found within this time</li>
<li>Failure conditions can be queried from the client library: transport status, connectivity status, timeout status and command status</li>
<li>Much much more...</li>
</ul>
</p><p>
We are planning to write up proper documentation on the new client library next week, stay tuned!
</p><p>
A number of people have requested we go on github - thanks for the suggestions - we're discussing it with Attila.
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace 1.3.1 with minor fixes</title>
<link>http://blog.scalien.com//2010-01-25/keyspace-1.3.1-with-minor-fixes</link>
<guid isPermaLink='false'>http://bytepawn.com//2010-01-25/keyspace-1.3.1-with-minor-fixes</guid>
<pubDate>Mon, 25 Jan 2010 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
This is a maintenance releasing fixing some minor bugs:
<ol>
<li>now domain names as well as IP addresses can be specified in paxos.endpoints</li>
<li>the client config erronously referred to paxos.endpoints, which was in reality keyspace.endpoints (port numbers of keyspace protocol)</li>
<li>Linux build was broken</li>
</ol>
</p><p>
<a href="http://scalien.com/downloads">Download 1.3.1 here</a>.
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace 1.3 release - stable Windows port</title>
<link>http://blog.scalien.com//2010-01-18/keyspace-1.3.0-release-stable-windows-port</link>
<guid isPermaLink='false'>http://bytepawn.com//2010-01-18/keyspace-1.3.0-release-stable-windows-port</guid>
<pubDate>Mon, 18 Jan 2010 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
We are releasing Keyspace 1.3, the major addition is a stable Windows port (supports XP, Vista, Seven, Server 2003 and 2008) and includes some minor bugfixes.
</p><p>
<a href="http://scalien.com/downloads">Click here to download Keyspace 1.3</a>. 
</p><p>
<img style="margin-left: 50px;" src="/images/windows_logo.jpg" width="174" />
</p><p>
For this port we had to port our (readyness notification) event based, networking subsystem to Windows' <a href="http://msdn.microsoft.com/en-us/library/aa365198%28VS.85%29.aspx">Completion Ports API</a>, which was more challenging than we expected as the intended use for the API is asynchronous I/O, which is slightly different than our model. After lots of coding and one all-nighter we prevailed! I'll share more details in a later post.
</p><p>
The next big step is getting rid of BerkeleyDB. Coding is already on its way and I'll post some details about our storage engine architecture soon (currently codenamed Blocksmith).
</p><p>
Back to work.
</p><p>
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace Windows Beta</title>
<link>http://blog.scalien.com//2010/01/08/keyspace-windows-beta</link>
<guid isPermaLink='false'>http://bytepawn.com//2010/01/08/keyspace-windows-beta</guid>
<pubDate>Fri, 08 Jan 2010 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
As promised, we are releasing the beta Windows port of Keyspace this week.
</p><p>
<a href="http://scalien.com/releases/keyspace/keyspace-win-beta.zip">Click here to download the Keyspace Windows beta</a>.
</p><p>
This is a non-versioned beta release, which will be followed by a regular 1.3 release next week after we have done some more testing on <a href="http://aws.amazon.com/">Amazon</a>.
</p><p>
The release includes Visual Studio C++ 2008 Express Edition project files so Windows developers can get straight to work. Also included are the necessary BerkeleyDB include and lib files ('include' and 'lib' folders, respectively). The 'bin' folder contains statically linked binaries in case somebody wants to test it out without compiling. If it doesn't run, you may have to install the appropriate <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en">Visual Studio redistributables</a>, which I put in the 'redist' folder for your convenience.
</p><p>
Technically, the Windows port uses the <a href="http://msdn.microsoft.com/en-us/library/aa365198%28VS.85%29.aspx">Completion Ports API</a> to achieve high-performance network I/O. Thanks to our layered architecture (for platform-independence) we didn't have to modify application logic at all. Based on preliminary testing the performance numbers should be equivalent to the ones in our <a href="http://scalien.com/whitepapers">whitepapers</a>.
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace Licensing</title>
<link>http://blog.scalien.com//2009/12/14/keyspace-licensing</link>
<guid isPermaLink='false'>http://bytepawn.com//2009/12/14/keyspace-licensing</guid>
<pubDate>Mon, 14 Dec 2009 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
Over the last months, we have learned more and more about software licensing relevant to Keyspace. We have finally arrived at what we believe is the a good solution for Keyspace and Scalien.
</p><p>
From now on, the Keyspace server and all C/C++ code including the C/C++ libraries are licensed under the <b>Affero GPL</b>, as they were originally. The Python and PHP libraries are licensed under the <b>BSD</b>, allowing you to use them freely with your application as you wish. The 1.2.0 version, which was licensed under the BSD license, has been removed from the site to avoid confusion and protect the Keyspace source code.
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace 1.2 Release</title>
<link>http://blog.scalien.com//2009/10/01/keyspace-1.2-release</link>
<guid isPermaLink='false'>http://bytepawn.com//2009/10/01/keyspace-1.2-release</guid>
<pubDate>Thu, 01 Oct 2009 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
We are releasing version 1.2 of <a href="http://scalien.com/keyspace">Keyspace</a>, our consistently replicated key-value store. The major news is the <b>release of Python and PHP client libraries</b>. Here's the full list of changes.
</p><p>
<ol>
<li>Added Python and PHP client libraries; this means we have C, Python and PHP covered.</li>
<li>Added HTTP JSON API; For example, <span class="code">http://localhost:8080/json/listkeys?/test</span> returns the following JSON object: <span class="code">{"/test":["/test/i:0","/test/i:1","/test/i:2"]}</span>.</li>
<li>Fixed some bugs in server code.</li>
<li>Fixed some bugs in Python code.</li>
<li>Removed deprecated latency command.</li>
</ol>
</p><p>
<a href="http://scalien.com/downloads">Download 1.2 here.</a>
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace 1.1 Release</title>
<link>http://blog.scalien.com//2009/09/09/keyspace-1.1-release</link>
<guid isPermaLink='false'>http://bytepawn.com//2009/09/09/keyspace-1.1-release</guid>
<pubDate>Wed, 09 Sep 2009 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
We are releasing version 1.1 of <a href="http://scalien.com/keyspace">Keyspace</a>, our consistently replicated key-value store, a major improvement over 1.0.x.
</p><p>
<ol>
<li>New PaxosLease algorithm does not require clock synchronization.</li>
<li>Added COUNT and DIRTYCOUNT commands.</li>
<li>Added /html/ part to HTTP interface, which pretty prints the list output.</li>
<li>Added possibility to reverse list direction.</li>
<li>The http://server:port/ welcome page prints the version number and master information.</li>
<li>Added database.numReaders config option.</li>
</ol>
</p><p>
<a href="http://scalien.com/downloads">Download 1.1 here</a>.
</p><p>
The most important is: <b>Keyspace no longer requires clock synchrony!</b>
This should make Keyspace as a distributed database much more attractive to new users.
The new PaxosLease algorithm is described in the
<a href="http://scalien.com/whitepapers/">PaxosLease whitepaper</a>.
</p><p>
In other news, <a href="http://hnwatch.scalien.com">Hacker News Watch</a> runs on Keyspace.
</p><p>
</p><p>
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace 1.0.1 Hotfix Release</title>
<link>http://blog.scalien.com//2009/07/17/keyspace-1.0.1-hotfix-release</link>
<guid isPermaLink='false'>http://bytepawn.com//2009/07/17/keyspace-1.0.1-hotfix-release</guid>
<pubDate>Fri, 17 Jul 2009 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
We are releasing 1.0.1 today, which fixes some minor issues users experienced.
</p><p>
<ol>
<li>Keyspace would not start without a config file in default mode. Resolution: fixed.</li>
<li>Keyspace printed a non-informative error message when a directory 'keyspace' was present and it tried to create the database file 'keyspace'. Resolution: More informative error message.</li>
<li>Some Linux optimizations were accidentally removed in the 1.0 release. Resolution: added to 1.0.1</li>
</ol>
</p><p>
<a href="http://scalien.com/downloads">Download 1.0.1 here</a>.
</p>]]></content:encoded>
</item>
<item>
<title>Keyspace 1.0 Beta Release</title>
<link>http://blog.scalien.com//2009/07/15/keyspace-1.0-beta-release</link>
<guid isPermaLink='false'>http://bytepawn.com//2009/07/15/keyspace-1.0-beta-release</guid>
<pubDate>Wed, 15 Jul 2009 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
Today <a href="http://scalien.com">we are</a> releasing the <a href="http://scalien.com/keyspace">Keyspace 1.0 Beta</a>. Keyspace is a consistently replicated, highly-available fault-tolerant key-value store. A pictorial explanation <a href="http://scalien.com/keyspace">can be found here</a>.
</p><p>
The relevant links are:
<ul>
<li><a href="http://scalien.com/keyspace">Keyspace features at a glance</a></li>
<li><a href="http://scalien.com/documentation">Documentation</a></li>
<li><a href="http://scalien.com/whitepapers">Whitepapers</a></li>
<li><a href="http://scalien.com/downloads">Downloads</a></li>
<li><a href="http://scalien.com/license">License</a></li>
<li><a href="http://scalien.com/help">Help</a></li>
<li><a href="http://scalien.com/faq">FAQ</a></li>
</ul>
</p><p>
In a few words, <strong>consistent replication</strong> means it's <em>not eventually consistent</em>, it's <em>always consistent</em> or always in-sync. When the server acknowledges an operation, then you can be certain that it has hit the disk on a majority of the nodes and you will never see a state not reflecting that write.
</p><p>
Since Keyspace is replicated, the database is <strong>highly-available and fault-tolerant</strong>. A minority of nodes can fail without the overall database service being affected. This is of course the main feature of any replicated data store: if the cleaning crew accidentally pulls the plug on one of your servers or a disk fails, then your system keeps going without service outage.
</p><p>
Keyspace is a <strong>high-performance</strong>, asynchronous, event-driven C/C++ UNIX server. Even with n=3 replication we can handle 100.000 writes a second on fast Linux PCs with SCSI disks. This is an order of magnitude faster than naive key-value store implementations in Java, Erlang or Python. <a href="http://scalien.com/whitepapers">See the whitepaper for more.</a>
</p><p>
With Keyspace, you have a sensible <strong>upgrade path</strong>. You can use Keyspace in single-server mode, in which case it's reduced to a TCP wrapper around Berkeley DB. Later, you can reconfigure it to use replication. Keyspace has its own TCP protocol, which is used by the client libraries, and a built-in HTTP server and HTTP protocol so you can issue <span class="code">http://localhost/set?key,value</span> type requests using your browser for testing. <a href="http://svn.scalien.com/keyspace/trunk/API">More about the API.</a>
</p><p>
<a href="http://scalien.com/downloads">You can download</a> source code and compile Keyspace or use the Debian package for quick installation and <span class="code">/etc/init.d/</span> sweetness. Included are the usual help files, client libraries and some sample code. Keyspace is distributed under the <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">Affero GPL license (AGPL)</a>.
</p><p>
What's missing in this release? Currently, our C/C++ client library is production quality. We are finishing up PHP, Python, Java and .NET libraries, the exact order is a function of <a href="http://scalien.com/help">user requests</a>.
</p><p>
This is a beta release, where one of the goals is to gauge user interest. If you find Keyspace interesting or useful, please <a href="http://scalien.com/help">drop us a line</a>.
</p>]]></content:encoded>
</item>
<item>
<title>Scaliens! Scaliens! Scaliens!</title>
<link>http://blog.scalien.com//2009/06/02/scaliens-scaliens-scaliens</link>
<guid isPermaLink='false'>http://bytepawn.com//2009/06/02/scaliens-scaliens-scaliens</guid>
<pubDate>Tue, 02 Jun 2009 00:00:00 +0000</pubDate>
<dc:creator><a href="http://blog.scalien.com/ecard/mtrencseni">Marton Trencseni</a></dc:creator>
<content:encoded><![CDATA[<p>
Welcome to the Scalien Blog!
</p><p>
<a href="http://scalien.com">Scalien</a> was formalized as an LLC in Janurary of 2009 by <a href="/ecard/mtrencseni">Marton Trencseni</a> and <a href="/ecard/agazso">Attila Gazso</a>. Our goal is to create a distributed stack of open-source components, enabling developers to create scalable, highly-available applications able to meet their customer's expectations. Our products fit in with the 'cloud computing' paradigm, although we're not looking to become cloud providers. More precisely, sites looking to become cloud providers in the future will be looking for basic distributed software such as databases and filesystems to run their own infrastructure on.
</p><p>
<center>
<img src="http://scalien.com/images/egg.jpg" />
<img src="http://scalien.com/images/egg.jpg" />
<img src="http://scalien.com/images/egg.jpg" />
</center>
</p><p>
Over the last 6 months, we've been busy with the basic building block of our distributed stack, a replicated, highly-available key-value store called <a href="http://scalien.com">Keyspace</a>. Keyspace has similarities to <a href="http://labs.google.com/papers/chubby.html">Google's Chubby</a> server, the most important being that both use Leslie Lamport's Paxos distributed consensus algorithm as the basic primitive. The first public beta of Keyspace is available for download under the <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">Affero GPL license (AGPL)</a>. To the best of our knowledge, Keyspace is the only  consistently replicated (Paxos-based) high-performance key-value store on the market.
</p><p>
Once the dust settles, we will begin to implement the second layer of our stack, which will add the essential property of scalability (in Keyspace, all nodes store the same data). This product will most likely be called Keyscale, and will also be licensed under the AGPL. We hope to have an early version of Keyscale finished at the end of 2009, or early 2010. Then, we'll get back to our original idea, and use these technologies to create a useful, general-purpose distributed filesystem.
</p><p>
Back to work.
</p>]]></content:encoded>
</item>
</channel>
</rss>
