Scalien is a startup developing open-source, cutting-edge distributed systems.
Go to scalien.com
- Keyspace 1.7.1: fixes memleak issue in all client libs - by Marton Trencseni on 2010/06/18
Thanks for Phil White for reporting a memleak in the client libs. We fixed it and are releasing 1.7.1 as a hotfix.
- Keyspace 1.7: new HTTP API, C# client libs - by Marton Trencseni on 2010/06/17
Keyspace 1.7.0 is out the door. Changes include:
- New HTTP API: the old comma-separated parameter list is gone, instead you specify named parameters like:
http://localhost:8080/set?key=name&value=mtrencseni
Check out the updated HTTP API docs for more details.
- New C# client libs. I haven't written up API docs for it yet, will get to it soon. The Windows package now includes a bin/csharp folder with two files: keyspace_client.dll and KeyspaceClient.dll. In your C# project, add KeyspaceClient.dll as a reference and make sure keyspace_client.dll is in your project's working directory.
- fixed a bug in SingleKeyspace where commands were not OK'd until a SUBMIT was submitted by the client.
Back to work on our secret new scalable database project.
- New HTTP API: the old comma-separated parameter list is gone, instead you specify named parameters like:
- Catching up with Keyspace - by Marton Trencseni on 2010/05/10
What happens when a node is lagging behind the others? For example, suppose we have a n=3 cluster, with node 1 and 2 in replication round 50.000, but node 3 is back at round 1.000.
There are two ways for a lagging node to do catch-up in Keyspace.
- Keyspace 1.6.2 now featuring ASCII Art - by Marton Trencseni on 2010/05/05
Today we're releasing Keyspace 1.6.2. Get the package from our downloads section or directly from the github repository.
One the one hand, 1.6.2 includes a number of important bugfixes. It turns out BerkeleyDB will throw DB_PAGE_NOTFOUND errors if you have highly concurrent deletes and gets with DB_READ_UNCOMMITTED turned on, which is how we use BDB in Keyspace.
On the other hand, this release finally includes the official SWIG based Perl client, which a number of people have used for. I'll write up the docs for Perl in a few days. For now, build it with make perllib and check in bin/perl.
At last, the funkiest addition: the keyspace-config shell script, which will create your Keyspace config files for you --- with ASCII Art to cheer you up! Here's a sample session:
- Keyspace on Github - by Marton Trencseni on 2010/04/14
We created a Github repo for Keyspace, pull a local copy using:
git clone http://github.com/scalien/keyspace.git
The SVN migration went smoothly with github preserving the versions history, which is impressive. So far we're very happy with both git and github.
- Keyspace 1.6.1: Java, PHP and Ruby libraries - by Marton Trencseni on 2010-04-01
Great news, we're releasing Keyspace 1.6.1. The server binary has not changed other than the version number bump, but the package now includes client libraries for Java, PHP and Ruby. In specifying the client interfaces we tried to adhere to the local customs of the language. If you have any comments, suggestions or bug reports, please do so on the Keyspace Google Groups.
Installation and programming are covered in the appropriate parts of the documentation:
Coming up: support for .NET, possibly a Windows friendly C++ version of the client libraries.
- Keyspace Roadmap - by Marton Trencseni on 2010-03-31
As Jon Stephens pointed out on the Keyspace Google Group, it's time for us to write a Keyspace roadmap.
First, where is Scalien, the company behind Keyspace heading?
Scalien was founded in 2009 January by Attila and myself, and we're still a 2-man operation. We are currently in the process of turning Keyspace into a product. This is a long and bumpy road and we're nowhere near the end. We're working with a handful or partners and potential partners identifying the use-cases where Keyspace (or something Keyspace-based) makes sense. We also have a number of other projects, for example Mediafilter is a hungarian social media monitoring service, also in the process of productization.
Scalien is currently not making a profit, we're bootstrapping with out own money and projects. Things are looking up, it looks like we will be small-bussiness-profitable by the end of 2010. Scalien has no venture capital, nor am I planning to pursue this until we have a clear product strategy with a few sales to show for Keyspace.
As a final note, recently a company called WANdisco started followning the Scalien user on Twitter. It turns out WANDisco is a company selling Paxos-based SVN and CVS replication, they've been at it since 5+ years and they seem fairly successful. I've checked out their product, it looks great. Replicating SVN has occured to me in the past, I've even sent our a project proposal about it a year ago to a company I worked for that uses SVN and suffers from downtimes (I didn't know about WANdisco then). We're not going to compete with WANdisco, but they're a good use-case showing that Paxos-based replication can be turned into a product.
- Keyspace 1.6, Python libs, new docs - by Marton Trencseni on 2010/03/24
Today we're releasing version 1.6 of Keyspace.
The major news is that we started using SWIG (Simplified Wrapper and Interface Generator) to wrap our fully-featured C client library for different languages. With 1.6, we're releasing the Python client library, check it out! Next up is Java.
There's new documentation at http://scalien.com/documentation, and includes sections on installing, configuring and running Keyspace, and explains both the C and the Python client API.
Before 1.6 the safe script was neccesary as it deleted the BerkeleyDB file in some catchup scenarios. This has been moved to the executable, so the safe script is no longer neccesary! For more about catchup, see the Understanding Keyspace section of the docs.
We also changed around the configuration file to make more sense. You now have to specify mode = single or mode = replicated, and only have to specify paxos.endpoints in mode = replicated. Please check the Configuration section of the docs for more.
We also changed some default values of the configuration, such as database.pageSize, database.cacheSize and database.logBufferSize. See the Tuning section of the docs for more.
- Keyspace 1.5 - Recommended for Production Usage - by Marton Trencseni on 2010/03/09
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.
For the end-user, the only visible change is the removal of the submit parameter from the commands (such as keyspace_client_set()), since this can be derived from the use of keyspace_client_begin() before the commands are issued in batch.
More good news: we have starting wrapping the C/C++ client library, which itself has reached a very stable state, using SWIG, the Simplified Wrapper and Interface Generator. 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.
- Keyspace 1.4.1 - by Marton Trencseni on 2010/02/17
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.
Here are some performance numbers from a n=3 node Keyspace setup on Windows over a 100Mbit LAN:
VALUE LENGTH = 100 bytes long
batch set: 30487 tx/sec
single set: 1777 tx/sec
batch get: 45662 tx/sec
single get: 6734 tx/sec
VALUE LENGTH = 1000 bytes long
batch set: 2443 tx/sec
single set: 845 tx/sec
batch get: 8888 tx/sec
single get: 3137 tx/sec - Keyspace 1.4 Released - Major improvements - by Marton Trencseni on 2010-02-12
We released Keyspace 1.4, which fixes a lot of issues/bugs both in the server and the C/C++ client libraries.
- Keyspace 1.3.1 with minor fixes - by Marton Trencseni on 2010-01-25
This is a maintenance releasing fixing some minor bugs:
- now domain names as well as IP addresses can be specified in paxos.endpoints
- the client config erronously referred to paxos.endpoints, which was in reality keyspace.endpoints (port numbers of keyspace protocol)
- Linux build was broken
- Keyspace 1.3 release - stable Windows port - by Marton Trencseni on 2010-01-18
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.
Click here to download Keyspace 1.3.
For this port we had to port our (readyness notification) event based, networking subsystem to Windows' Completion Ports API, 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.
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).
Back to work.
- Keyspace Windows Beta - by Marton Trencseni on 2010/01/08
As promised, we are releasing the beta Windows port of Keyspace this week.
Click here to download the Keyspace Windows beta.
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 Amazon.
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 Visual Studio redistributables, which I put in the 'redist' folder for your convenience.
Technically, the Windows port uses the Completion Ports API 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 whitepapers.
- Keyspace Licensing - by Marton Trencseni on 2009/12/14
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.
From now on, the Keyspace server and all C/C++ code including the C/C++ libraries are licensed under the Affero GPL, as they were originally. The Python and PHP libraries are licensed under the BSD, 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.
- Keyspace 1.2 Release - by Marton Trencseni on 2009/10/01
We are releasing version 1.2 of Keyspace, our consistently replicated key-value store. The major news is the release of Python and PHP client libraries. Here's the full list of changes.
- Added Python and PHP client libraries; this means we have C, Python and PHP covered.
- Added HTTP JSON API; For example, http://localhost:8080/json/listkeys?/test returns the following JSON object: {"/test":["/test/i:0","/test/i:1","/test/i:2"]}.
- Fixed some bugs in server code.
- Fixed some bugs in Python code.
- Removed deprecated latency command.
- Keyspace 1.1 Release - by Marton Trencseni on 2009/09/09
We are releasing version 1.1 of Keyspace, our consistently replicated key-value store, a major improvement over 1.0.x.
- New PaxosLease algorithm does not require clock synchronization.
- Added COUNT and DIRTYCOUNT commands.
- Added /html/ part to HTTP interface, which pretty prints the list output.
- Added possibility to reverse list direction.
- The http://server:port/ welcome page prints the version number and master information.
- Added database.numReaders config option.
The most important is: Keyspace no longer requires clock synchrony! This should make Keyspace as a distributed database much more attractive to new users. The new PaxosLease algorithm is described in the PaxosLease whitepaper.
In other news, Hacker News Watch runs on Keyspace.
- Keyspace 1.0.1 Hotfix Release - by Marton Trencseni on 2009/07/17
We are releasing 1.0.1 today, which fixes some minor issues users experienced.
- Keyspace would not start without a config file in default mode. Resolution: fixed.
- 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.
- Some Linux optimizations were accidentally removed in the 1.0 release. Resolution: added to 1.0.1
- Keyspace 1.0 Beta Release - by Marton Trencseni on 2009/07/15
Today we are releasing the Keyspace 1.0 Beta. Keyspace is a consistently replicated, highly-available fault-tolerant key-value store. A pictorial explanation can be found here.
- Scaliens! Scaliens! Scaliens! - by Marton Trencseni on 2009/06/02
Welcome to the Scalien Blog!
Scalien was formalized as an LLC in Janurary of 2009 by Marton Trencseni and Attila Gazso. 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.

