Sunday, June 10, 2012

NuoDB driver

I've tested these days NuoDB. It's a promising database server, for now in Beta, but there are some problems, that make NuoDB somehow more like a pre-alpha release. It's cool, it's cloud, it's nice and is something that we all want and need: SQL on the NoSQL market - the cloud.

GyroGears already generates code for NuoDB, but since is so unstable, I don't recommend deploying Gyro applications on NuoDB.

The driver low level API's are "pre-documented" here:
http://www.radgs.com/docs/help/standard.db.nuo.html

And the high level version:
http://www.radgs.com/docs/help/NuoConnection.html
http://www.radgs.com/docs/help/NuoDataSet.html

Also, I've optimized the strings and the arrays in Concept core. I've reduced the number of memory reallocations, resulting in faster indexing times. I've added a compile-time flag for using std::map instead of my key-value implementation.

std::map is faster than my implementation when adding more than 200,000 key-value pairs, but I'm faster on access. Also, std::map uses at least 1/3 more memory than my implementation, due to its list-style implementation. I use static vectors, that reallocate when needed. This reallocation is somehow slow, but overall, it performs better.

The string operator += was optimized, being up to 20 times faster now, due to a new memory allocation strategy.

In Gyro, besides NuoDB driver, I've fixed a bug with pagination, discovered in the new version of Concept Client.

No comments: