ArangoDB at NoSQL Matters Paris: Insights & Innovations

If you are interested in NoSQL and come from France, the NoSQL matters conference in Paris is your place to go. ArangoDB contributes with a workshop and a talk and is a silver sponsor of the conference as well. You can meet our team at the exhibition space and ask your ArangoDB questions in person.

Tickets are available for both days, starting at €299 for the conference pass.

Anyway, come and meet us at the historical Tapis Rouge venue in the heart of Paris city!

Building Single Page Applications with Angular.JS and Foxx

Workshop on March, 26th

Angular.JS is Google’s open-source JavaScript framework optimized to build awesome single page applications. This ease of use has convinced many developers to switch. With MVC in the browser all you need from your backend is an easy way to define an API for your data.- That’s where Foxx excels.

In this training session we will build a simple single page application. Showing you how to use Angular.JS and what is a good way to define your model using Foxx.

Polyglot Persistence & Multi-Model NoSQL Databases

Talk on March, 27th (10 am)

In many modern applications the database side is realized using polyglot persistence – store each data format (graphs, documents, etc.) in an appropriate separate database. This approach yields several benefits, databases are optimized for their specific duty, however there are also drawbacks:

  • keep all databases in sync
  • queries might require data from several databases
  • experts needed for all used systems

A multi-model database is not restricted to one data format, but can cope with several of them. In this talk i will present how a multi-model database can be used in a polyglot persistence setup and how it will reduce the effort drastically.

More info...

ArangoDB in San Francisco: Exciting Developments & Events

Join parts of the ArangoDB team in San Francisco. Max and Claudius are visiting the Bay Area from mid-February till end of March. Starting with the StrataConf in San Jose, Feb 17–20, 2015 Max and Claudius want to meet people, start cooperations, visit meetups and tell people in the Bay Area about ArangoDB.

If you know any hackerspaces we definitely should go, drop us a line and we will try to be there. We would be happy to see some of you guys in person and to respond to every question you may have about ArangoDB.

More info...

Comparison: Lockless programming with atomics in C++ 11 vs. mutex and RW-locks

ArangoDB is multithreaded and able to use several CPU-cores at once. Because of that access to common data structures to these threads have to be protected from concurrent access. ArangoDB currently uses mutexes, spinlocks and RW-locks for that. With the ongoing development of the MVCC the number of situations where protected access is needed grows significantly. If locking is done too often the scalability is effectively limited to one core. So this test was done to estimate the costs, and evaluate other solutions – so called lockless programming with atomics.

(more…)

More info...

New Address for GitHub: ArangoDB Updates

github_changed

We have moved our ArangoDB Github repository from triAGENS to arangodb.

The database:

triAGENS/ArangoDB –> arangodb/arangodb

We’ve also moved:

  • arangodb-php –> arangodb/arangodb-php
  • elasticsearch-river-arangodb –> arangodb/elasticsearch-river-arangodb

For a certain amount of time the old triAGENS – repositories will redirect to the new ones.

More info...

Explaining AQL Queries in a Fancier Way: ArangoDB Tutorial

I have been looking at many AQL queries during the last few weeks…

Looking back, I can say that the JSON query execution plans provided by the explain() method have provided me with a lot of useful information about how the AQL optimizer had transformed a given query. This has helped testing and improving the query optimizer a great deal.

However, the JSON output produced by explain() is so detailed that even for the simplest cases queries it will span multiple screens. This is far too much for quickly assessing what a query will be doing and how it will be executed.

I therefore quickly put together a function that provides a much more compact explain output. Its input parameter is a query string, which it will send to the ArangoDB server to have it explained.

But it doesn’t print a voluminous JSON object. This one is for developers with a full schedule.

Read more on Jan’s Blog

More info...

Bulk Inserts: MongoDB vs CouchDB vs ArangoDB (Dec 2014)

More than two years ago, we compared the bulk insert performance of ArangoDB, CouchDB and MongoDB in a blog post.

The original blog post dates back to the times of ArangoDB 1.1-alpha. We have been asked several times to re-run the tests with the current versions of the databases. So here we go.

(more…)

More info...

November Recap: ArangoDB Updates & Highlights

November 2014 was a month where our staff (and the cute ArangoDB Foxx) collected lot's of miles by visiting conferences, meetups and inspiring people in Europe, Africa, the US and Canada. If you missed a talk, there are plenty of slideshares / recordings available.

Release 2.3

Everyone who was not on a plane worked on ArangoDB 2.3 - our major release with a re-written query optimizer that optimizes execution plans, added/improved AQL functions and several performance improvements (@see Query Optimizer Tour by Jan). You can download ArangoDB 2.3.1 and start optimizing.

Frank added a docker file, so you might start shipping ArangoDB in a docker container as well.

Extensibility Framework Foxx

Our JavaScript extensibility framework Foxx (@see this new 2:45min ArangoDB Foxx intro by Lucas) also benefits from our 2.3 release, adding job queues and session handling for Foxx apps, plus 3 bundled apps for user management, session and authentication.

https://twitter.com/okiess/status/538656260577828864

With a blog post series started last week on Building Hypermedia APIs Lucas introduces the concepts of hypermedia in JSON. The second post will follow later today, explaining how to design a complete web API with a state-chart / state-machine. Finaly, the third post will describe how you can use the new FoxxGenerator (upcoming 2.4 release) to build your API.

Can't wait? Then use our newly introduced ArangoDB technical previews to get your hands on our latest features. The 2.4.1 technical preview can be used to test the FoxxGenerator feature.

ArangoDB Driver Support

We also worked on a new Java Driver which is fully documented and comes with an additional blog post on Graph handling with the Java Driver.

Great effort from the community leads to several more driver updates, improved documentation and ArangoDB 2.3 support. Have a look at the drivers page to see if your favorite programming language is one of the 16 supported.

Cookbook - Recipes to make with ArangoDB

We have introduced an ArangoDB Cookbook as a developers source that provides easy to use recipes for common tasks / problems to solve in or with ArangoDB. Recipes explain how-to start a docker container with ArangoDB, Fulldepth graph traversals or how to write your first Foxx app.

ArangoDB Cookbook

Please add your recipes via Github to extend this resource for relevant hands-on solutions!

Blog Posts

Several blog posts you might have missed last month:

#FoxxOnTour

This month we didn't only work on several releases, we also flew around the world visiting many conferences, user groups and awesome people, guarded by our lovely Foxx. Places we've been in November:

And here are some pictures of our Foxx having fun at different places all around the world, tagged with #FoxxOnTour:

More info...

Building a Hypermedia API with JSON: ArangoDB Tutorial

When we create websites we don’t just create single pages that have no connection to other Web pages. From the beginning, hyperlinks were part of the core concept of the World Wide Web and for that reason HTML. Links are so essential to the Web that they are even used to rank the popularity of the Web pages on search engines. And who hasn’t gone on a journey through Wikipedia clicking link after link? Even though we all know and appreciate the importance of links on Websites, we rarely use links in our Web APIs. (more…)

More info...

Running ArangoDB Made Simple: Step-by-Step Guide

docker run -p 8529:8529 arangodb/arangodb

I've created an automated build repository on docker, so that you can easily start a docker container with the latest stable release. If you miss anything in the container, please let me know. Thanks to frodenas, hipertracker, joaodubas, webwurst who also created dockerfiles.

ArangoDB

A distributed open-source database with a flexible data model for documents, graphs, and key-values. Build high performance applications using a convenient sql-like query language or JavaScript extensions.

Start a ArangoDB instance

In order to start an ArangoDB instance run

unix> docker run --name arangodb-instance -d arangodb/arangodb

By default ArangoDB listen on port 8529 for request and the image includes EXPOST 8529. If you link an application container, it is automatically available in the linked container. See the following examples.

Using the instance

In order to use the running instance from an application, link the container

unix> docker run --name my-app --link arangodb-instance

Running the image

In order to start an ArangoDB instance run

unix> docker run -p 8529:8529 -d arangodb/arangodb

ArangoDB listen on port 8529 for request and the image includes EXPOST 8529. The -p 8529:8529 exposes this port on the host.

Command line options

In order to get a list of supported options, run

unix> docker run -e help=1 arangodb/arangodb

Persistent Data

ArangoDB use the volume /data as database directory to store the collection data and the volume /apps as apps directory to store any extensions. These directory are marked as docker volumes.

See docker run -e help=1 arangodb for all volumes.

A good explanation about persistence and docker container can be found here: Docker In-depth: Volumes, Why Docker Data Containers are Good Using host directories

Using host directories

You can map the container's volumes to a directory on the host, so that the data is kept between runs of the container. This path /tmp/arangodb is in general not the correct place to store you persistent files - it is just an example!

unix> mkdir /tmp/arangodb
unix> docker run -p 8529:8529 -d \
          -v /tmp/arangodb:/data \
          arangodb

This will use the /tmp/arangodb directory of the host as database directory for ArangoDB inside the container. Using a data container

Using a data container

Alternatively you can create a container holding the data.

unix> docker run -d --name arangodb-persist -v /data ubuntu:14.04 true

And use this data container in your ArangoDB container.

unix> docker run --volumes-from arangodb-persist -p 8529:8529 arangodb
unix> docker run -d --name arangodb-persist -v /data tianon/true true

Images

Building an image

Simple clone the repository and execute the following command in the arangodb-docker folder

unix> docker build -t arangodb .

This will create a image named arangodb.

More info...

ArangoDB 2.3 Release: New Features & Enhancements

This version is deprecated. Download the new version of ArangoDB

The new query optimizer is ready to rock the world. We are proud to announce the release of ArangoDB 2.3, available for download now. ArangoDB 2.3 is available for Linux, Windows and Mac and provides support for 16 programming languages.

Overhauled Query Optimizer

The query optimizer and executor for AQL queries have been completely overhauled. Especially the optimization of distributed queries has been improved significantly.

The query optimizer can now apply much more optimizations than in previous versions of ArangoDB. We have tried to keep the new version as compatible as possible with ArangoDB 2.2.

Have a look at Jan’s blog post “Tour around new AQL query optimizer” or read the optimizer documentation to get familiar with this new feature.

Powerful Foxx Enhancements

We can’t wait to get your feedback, so we’ve released some great new Foxx features in 2.3 with more to come in the next release.

With the new job queues feature you can run async jobs to communicate with external services, Foxx queries make writing complex AQL queries much easier and Foxx sessions will handle the authentication and session hassle for you. (more…)

More info...

Get the latest tutorials,
blog posts and news: