Platinum Partner
java,ruby,cloud,nosql,architecture,neo4j,graph database,heroku

Neo4j Labs: Heroku, Neo4j and Google Spreadsheet in 10min. Flat.

Hi all,


Last Friday, we were all labbing again - the best day of the week.

I didn't have much time so I decided to try to produce a screencast that would measure the time required to go from nothing to flash using some of our tools.

This post was authored by

What I came up with demonstrates the process required to set up a Neo4j instance via Heroku, then connect to it from within a Google Spreadsheet (which your managers will like) using appscript.

Simple, yet pretty cool.

Note: Please make sure that you are part of the Heroku private beta program, before trying this yourself.  Alternatively send an email to heroku at neo4j.org for getting registered.
The addon-documentation is also available at heroku (protected).

The basic steps are:

  • Create and install a Heroku app (heroku apps:create)
  • Add a Neo4j instance to it (heroku addons:add neo4j)
  • Upload existing Twitter data in a graph to run on
  • Create a custom Ruby app (see below, GitHub
  • Execute Cypher queries (see below) 
  • Connect to the app using a Google Spreadsheet 
  • Build a small bar chart from a Cypher query.


Watch the screencast to see it in action:



What do you think, both about the content and the screencast itself? Some thoughts:
  • quality is not stellar but acceptable with IShowU and built-in MacBookPro Mic
  • probably a transcript of the commands used in the cast would be good, as suggested by Patrick Durusau
  • YouTube seems to have a problem accepting my login via iMovie, which I used for putting together the pieces.
  • All in all, it will take about 2h to produce this kind of casts, hope to get that down to 1h for 5 minutes.


Create and Launch Heroku Application
# Register at Heroku and for the beta program
> git init
> heroku apps:create <app-name>
> heroku addons:add neo4j
> add the files below
> git add *; git commit -m"neo4j demo"
> git push heroku master


#Gemfile
source :rubygems


gem 'sinatra'
gem 'json'
gem 'rest-client'

#config.ru
require './cypher-endpoint'
run Sinatra::Application

#cypher-endpoint.rb
require 'sinatra'
require 'rest-client'
require 'json'


rest = RestClient::Resource.new(ENV['NEO4J_URL'])


post '/raw-cypher' do
    data = {:query=>request.body.read }
    path = "/db/data/ext/CypherPlugin/graphdb/execute_query"
    rest[path].post data.to_json, 
        {:accept      =>"application/json", 
         :content_type=>"application/json"}
end
Cypher Queries
start user=node(212) match user-[:USED]->tag return tag.name



start user=node:users(twid:*) match user-[:TWEETED]->tweet 
  return user.twid, count(*)


curl -d'start user=node:users("twid:*") 
   match user-[:TWEETED]-> tweet -[:TAGGED]-> tag 
   return user.twid, tag.name, count(*) 
   order by count(*) desc limit 10' 
  http://heroku-neo4j-appscript-demo.heroku.com/raw-cypher

For the next screencasts, please suggest topics that you are interested in!
Even better - create a screencast about a Neo4j topic yourself.

Enjoy!

/peter


Source:  http://blog.neo4j.org/2011/12/neo4j-labs-heroku-neo4j-and-google.html


{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks
Tweet

{{parent.nComments}}