Ashikawa::Core 0.10 released

We just released version 0.10 of the low-level ArangoDB Ruby driver Ashikawa::Core. It supports both ArangoDB 1.4 and 2.0. For more details see the release notes. We’re also working on the first version of Guacamole: It is an ODM for Rails and is based upon Ashikawa::Core.

Posted in Releases, ruby | Leave a comment

Getting started with ArangoDB and Symfony 2 – part 1

This is part 1 (of 4) of an introduction to the use of ArangoDB together with Symfony 2. You’ll find the links to the other parts of this tutorial at the end of this text. In this tutorial we will implement a very simple movie database as an example of how to use ArangoDB together with Symfony 2. We assume for the tutorial that you know the basic concepts of Symfony2. No prior ArangoDB knowledge is required. The demo shows how to create, edit, update and delete movies, how to select a list of movies from the database in two different ways. We’ll use the simple query API for most examples. The “search for a topic” feature uses ArangoDB’s query language (AQL), a convenient sql-like way to query ArangoDB. You can download the completed demo at Github.

Posted in API, php | Tagged , , , | Comments Off

Getting started with ArangoDB and Symfony 2 – part 2

This is part 2 (of 4) of an introduction to the use of ArangoDB together with Symfony 2. You’ll find the links to the other parts of this tutorial at the end of this text. You can download the completed demo at Github. The data structure Our app deals with movies: each movie has a title, a year of release and it is assigned to a genre. Each movie deals with none, one or many topics. In a relational database we would probably create a table movie and another table topic and join them with a shared movie id. ArangoDB follows like other document stores the “aggregate model” approach: In short terms this means that you should put data that is often needed together into one document. Remember: documents are a bit like rows in the relation world; in nosql world they can have a nested structure.

Posted in API, php | Tagged , , , | Leave a comment

Getting started with ArangoDB and Symfony 2 – part 3

This is part 3 (of 4) of an introduction to the use of ArangoDB together with Symfony 2. You’ll find the links to the other parts of this tutorial at the end of this text. You can download the completed demo at Github. Working with forms The next example shows the use of ArangoDB with Symfony’s form component. This is how our form will look like. The topics are represented as a text field and the user is required to separate them by commas. This delivers questionable user experience, but leads to an interesting question: how can we transform our topics array from our movie document to a text field? And: we’ll need it at least two times, both for creating and editing movies.

Posted in API, php | Tagged , , , | Leave a comment

Getting started with ArangoDB and Symfony 2 – part 4

This is part 4 (of 4) of an introduction to the use of ArangoDB together with Symfony 2. You’ll find the links to the other parts of this tutorial at the end of this text. You can download the completed demo at Github. Extending Arangodb\Document The next thing we want to improve are all those noisy set calls in the controller: 1 2 3 4 5 6 7 8 // src/Triagens/ArangodbBundle/Controller/DefaultController.php if ($form->isValid()) { $movie = new ArangoDocument(); $movie->set("title",$form->get("title")->getData()); $movie->set("released",$form->get("released")->getData()); $movie->set("genre",$form->get("genre")->getData()); // and so on … my eyes hurt! }

Posted in API, php | Tagged , , , | 2 Comments

The API Implementors Gathering

Dear API Implementors, We want to make it simpler for you to keep up with the development of ArangoDB. We therefore created a dedicated place for all API implementors. If you are implementing a Driver, ODM or database access tool for ArangoDB, this is the right place for you. In addition to sharing information about the changing API, we want to discuss patterns and ideas with each other. The team behind ArangoDB will announce API changes and enhancements in the issues of this project, so you have one place to get all the up to date information. Apart from that, the community is independent from the ArangoDB team. We want to make this a central, open place for all API implementors. So if you want to be part of this group, just introduce yourself and we will add you to the list. Then just watch the Repository to get all information in your inbox. We already have the people behind the PHP and Ruby drivers on board. We’re looking forward to discussing with you and build a multi-programming language community around ArangoDB. So join us.

Posted in API | Tagged , | Leave a comment

ArangoDB 1.2.0 Released

We are proud to announce the release of ArangoDB 1.2.0. You can find an overview of the new features in these blog posts: New Features in ArangoDB 1.2 Simplifications in ArangoDB 1.2 API changes in ArangoDB 1.2 If you are upgrading your database from 1.1, please carefully read Upgrading to ArangoDB 1.2 The source code is available from the 1.2 branch on github, the binary packages from our download page. The new version has also been submitted to homebrew and Apple’s AppStore. Last Minute Remarks We have decided to switch the statistics functions off, by default. You can switch them on by changing the config file. The current statistics functions are now obsolescent. We want to switch to a more flexible and less time consuming implementation in 1.3.

Posted in php, Releases | Leave a comment

Feature Preview: Using NPM packages for ArangoDB

ArangoDB follows the Common.JS specification for modules. However, it would be very convenient, if there was an easy way to install a package like “underscore.js”. These package are, for instance, available using NPM. There is a draft for packages on Common.JS which seems to be compatible with NPM. NPM has a neat way of dealing with version conflicts. Basically, it allows multiple versions to exists simultaneously. For example, assume you have 4 packages A, B, C, D. A requires B and C and D, B requires C. Then directory layout might be as follows. node_modules | +- A | | | +- node_modules | | | +- B | | | | | +- node_modules | | | | | +- C (1.0.0) | | | +- C (2.0.0) | +- D Package B will see package C in version 1.0.0, while package A sees package C in version 2.0.0.

Posted in Javascript, nodejs | 4 Comments

API changes in ArangoDB 1.2

Apart from introducing several new features, the upcoming 1.2 version of ArangoDB will change a few of the existing REST API return values. The API changes were necessary to make the ArangoDB’s APIs easier to use, more robust and portable. We hope that the following list provides 3rd party client & driver maintainers with enough information to update drivers to work with ArangoDB 1.2.

Posted in API, General | Leave a comment

MRuby, JIT, and ArangoDB at RuPy 2012

@moonbeamlabs and I hold a workshop about ArangoDB and the Ruby driver Ashikawa, which will hopefully become one of the first DataMapper 2 NoSQL drivers. Currently, we are using the aequitas and virtus components of DataMapper 2. Slides of the workshop can be found on slideshare: Introduction to ArangoDB Introduction to Ashikawa I also gave a short talk about the possibilities of using MRuby in ArangoDB. In preparation for this talk, Achim did some experiments using JIT compilation of the RiteVM bytecode using LLVM. The results are consistent with result for other byte-compiled languages. You can expect a speed-up of 2 using LLVM. In order to gain larger improvements one needs type inference and optimizations to the method selection. Luckily within a context like ArangoDB one can expects to be dealing a lot with primitives types (floats and strings) and a fixed environment. So it seems plausible that one can eventually get near the performace of V8.

Posted in API, mruby, Presentation, Ruby, ruby | Leave a comment