Setting Up Test Data: ArangoDB Tutorial & Best Practices
Today I was asked to look at code that was supposed to read data from a MySQL data source, process it and then import it into ArangoDB.
To run and debug the code I had to have some MySQL data source. So I thought I’d quickly set up a simple example table with a few rows. It turned out that this took more time than what I had expected.
Maybe I’m spoilt by JavaScript-enabled, schema-free databases where creating such test setups is so much easier.
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?
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.
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…)
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.
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
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.
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.
If you want to continue with other JavaScript related resources, you should start with ArangoDB NoSQL and JavaScript.
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
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