Prepare your answers… ArangoDB at NYC Database-Month on 11/11

There is a warm-up routine on every evening at the NYC Database Month. Speakers ask trivia questions to the auditorium, related to the topic of the following talk. The first correct answer wins some “swag”. On Tuesday, Nov. 11, 2014 Max from ArangoDB will talk about Polyglot Persistence and multi-model NoSQL databases.

To get a competitive advantage, here are some questions Max might ask:

Q: What does the term Polyglot Persistence mean?
A: Use a variety of different data storage technologies for different kinds of data. (src: Martin Fowler)

Q: What types on NoSQL data-/ storage-models does ArangoDB support?
A: key/values, documents, graphs

Q: NoSQL often comes with restrictions – which of the following features are missing in ArangoDB: joins, transactions, ACID guarantees?
A: none. (ArangoDB even scales and provides competitive performance)

If you are around NYC, let’s grab a seat and watch Max on stage: http://www.databasemonth.com/database/polyglot-persistence

Can’t be there? Then here’s your chance. Be the first to answer the following question in the comments below and get a new ArangoDB t-shirt:

Q: How many different programming languages are supported by ArangoDB?

More info...

First Beta of ArangoDB 2.3: Explore New Features | ArangoDB Blog

This version is deprecated. Download the new version of ArangoDB

We are proud to present ArangoDB 2.3. The first beta version is now available for download from our web-site or you can use “brew install –unstable arangodb” under Mac OS X. You can also look into the nightly documentation for more information.

Please note that the main feature of this release contains a complete rewrite of the query engine, allowing much more optimizations than before – especially in the cluster case. It would be very helpful for us, if you could test this query engine as much as possible. If you find any unexpected behavior, please let us know.

The data-files can be upgraded from 2.x to 2.3. You should, however, backup the database directory beforehand, as this is a beta-release.

Features and improvements

The following list shows in detail which features have been added or improved in ArangoDB 2.3. ArangoDB 2.3 also contains several bug-fixes that are not listed here.

(more…)

More info...

FullStack London

I recently had the chance to visit FullStack London, a well organized conference. Thanks a lot to Skills Matter. FullStack was opened by Douglas Crockford about “The Better Parts” of ES6. I cannot wait to start using them. Douglas was followed by Isaac Schlueter talking about open source in companies. Although this talk was not technical I learned a lot and it was very inspiring.

The remainder of the conference was all about using JavaScript mostly on server-side using Node.js or in robotics. As robotics is not my kind of topic I visited the talks about server-side JS. They confirmed my impression where JS development is heading to: Microservices. (more…)

More info...

Set Up Bash Completion for ArangoDB: Step-by-Step Guide

I was interested in how bash auto-completion works and how to write a custom completer. After about an hour of work, I came up with a solution that at least seems to work on Ubuntu. I now have auto-completion for ArangoDB and all its client tools!

The problem

I use the command-line for almost everything, including starting and stopping ArangoDB and its client tools. They provide lots of options which I cannot completely memorize.

The bash solution for “I don’t know what I am looking for” is to press the TAB key. This will bring up a list of suggestions for how to complete the currently entered word. I thought using the same thing for ArangoDB’s command-line options would be nice, too.

Read more on Jan’s Blog

More info...

ArangoDB 2.2.6 Release: Enhancements & Bug Fixes

This version is deprecated. Download the new version of ArangoDB

A maintenance release for ArangoDB 2.2 is available from the usual channels. v2.2.6 (2014-10-20)
* fixed issue #972: Compilation Issue
* fixed issue #743: temporary directories are now unique and one can read off the tool that created them, if empty, they are removed atexit
* Highly improved performance of all AQL GRAPH_* functions.
* Orphan collections in general graphs can now be found via GRAPH_VERTICES if either “any” or no direction is defined
* Fixed documentation for AQL function GRAPH_NEIGHBORS. The option “vertexCollectionRestriction” is meant to filter the target vertices only, and should not filter the path.
* Fixed a bug in GRAPH_NEIGHBORS which enforced only empty results under certain conditions

More info...

Compile ArangoDB Source: Step-by-Step Guide | ArangoDB Blog

Though we provide a lot of pre-built packages for the stable versions of ArangoDB here, it is often more interesting to play with the bleeding edge development version. New ArangoDB features are normally added to the devel branch, where they can be tested, documented and improved. When a feature matures, it is either backported to a stable branch or will eventually be released when the next stable branch is forked from devel.

Contributing to the core of ArangoDB is also much easier with a ready-to-go devel version. This post explains how to set one up from scratch.

Read more on Jan’s Blog

More info...

Handling Binary Data in Foxx: ArangoDB Tutorial

Handling binary data in JavaScript applications is a bit tricky because JavaScript does not provide a data type for binary data. This post explains how to use binary data in JavaScript actions written using ArangoDB’s Foxx.

String vs. binary data

Internally, JavaScript strings are sequences of 16 bit integer values. Furthermore, the ECMAScript standard requires that a JavaScript implementation should interpret characters in conformance with the Unicode standard, using either UCS-2 or UTF-16 encoding.

While this is fine for handling natural language, it becomes problematic when trying to work with arbitrary binary data. Binary data cannot be used safely in a JavaScript string because it may not be valid UTF-16 data.

Read more on Jan’s Blog

If you want to continue with other JavaScript related resources, you should start with ArangoDB NoSQL and JavaScript.

More info...

ArangoDB 2.2.5 Release: Enhancements & Bug Fixes

This version is deprecated. Download the new version of ArangoDB

A maintenance release for ArangoDB 2.2 is available from the usual channels. v2.2.5 (2014-10-09) ——————-
* fixed issue #961: allow non-JSON values in undocument request bodies
* fixed issue 1028: libicu is now statically linked
* fixed cached lookups of collections on the server, which may have caused spurious   problems after collection rename operations

More info...

ArangoDB 2.2.4 Release: Enhancements & Bug Fixes

This version is deprecated. Download the new version of ArangoDB

A maintenance release for ArangoDB 2.2 is available from the usual channels. v2.2.4 (2014-10-01) ——————-
* fixed accessing `_from` and `_to` attributes in `collection.byExample` and   `collection.firstExample`   These internal attributes were not handled properly in the mentioned functions, so   searching for them did not always produce documents
* fixed issue #1030: arangoimp 2.2.3 crashing, not logging on large Windows CSV file
* fixed issue #1025: Traversal not as expected in undirected graph
* fixed issue #1020   This requires re-introducing the startup option `–database.force-sync-properties`.   This option can again be used to force fsyncs of collection, index and database properties   stored as JSON strings on disk in files named `parameter.json`. Syncing these files after   a write may be necessary if the underlying storage does not sync file contents by itself   in a “sensible” amount of time after a file has been written and closed.   The default value is `true` so collection, index and database properties will always be   synced to disk immediately. This affects creating, renaming and dropping collections as   well as creating and dropping databases and indexes. Each of these operations will perform   an additional fsync on the `parameter.json` file if the option is set to `true`.   It might be sensible to set this option to `false` for workloads that create and drop a   lot of collections (e.g. test runs).   Document operations such as creating, updating and dropping documents are not affected   by this option.
* fixed issue #1016: AQL editor bug
* fixed issue #1014: WITHIN function returns wrong distance
* fixed AQL shortest path calculation in function `GRAPH_SHORTEST_PATH` to return   complete vertex objects instead of just vertex ids
* allow changing of attributes of documents stored in server-side JavaScript variables   Previously, the following did not work:

      var doc = db.collection.document(key);
      doc._key = "abc"; // overwriting internal attributes not supported
      doc.value = 123;  // overwriting existing attributes not supported 

Now, modifying documents stored in server-side variables (e.g. `doc` in the above case)   is supported. Modifying the variables will not update the documents in the database,   but will modify the JavaScript object (which can be written back to the database using   `db.collection.update` or `db.collection.replace`)

  • fixed issue #997: arangoimp apparently doesn’t support files >2gig on Windows   large file support (requires using `_stat64` instead of `stat`) is now supported on   Windows
More info...

ArangoDB 2.2.3 Release: Enhancements & Bug Fixes

This version is deprecated. Download the new version of ArangoDB

A maintenance release for ArangoDB 2.2 is available from the usual channels. v2.2.3 (2014-09-02) ——————-
* added `around` for Foxx controller
* added `type` option for HTTP API `GET /_api/document?collection=…` This allows controlling the type of results to be returned. By default, paths to documents will be returned, e.g.

[
        `/_api/document/test/mykey1`,
        `/_api/document/test/mykey2`,
        ...
      ]

To return a list of document ids instead of paths, the `type` URL parameter can be set to `id`:

    <pre>[
    `test/mykey1`,
    `test/mykey2`,
    ...
  ]

To return a list of document keys only, the `type` URL parameter can be set to `key`:

    <pre>[
    `mykey1`,
    `mykey2`,
    ...
  ]
*   properly capitalize HTTP response header field names in case the \`x-arango-async\` HTTP header was used in a request.
*   fixed several documentation issues
*   speedup for several general-graph functions, AQL functions starting with \`GRAPH_\` and traversals</ul>
More info...

Get the latest tutorials,
blog posts and news: