Tag Archives: introduction

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

Querying documents and graphs in one database with AQL – easily

Note: The following article was originally written as an answer in ArangoDB google group. It may help other people to understand the scope of ArangoDB and/or AQL, so we posted it here as well. AQL, the query language, provides access to the data which is stored inside collections. The collections contain documents, identified by unique keys.

Posted in General | Tagged , | 1 Comment

Comparing ArangoDB with CouchDB and MongoDB

The folks over at MongoDB have an article on their site on Comparing MongoDB and CouchDB. They write: “We are getting a lot of questions “how are mongo db and couch different?” It’s a good question: both are document-oriented databases with schemaless JSON-style object data storage. Both products have their place — we are big believers that databases are specializing and “one size fits all” no longer applies.” The same applies to ArangoDB, we meet a lot of people especially developers using MongoDB who are interested in ArangoDB and ask us how it is different than other popular nosql databases. In this article we would like to add our answers to the questions asked.

Posted in General | Tagged , | Leave a comment

Infographic – comparing the disk space usage of MongoDB, CouchDB and ArangoDB

As a follow-up of Jan’s blog post we have extracted some central figures and created this infographic for your reference.

Posted in Performance | Tagged | 1 Comment

AQL: Querying a nosql database the elegant & comfortable way

Having a long history with relational databases and having worked for a lot of years with SQL some people find it a bit inconvenient querying nosql databases e.g. via REST. Others have rather complex data models and need nevertheless an elegant and convenient way for querying. And we all love clean and simple interfaces. ArangoDB comes with a couple of options for querying the data, among offer it implements the “ArangoDB Query Language” (AQL). AQL is a declarative query language for simple and also very complex queries. Unless like in other nosql databases you can also query across collections, aggregate results, do some geo location stuff and even iterate over graphs. So if you like the comfort of SQL but also the freedom of a schema free database, AQL is for you. If you are interested in learning more about the concepts of ArangoDB checkout Jan’s talk and slides. But let’s stop beating around the bush and rather have a look at specific examples.

Posted in Query Language | Tagged | 2 Comments

ArangoDB’s design objectives

Before we started programming the new open source NoSQL database, we reflected which design objectives to achieve or to drop. This article summarizes our considerations. In a nutshell: Schema-free schemas with shapes: Inherent structures at hand are automatically recognized and subsequently optimized. Querying: ArangoDB is able to accomplish complex operations on the provided data (query-by-example and query-language). Application Server: ArangoDB is able to act as application server on Javascript-devised routines. Mostly memory/durability: ArangoDB is memory-based including frequent file system synchronizing. AppendOnly/MVCC: Updates generate new versions of a document; automatic garbage collection. ArangoDB is multi-threaded. No indices on file: Only raw data is written on hard disk. ArangoDB supports single nodes and small, homogenous clusters with zero administration.

Posted in Architecture | Tagged | 3 Comments