GrapheneDB Blog

Updates from the GrapheneDB team

GraphConnect Europe 2015, Introducing Azure Beta & Neo4j Server Logs

GrapheneDB is proud to sponsor GraphConnect Europe 2015 (London, May 7th), the only conference that focuses on the rapidly growing world of graph databases and applications that make sense of connected data.

If you’re at the conference, please find us and say hello. We’d love to chat about graphs and have swag with us for you!

We’ve also got some great news to announce!

GrapheneDB on Azure now available in beta

Neo4j Databases Now in Beta on Microsoft Azure

Are you hosting your applications on Microsoft Azure? Now you can take advantage of GrapheneDB’s fully managed Neo4j hosting service, too.

Create your free Neo4j on Azure now

Microsoft Azure has been one of the most requested providers on GrapheneDB for a long time. We’re happy to announce beta availability of GrapheneDB hosted Neo4j databases on Microsoft Azure.

The service on Azure is currently in public beta with the Sandbox plans generally available in the regions East US 2 and North Europe.

Sandbox databases are a fantastic way to discover the value of GrapheneDB’s fully-managed Neo4j hosting service on Azure or get acquainted with Neo4j. In addition to having your database up and running in a few seconds you can:

  • Access to the Neo4j browser interface
  • Export and restore databases on demand
  • Access the server log files

Want to take the new Azure deployments for a spin?

If you’re already a GrapheneDB user, you can create an Azure deployment from the new database form by selecting “Microsoft Azure” as the provider.

GrapheneDB provisioning on Azure Beta

New to GrapheneDB? This link will take you through the signup process and then to the next step where you’ll be ready to provision your Azure-hosted Neo4j instance. It takes less than a minute to be up and running!

Need production-grade Neo4j hosting on Azure?

Besides the free Sandbox plans, we’re also offering our Performance plans to a select set of beta customers. We plan to make the rest of our plans generally available as soon as possible. Get in touch.

New Feature: Neo4j Log Files

We’d also like to introduce you to our newest feature: Neo4j Server Logs.

This feature enables GrapheneDB users to diagnose and debug issues by providing access to the Neo4j server log files from the user interface.

Streaming of Neo4j Log files on GrapheneDB

We want to make it easy for our users to access the log files when necessary–for instance, when debugging a custom plugin or server extension, or when trying to determine if there are any errors.

How it Works

There are two ways to access the log files:

  • In-browser streaming (similar to the tail UNIX command ): Streaming can be paused to scroll up/down, examine or copy certain sections of the file.
  • File download: Enables you to download the files to your computer for further inspection.

We provide access to the following log files:

  • messages.log
  • neo4j-0.0.log

Server logs are available on all our plans.

As always, we look forward to receiving your feedback.

Introducing Team Collaboration

Team collaboration

Most of our customers are small- to medium-sized development teams that work together on applications. In such work environments it is desirable that multiple developers have access to all production databases, and that they can deploy new instances when testing out new features or setting up new environments.

GrapheneDB has added a new team collaboration feature, making it easy for teams to work together on their Neo4j databases and manage their account easily.

There are three different user roles:

  • owner: the account used to sign up, full access
  • admin: can manage billing details, collaborators and databases
  • collaborators: can manage databases

Managing users is very straightforward. If you’re an account owner or admin, you can add/edit/remove team members from the Users tab in the account area:

Creating a new user

Collaborating on databases

All users within the same account can manage existing databases and provision new instances, without having to add any billing details to their own accounts.

Collaborating on billing

If you have multiple co-founders, or if you need someone from your team to update the billing details and make sure payments get done in time, you can add admin users to your account.

Admins have full access to the billing area, in addition to unrestricted permissions to manage databases. They can also add or remove team members or change their roles.

Collaborating on support

When opening support tickets through our UI, you can also include other team members in CC. They will receive email notifications to any updates on the support ticket, enabling everyone to be on the same page and participate in the conversation.

CC team members in support requests

If you have any questions or comments, or want to provide feedback about this feature, please get in touch.

Neo4j 2.2 on GrapheneDB

First up, congratulations to Neo Technology, especially the engineering team, for releasing Neo4j 2.2!

Neo4j 2.2 Browser UI

A lot of you have been asking when it’s going to be possible to try out the recently released Neo4j 2.2 on GrapheneDB. That’s why we’re happy to announce that you can now upgrade your GrapheneDB deployments to Neo4j 2.2.

As a major new version with plenty of new features, we don’t suggest you go straight into production with it.

What we do recommend at this point is that you begin testing with a new Neo4j 2.2 deployment to ensure that you don’t run into any unexpected issues. As with other releases that include store-migrations, the version upgrade will be non-reversible, so proceed with caution.

We will be tracking and iterating updates to Neo4j 2.2.x as they are released.

Also, we recommend to upgrading to Neo4j 2.1 before embarking on the 2.2 update.

Try Neo4j 2.2 on GrapheneDB for free!

Noteworthy changes

Users are reporting performance improvements of 20% and higher without any changes in code or queries.

Here’s a short summary of what to expect when upgrading:

  • A major overhaul of the Neo4j Browser, including the ability to visualize query plans and terminate running queries!
  • Fast-write buffering which dramatically increases the throughput of many write workloads.
  • A new pagecache, which is faster and easier to configure. If you’ve struggled to configure your Neo4j memory caches before, you’ll love this one!
  • Full support for profiling and explaining Cypher query plans, including a query plan visualizer in the Neo4j Browser.
  • A new cost based query planner for Cypher, which is smarter at planning queries, in addition to the existing rule based compiler. Neo4j will be smart and will automatically figure out which to use for each query.

For the full list of changes, please look at the release notes for Neo4j 2.2.

Try Neo4j 2.2 on GrapheneDB now!

Want to Host Your Neo4j Databases in Europe? We’ve Got You Covered! ;)

Announcing General Availability of all GrapheneDB plans in AWS EU and Heroku EU regions

At GrapheneDB, we’ve been offering dedicated instances in the EU region since the beginning of our beta phase, but the plans on the Hobby and Standard tier have only been available in the N.Virginia AWS region for most of the time. The reasoning behind this is there was not enough demand for shared instances in Europe to justify setting up and operating the necessary infrastructure.

Europe map

Demand has been increasing steadily over the last couple of months and our European users have been frequently asking us for more affordable plans in the EU region.

We’ve heard you loud and clear and this is why we’re happy to announce that all our AWS plans are now available in the AWS eu-west-1 region (Ireland).

Create your free EU hosted database now

Click on the button above and follow these steps to provision your database in Europe:

  1. Choose a plan (our free Sandbox plan is available in Europe, too!)
  2. Enter a name and select EU (Ireland) region in the AWS region selectbox
  3. You’re set!

Provisioning a Neo4j instance in the AWS EU region on GrapheneDB

GrapheneDB Heroku add-on now available for Heroku EU apps

If you’re using our Heroku add-on, we’re also happy to let you know that it’s now also compatible with the Heroku EU region, making it easy for you to deploy your apps in Europe.

All databases provisioned through the add-on (even thee free Chalk plan) for apps in the Heroku EU will automatically be hosted in the AWS eu-west-1 region (Ireland).

If you haven’t yet, check out our Neo4j add-on for Heroku now. We’ve got free plans to get you started there, too.

Populate Your GrapheneDB Neo4j Instance With a Custom Generated Graph

At GrapheneDB, we are frequently approached by developers working on Neo4j-powered applications, with questions about graph modeling. In this post, we will walk through the process of generating a custom graph with sample data and then populating your GrapheneDB Neo4j instance with it.

If you have data, we usually recommend importing it into Neo4j as outlined in a previous blog post. At that point, you can model the problem, run sample queries and iterate until you get the results you want.

But what if you don’t have any real-world data available? Then generating a sample dataset is probably the best option.

To get started, we recommend Graphgen, a component of the Neoxygen set of tools developed by Christophe Willemsen. It’s a free, open-source, web-based graph generator that you can use to populate Neo4j graphs with sample data. It has following features:

  • A wide range of sample data providers: people’s names, addresses, phone numbers, company names, email addresses, domain names, etc.
  • It relies on a sort of pseudo-Cypher syntax, with the ability to create complex structures
  • and… it’s also capable of populating GrapheneDB instances!

Let’s walk through a detailed example, focusing on people working at companies and the friendship relationship between them.

Step 1: Provision your Neo4j database on GrapheneDB

If you haven’t already, sign up for a free GrapheneDB account at www.graphenedb.com. Once logged in, create a new, sandbox database. It’s free!

Creating a Neo4j instance on GrapheneDB

Step 2: Generate the dataset

Sample graph model

Let’s model a simple graph with people and companies:

  • People will be stored as nodes with label Person and a property fullName.
  • Companies will be stored as nodes with label Company and a property name.
  • A Person node can have a KNOWS relationship to other Person nodes
  • Person nodes have a WORKS_AT relationship to a Company

In order to generate this in Graphgen, we will need to describe the pattern in pseudo-Cypher syntax:

1
2
(person:Person {name: fullName} *35)-[:WORKS_AT *n..1]->(comp:Company {name: company} *10)
(person)-[:KNOWS *n..n]->(person)

This short snippet will generate:

  • 35 nodes with the Person label and a randomized full name property
  • 10 companies with random company names
  • A relationship WORKS_AT connecting every person to a single random company (n..1)
  • And relationships KNOWS between the Person nodes (many to many, n..n)

Notice the syntax is almost standard Cypher, but with some simple additions to specify properties using formatters, indicate the amount of nodes to create, define the relationships and their cardinality. For further details please read the project documentation.

Next, open graphgen.neoxygen.io, put your code snippet in the text area and hit the Generate button. The resulting dataset will be rendered as an interactive graph which you can navigate.

Generating the graph with Graphgen

Step 3: Populate your GrapheneDB Neo4j instance with the generated dataset

Click on the Populate your database button. A modal dialog will pop up, with fields for the URL, username and password.

Fill out these fields with the connection details located in the Connection tab for your Neo4j instance in the GrapheneDB user interface: URL, username and password.

Populating the database with Graphgen

Step 4: Browse and query your generated dataset on GrapheneDB

Loading the generated graph into your GrapheneDB should take just a few seconds. After the process is completed, go back to GrapheneDB’s interface.

In the overview tab, use the Launch button fire up Neo4j’s web-based browser UI.

Browsing the generated graph in Neo4j

If you, like us, also find Graphgen a useful tool, make sure to say thanks to Christophe for putting it together and stay tuned to his Twitter account for some nice upcoming features.

Graphgen is open-source and you can also have a look at other great Neo4j related tools Christophe put together at neoxygen.io, like neoclient, a PHP client for Neo4j which is also supported by GrapheneDB.

Neo Technology Just Closed $20M in Funding. Here’s Why It’s a Big Deal!

Neo Technology, makers of Neo4j, announced their $20M Series C round yesterday, bringing the company’s total investment to date to $44M. The funding announcement was covered by popular media such as Techcrunch, Venturebeat, Gigaom, Pando and Forbes. The official press release from Neo Technology is here.

Why graph databases

Companies have identified data-driven operations, and decisions, as keys to success. But we live in an increasingly connected world, and traditional databases can’t handle the amount of connected data that holds together our social, personal and professional networks.

Graph databases, on the other hand, outperform traditional databases by factor of thousands when managing complex, connected data. They have inherent advantages in an environment where everything is connected.

Neo Technology makes Neo4j, the market leader in graph databases. With its intuitive query language Cypher, the interactive browser interface introduced in 2.0, and the new ETL functionality introduced in 2.1, Neo4j is moving quickly and acquiring a noticeable head start and consolidating itself as the graph database for apps.

Graph databases are here to stay

Graph databases organize information more intuitively than traditional databases. Developers can query data and ask questions that traditional databases don’t. Simply put, they’re built with connectedness in mind.

Graph databases are here to stay, and will be very influential in the coming years. Forrester predicts 25% of the enterprises to be using graph databases by 2017 [1].

An ecosystem of providers around Neo4j is emerging, be it hosting, visualization,or complementary libraries. Over the coming years we’ll continue to see others emerging. Neo4j is a central piece of technology for many companies and these providers bridge certain gaps in the value-add chain that make graph databases easier to adopt, use and extract value from.

Neo Technology knows it, and so do its investors.This funding milestone is another sign of the graph database market picking up steam.

Taking Neo4j to the Cloud

At GrapheneDB, we are big believers in graph databases. Our goal is to make Neo4j technology accessible and easy for developers to use. That’s why we created our hosted database platform.

GrapheneDB is a part of the ecosystem that’s emerging around Neo4j technology. We took the core Neo4j technology, built an automated operations layer and a user-friendly interface to manage operational aspects, such as configurations, plugin management, and backups. By taking care of operations, our users are able to focus on developing graph-powered apps and increase their productivity, knowing that they we will make sure their database runs around the clock.

We provide different levels of service, from Hobby, to get started, to Production-grade plans with automatic backups and server monitoring. No matter the app, our platform helps you get graph database instances up and running.

Try us out for free

If data-driven operations and decisions are keys to success, then find out how graph databases can help you. Go to www.graphenedb.com and get started with one of our free plans.

[1] TechRadar(TM): Enterprise DBMS, Q1 2014. Forrester Research. 2-13-14

Importing Data Into Neo4j via CSV

At GrapheneDB, a question we get asked quite often from users is how to import data. Sample datasets are good, but loading your own data is even better. This post will explain how to import data from a CSV file into Neo4j. After outlining the steps to take, we list some special considerations for GrapheneDB users.

One of the most important steps when evaluating a new technology for your stack is importing existing data. CSV is one of the most popular standards for data exchange and most of the popular database engines support exporting data in CSV format.

Starting with 2.1, Neo4j includes a LOAD CSV [Neo4j Docs] Cypher clause for data import, which is a powerful ETL tool:

  • It can load a CSV file from the local filesystem or from a remote URI (i.e. S3, Dropbox, Github, etc.)
  • It can perform multiple operations in a single statement
  • It can be combined with USING PERIODIC COMMIT to group the operations on multiple rows in transactions to load large amounts of data [Neo4j Docs]
  • Input data is mapped directly into a complex graph structure as outlined by the user
  • It’s possible to manipulate or compute values in runtime
  • It allows merging existing data (nodes, relationships, properties) rather than just adding it to the store

Steps

Have your graph data model ready

Before running the import process you will need to know how you want to map your data onto the graph. What are the nodes and relationships, and which properties will they have?

Tune cache and heap configuration

Make sure to increase the heap size generously, specially if importing large datasets, and also make sure the file buffer caches fit the entire dataset.

You can estimate the size of your dataset on disk after the import by using the table in the official Neo4j docs.

Let’s assume we are going to store 100K nodes, 1M relationships and a fixed-size property per node/relationship (i.e. an integer number) :

  • Node store: 100,000 * 15B = 1.5 MB
  • Relationship store: 1,000,000 * 34B = 34MB
  • Property store: 1,100,000 * 41B = 45.1 MB

Those are the minimum values that we should use in your filebuffer cache configuration.

Set up indexes and constraints

Indexes will make lookups faster during and after the load process. Make sure to include an index for every property used to locate nodes in MERGE queries.

An index can be created with the CREATE INDEX clause. Example:

1
CREATE INDEX ON :User(name);

If a property must be unique, adding a constraint will also implicitly create an index. For example, if you we want to make sure we don’t store any duplicated user nodes, we could use a constraint for the email property.

1
CREATE CONSTRAINT ON (u:User) ASSERT u.email IS UNIQUE;

Loading and mapping data

The easiest way to load data from CSV is to use the LOAD CSV statement. It supports common options, such as accessing via column header or column index, configuring the terminator character and other common options. Please refer to the official docs for further details.

To speed up the process, make sure to use USE PERIODIC COMMIT, which will group multiple operations (by default 1000) into transactions and reduce the times Neo4j has to hit the disk to commit the changes.

1
2
LOAD CSV WITH HEADERS FROM "file:///tmp/users.csv" AS csvLine FIELDTERMINATOR ';'
MERGE (u:User { email: csvLine.email}) ON CREATE SET u.username = csvLine.username, u.name = csvLine.name;

Please note that values are read as Strings, so make sure you do format conversion where appropiate, i.e. toInt(csv.columns) when loading integer numbers.

The load process can be run from the Neo4j shell, either interactively, or by loading the Cypher code from a file using the option -file filename.

Alternatively, the code can be entered manually into the shell or the browser UI.

Considerations for GrapheneDB users

A few considerations when loading data into your GrapheneDB Neo4j instance:

  • caches and heap can only be configured on the Standard plans and higher. They are fixed on the lower-end plans
  • neo4j-shell does not support authentication and thus it can’t be used to load data into an instance hosted on GrapheneDB or otherwise secured with authentication credentials
  • when running the command from the browser UI, bear in mind Neo4j won’t be able to access your filesystem. You should provide a publicly available URL instead, i.e. a file hosted on AWS S3
  • for larger datasets, we recommed running the import process locally and once completed, perform a restore on your GrapheneDB instance

For a comprehensive tutorial, including tools to clean up the CSV files, common pitfalls and more advanced tools like the super fast batch importer please refer to this comprehensive CSV import guide.

Please don’t hesitate to post any comments or contact our support team if you are having issues loading data into your GrapheneDB instance.

GrapheneDB Concludes Beta Phase, Releases New Plans

GrapheneDB has concluded the beta stage of its product development.

Leaving beta stage means that the service’s core functionality has been tested and proven. A significant user base has adopted GrapheneDB’s platform for hosting managed graph databases.

As GrapheneDB continues to improve on current features and build additional ones, customers can register now, knowing they’ll get a reliable, straightforward hosting service for their graph databases.

“Success Kid” Photograph (c) Laney Griner / Used with Permission

“Our cloud hosting platform operates the largest fleet of managed Neo4j databases,” says Alberto Perdomo, GrapheneDB co-founder. “We built this platform as developers, for developers. There was no good, reliable hosting service for graph databases, so we built GrapheneDB.”

GrapheneDB’s flexible tier and plan system means that developers can test ideas before taking an app into production.

To learn more about GrapheneDB, visit graphenedb.com To view pricing and register a free account, visit http://www.graphenedb.com/pricing.html.

GrapheneDB Sponsors GraphConnect 2014

GrapheneDB is a proud sponsor of GraphConnect 2014, taking place Oct ober 21-22 in San Francisco. GraphConnect is the only conference that focuses on the rapidly growing world of graph databases and applications, and features Neo4j, the world’s leading graph database.

GraphConnect Logo

“Graph databases are the future. For highly connected data, they are thousands-of-times faster than other databases,” says Alberto Perdomo, co-founder of GrapheneDB. “GraphConnect 2014 brings together some of the most innovative developers working with graphs, so we’re very happy to be supporting it.”

GrapheneDB’s cloud hosting platform operates the largest fleet of managed Neo4j databases. Known for its reliability and flexibility, GrapheneDB’s service allows developers to build and scale apps with peace-of-mind.

GrapheneDB’s features and flexible plan structure support applications in any stage of the development cycle, from development to MVP, into production and then scaling as the app matures.

To get your tickets for the conference, visit graphconnect.com

To learn more about GrapheneDB, visit graphenedb.com. Getting started only takes seconds!

Our New Add-on Helps Heroku Users Build Applications on Top of Neo4j

To build and run powerful apps on top of Neo4j databases, you need a reliable partner to keep those databases running. GrapheneDB’s hosting service for the Neo4j graph database is now available to Heroku users. We’ve launched a beta version of our add-on that’s public and immediately available for use.

Access the public Docs at the Heroku Dev Center.

More about the add-on

  • It includes all the features offered by GrapheneDB.
  • By default, the add-on will provision Neo4j 2.0 instances with support for labels, the new browser and more.
  • Support for Gremlin is available for Neo4j 1.9 (Gremlin is not included in 2.0 releases anymore)

Migration from Neo4j add-on

If you want to migrate from the Neo4j add-on, follow these simple steps at our Heroku docs page.

 Why Use Graphs?

Graph databases help you recognize and exploit relationships among your data that are otherwise difficult to manage. They’re built specifically to treat relationships as first-class citizens and scale with predictable query time regardless of the overall size of the data set.

 Get Started

GrapheneDB makes it easy to set up and maintain your neo4J databases, so you can focus on building a powerful app. Contact us and learn how to get a dedicated instance for your Heroku app up-and-running.