Database provider Cloudant Inc. created the highly available, fault-tolerant, clustered version of CouchDB, called BigCouch-which is now available on Windows Azure. Tests at eWEEK Labs show that the new offering is on par with Cloudant’s data layer service that is hosted on Softlayer and other cloud providers.
Overall, users will find very little performance difference, thus, making the decision to use the distributed NoSQL database service on Windows Azure a matter of price and developer skill sets.
Cloudant’s Data Layer comes into play when developing cloud-based apps. It’s common to spin up applications on different hosting providers, such as Rackspace or Amazon. The same applies to the database in order to take advantage of a provider who specializes in a particular type of database and handles features, such as replication and distribution, that the organization would otherwise have to handle itself.
Cloudant is one such database provider. By hooking the organization’s applications into Cloudant’s Data Layer, application managers don’t have to worry about managing a distributed CouchDB. Instead, Cloudant handles the administration, while your developers write code, which can then store and read documents in Cloudant’s databases. The service is provided on a pay-as-you-go metered plan.
Cloudant released the Azure version of their hosted CouchDB databases in June.
To test the Azure offering, I started by hosting our tests on the Amazon Web Services (AWS) East Coast data center; then, I moved our data to the Azure hosting to see how it compares. In terms of functionality and programmer usage, I found no difference in the Azure hosting compared with the other hosting service. In either case, you get what appears conceptually as a CouchDB database (but is, in fact, Cloudant’s own distributed version of CouchDB). To use it in your software, you make use of existing CouchDB drivers.
In my tests, my goal was to find out two things: First, does the Azure Cloudant hosting work the same way as with the other Cloudant hosting services; second, how does the speed compare with that of the others? In general, the idea behind Cloudant is that they provide the data layer to your Web-based application.
That means you might have your application hosted on one server and your database would be hosted and managed by Cloudant. So, for example, even though you use Azure for your Cloudant hosting, that doesn’t mean you necessarily have to use Azure for your application hosting (but you can).
My choice for development platform was Node.js and the Cloud9 integrated development environment (IDE). I started out by building the application locally on my own machine, against a local installation of CouchDB. Then I moved the application to one of my own servers on Rackspace, after which I pushed the CouchDB databases up to the Cloudant servers, which were hosted by AWS. Then, after running the tests, I moved my database over to the Azure hosting.
For the first tests, running with the app on Rackspace and the Cloudant database on the AWS servers, I initially pulled down 132 small documents out of my database and they came across in 276 milliseconds. The 1,100 rows of data came down in 569 milliseconds. A total of 7,132 records came down in 1.45 seconds. Is that fast? The download of 276 records was certainly fast.
But the amount of data actually moving from their computer to my computer, even for the 7,132 records, was actually pretty small and probably took about the same amount of time, whether 276 records or 7,132 records.
Any delay after that would actually have been caused by the fact that I didn’t set up any indexes, or do any additional configuring of my database. I just pulled down all the records. The time I saw was about the same as it was running against my local CouchDB installation. In other words, there was almost no performance hit whatsoever running against Cloudant versus a local installation.
Next, I pushed everything over to Azure. What’s interesting is that from a programming perspective, there’s no difference: The database is just hosted someplace else. I didn’t have to change anything in my code other than the domain name of my database. The database is still CouchDB as far as my app was concerned, even though it’s on Azure now.
Running the same tests against the Azure installation, the times were a bit slower with the delay likely caused by differences in proximity to the data centers. But these were still fast response times. Pulling down 132 small documents took 530 milliseconds.