Thursday, July 26, 2012

Cloud Foundry, Micro Cloud Foundry, VMX

As part of my exploration into NoSQL and MongoDB, I have been exploring CloudFoundry. 

I first learned about CloudFoundry during SpringOne 2GX 2011 last October in Chicago

We received flash drives with the Micro Cloud Foundry on it, but I was way too busy with work at the time to give it much thought. 

However, as I started looking for Cloud Hosting and PaaS that supports MongoDB, I realized that CloudFoundry supports MongoDB. 

Registered here: http://my.cloudfoundry.com/signup and received an email with my credentials.  One thing that struck me as odd was that when I signed in, I was unable to change my password from the randomly generated one.

Oh, well, I proceeded to download Micro Cloud Foundry. I also set up VMX and am able to remotely connect to CloudFoundry.

ruby 1.9.3p194 (2012-04-20) [i386-mingw32]

C:\>gem install vmc
Fetching: json_pure-1.6.7.gem (100%)
Fetching: rubyzip-0.9.9.gem (100%)
Fetching: mime-types-1.19.gem (100%)
Fetching: rest-client-1.6.7.gem (100%)
Fetching: terminal-table-1.4.5.gem (100%)
Fetching: interact-0.4.5.gem (100%)
Fetching: addressable-2.2.8.gem (100%)
Fetching: uuidtools-2.1.3.gem (100%)
Fetching: rb-readline-0.4.2.gem (100%)
Fetching: vmc-0.3.18.gem (100%)
Successfully installed json_pure-1.6.7
Successfully installed rubyzip-0.9.9
Successfully installed mime-types-1.19
Successfully installed rest-client-1.6.7
Successfully installed terminal-table-1.4.5
Successfully installed interact-0.4.5
Successfully installed addressable-2.2.8
Successfully installed uuidtools-2.1.3
Successfully installed rb-readline-0.4.2
Successfully installed vmc-0.3.18
10 gems installed
Installing ri documentation for json_pure-1.6.7...
Installing ri documentation for rubyzip-0.9.9...
Installing ri documentation for mime-types-1.19...
Installing ri documentation for rest-client-1.6.7...
Installing ri documentation for terminal-table-1.4.5...
Installing ri documentation for interact-0.4.5...
Installing ri documentation for addressable-2.2.8...
Installing ri documentation for uuidtools-2.1.3...
Installing ri documentation for rb-readline-0.4.2...
Installing ri documentation for vmc-0.3.18...
Installing RDoc documentation for json_pure-1.6.7...
Installing RDoc documentation for rubyzip-0.9.9...
Installing RDoc documentation for mime-types-1.19...
Installing RDoc documentation for rest-client-1.6.7...
Installing RDoc documentation for terminal-table-1.4.5...
Installing RDoc documentation for interact-0.4.5...
Installing RDoc documentation for addressable-2.2.8...
Installing RDoc documentation for uuidtools-2.1.3...
Installing RDoc documentation for rb-readline-0.4.2...
Installing RDoc documentation for vmc-0.3.18...

C:\>vmc
Usage: vmc [options] command [<args>] [command_options]
Try 'vmc help [command]' or 'vmc help options' for more information.


C:\>vmc target

[http://api.vcap.me]


C:\>vmc target api.cloudfoundry.com
Successfully targeted to [http://api.cloudfoundry.com]


C:\>vmc login
Attempting login to [http://api.cloudfoundry.com]
Email: ********
Password: ********
Successfully logged into [http://api.cloudfoundry.com]

Friday, July 13, 2012

NoSQL, BigTable, and data stores

I've started reading a lot about NoSQL Databases and it fascinates me, especially as a developer who has grown up in the Relational Database world (Oracle and SQL Server) and spent a lot of time optimizing queries, working on complex SQL statements, normalizing tables, inner joins, left outer joins, inline views, and all that good stuff.

Over time, I've watched the evolution from the Data Tier of the n-tiered model go from DAOs that executed JDBC to ORM (been doing a lot of Hibernate and NHibernate) to Grails/GORM (which provides a ton of create/read/update/delete methods automatically, freeing the developer from having to maintain this code). 

I have read articles about how companies that work with extremely large volumes of data like Google have developed distributed, non-relational data stores such as BigTable.  When I was playing with Google App Engine was my first exposure to BigTable, and it was a bit of culture shock for a developer who is used to the traditional RDBMS model present in most corporate environments (at least every environment I have worked in since I started in industry in 1998). 

BigTable and the problem it was created to address fascinated me.  However, I really couldn't get into Google App Engine.  At the time, it was purely Python/Django, though it has since been expanded out to include Java.  I did write several Python scripts and built a few pages in Django, but found it to be an uncomfortable fit for someone comfortable with writing Java in IntelliJ or C# in Visual Studio .NET. 

Recently I have been reading about the NoSQL movement.  I am going to pull down MongoDB and give it a try.  I was glad to read that Grails has a MondoDB plugin.