I finally got some time to play around with the beta 7 release of NuoDB that I downloaded a few weeks ago. Personally I don’t think NuoDB yet gives downloaders enough information on how to get started so I decided to tackle that here myself.
Before I get into the details, why bother? Who will benefit from this beta?
IMHO, if you are working on developing a web-scale app that will require the supporting database to scale a lot, both out and in, then you should try this software. In working with the NuoDB team, I haven’t had any issues pushing my test up to 50 nodes. NuoDB has said that they will be offering even greater elastic scaling out/in in future releases. If they do, then this software is going to be the answer for many next-generation SQL apps.
Second, developers who need to migrate an existing app onto the cloud will also benefit from NuoDB. Let me state the fact that NuoDB is a cloud database that’s fully SQL compliant and offers the ACID guarantees we all have come to expect from a transactional database. I haven’t tried migrating a SQL application myself but I’ve heard from a couple of other beta users who have and they didn’t have issues. They indicated it was pretty easy. It really depends on how many vendor-specific SQL extensions you have used.
OK, now that you know you are, or aren’t, someone who could benefit, where to start?
NuoDB seems to be doing a new beta every 4-5 weeks before they release the product later this year; so it may be that beta 8 is due out shortly. Whatever the version, you can find the latest release here. You will need to fill out a short form but approval is automatic.
Installation is as simple as it gets. For Windows, you can download an EXE install. MacOS is a tarball. For Linux platforms, it is a rpm or deb file or a tarball. Make sure you have at least Java JRE 1.6 installed. Then add the <NuoDB>/bin directory to your system PATH.
The peer-to-peer, asynchronous nature of NuoDB lends itself to a configuration that is a little bit different from what you are used to with SQL Server or other “client/server” databases. You provision your system by defining a NuoDB domain – a group of servers that can host NuoDB engine processes (they also call these nodes!) – by running an instance of a Java process called “NuoAgent” on each host. At least one of these “agents” must be run in ”broker mode”. A broker is the initial connection point for any application client. It helps establish direct connections between the clients and Transaction Engines in the domain.
This brings me to the beauty of this database. NuoDB separates transaction processing from storage by defining two types of database engine processes – the Transaction Engine and the Storage Manager. If your app requires more throughput from the database, just add another Transaction Engine. If you want durability of your data, add another Storage Manager. Each Storage Manager maintains (and keeps in sync) an entire copy of your database.
A minimal system requires at least one NuoDB broker to define a domain. Start a broker like so:
$ java –jar nuoagent.jar –broker –domain mydomain –password domain_pwd
NuoDB has a nice management GUI called NuoDB Console. It lets you tap into NuoDB domains and start up (and manage) engine processes. A collection of these processes is called a “chorus”. Effectively, a chorus is a database.
Upon starting the Console for the first time, it will ask you which domain you want manage. In our example, that would be ‘mydomain’. Select the domain and then “add process”. Step through the wizard to define and start a Storage Manager. It is here that you will define a chorus (database) name. Run the wizard again to create a Transaction Engine in the same chorus. That’s it! You have a minimal database up and running.
Action Items:
- Download and try out NuoDB
- Leave a comment with your experiment
Reference: Pinal Dave (https://blog.sqlauthority.com)
11 Comments. Leave new
Thanks for the heads up…well explained!!! amazing concept of transaction engine and storage manager..i am now going to forward this to our developers and DBA team.. for sure we are going to give it a try
Hey Pinal, great timing on starting your series. I will in fact be having someone present on nuodb in coming weeks on the Online ColdFusion Meetup (coldfusionmeetup.com). Hope to perhaps join you in spreading the good news on nuodb, for those who would benefit from it. Keep up the great work, as always.
Hi Mr. Pinaldave,
When I run the first command, I got an error.
$ java –jar nuoagent.jar –broker –domain mydomain –password domain_pwd
=> Failed to startup: Address already in use: JVM_Bind
Can you show me how to change the port jvm in nuodb?
Thanks a lot.
Try to look if its already running in the background.
So I looked on the NuoDB website and on their home page they say, WRT database connection support: “ODBC, JDBC, JRuby ActiveRecord, basic PhP, and Hibernate drivers”. Does this mean that .NET applications cannot connect via anything more direct than ODBC? It seems as if that would be pretty inefficient… Or am I missing something WRT .NET connectivity?
@warren: that’s correct.. I hope they’ll release a native .net driver. Not really an option for us until they do..
Warren – In case you have not noticed – ODBC is the way to go protocol to if it can be natively accessed or via oledb for odbc provider. SQL server took that route with native client.
https://blogs.msdn.microsoft.com/sqlnativeclient/2011/08/29/microsoft-is-aligning-with-odbc-for-native-relational-data-access/ –
ODBC is supported for .Net always.
Good news on .NET connectivity – I actually talked to a NuoDB person and he said that they are in fact working on native .NET connectivity; might be a bit to wait but it sounds like it is on their radar.
OK. I have been reading a lot about NuoDB and have even installed it on 2 evaluation servers. I must not have drunk the cool-aid yet, because while I see all of the great press releases and DBA’s saying it is THE way to have an elastically scaleable, ACID database, I find that the product is just not ready for general consumption in a large corporate environment. The documentation is minimal at best and by looking at the list of their recent bug fixes, I would be very reluctant to implement any mission critical systems on this in the near future. I also do not like the present administration platform that relies on 80’s style command prompts. I hope they can make good use of their recent $10 million dollar infusion. If they want to compete with MS SQL Server ( and I really want them to…), they have a lot of work to do.
I remain hopeful as well. The impact this architecture could have on disaster recovery alone would be a sea change in the redundant remote hardware model so commonly employed today today.