Agile development vs. schema enforcement – a paradox resolved

The fans of modern and agile software development usually propose to use schemaless database engines to allow for greater flexibility, in particular during the early rapid prototyping phase of IT projects. The more traditionally minded insist that having a strict schema that is enforced by the persistence layer throughout the lifetime of a project is necessary to ensure quality and security.
schema_enforcement
In this post I would like to explain briefly, why I believe that both groups are completely right and why this is not so paradoxical as it sounds at first glance. (more…)

More info...

Foxx console – Logging and querying console messages

Aside from the more noticeable features, ArangoDB 2.5 also added the console object to the scope of all Foxx app modules. Unlike the object already available by importing the console module, the Foxx console logs all messages directly to the database.

In addition to allowing you to specify per-application log levels to make sure your debug messages don’t end up cluttering your production database, the API also provides useful extras like optionally logging a full stack trace for every message that is stored as a structured list of objects, making them easy to query using AQL. There’s also a number of convenience methods for querying your application’s log entries from within your Foxx code if you prefer keeping it simple.

console.time('do something');
// ... more code ...
console.time('do more stuff');
// ... even more code ...
console.timeEnd('do more stuff'); // => "do more stuff: 23ms"
// ... a little bit more ....
console.timeEnd('do something'); // => "do something: 52ms"

For more information see the chapter on the Foxx console API in the official ArangoDB documentation.

More info...

ArangoDB V 2.4.5: Introducing Slow Query Tracking

This version is deprecated. Download the new version of ArangoDB

ArangoDB 2.4.5 is ready to download. The latest release of the 2.4 branch comes with some minor bugfixes and a new feature:

Tracking of AQL queries

We have added current and slow query tracking and also killing of long running AQL queries.

This change enables retrieving the list of currently running AQL queries inside the selected database. AQL queries with an execution time beyond a certain threshold can be moved to a slow query facility and retrieved from there:

slow_query (more…)

More info...

ArangoDB 2.5 Release: Enhanced Features & Performance

This version is deprecated. Download the new version of ArangoDB

We are proud to announce the latest release of ArangoDB, adding a bunch of new features and lot’s of improvements to existing ones. ArangoDB 2.5 is available for download now and could be installed from your favourite package manager.

See the previous blogposts on sparse indexes performance, ES6 features in ArangoDB, improved Foxx development process or API Key management to learn more about ArangoDB 2.5 and check the manual for a deeper dive into specific features.

The AWS image of ArangoDB 2.5 will be available shortly.

Please give ArangoDB 2.5 a try and provide us with your valuable feedback.

(more…)

More info...

Git Commit Analysis with ArangoDB: Insightful Data Exploration

I often find myself searching for certain commits using git log and friends. While I really love the power and flexibility that come with the git and other Unix command-line tools, sometimes it can be more convenient to use a database to filter and aggregate commit data.

I gave it a quick try yesterday and imported the commit history of ArangoDB’s Git repository into ArangoDB and ran some queries on the data.

// retrieving number of commits per month / year
query = 'FOR commit IN commits 
           COLLECT year = DATE_YEAR(commit.date), month = DATE_MONTH(commit.date) 
           WITH COUNT INTO count 
         RETURN { month: CONCAT(year, "/", month), count: count }';
db._query(query).toArray();

While the query results for our repository may not be interesting for everyone, I think it is still worth sharing what I did. Even though I didn’t try it, I think the overall procedure is applicable with any other Git repository.

More queries and how to convert and import Git commits in ArangoDB: Read on in Jan’s Blog

More info...

Monitoring ArangoDB and individual Foxx Apps with collectd

collectd_logo

Great to know your database scales and database vendors like ArangoDB add some statistics on node / cluster health directly in their products.

But running a bunch of different servers and applications you need a central hub to collect monitoring data from all services running. In a series of recipes Willi shows how you could easily add monitoring capabilities to NoSQL databases like ArangoDB using collectd with the cURL JSON plugin. (more…)

More info...

Securing your Foxx with API Keys

ArangoDB’s Foxx allows you to easily build an API to access your data sources. But now this API is either public or restricted to users having an account, but those still get unlimited access.

In many use cases you do not want to expose your data in this fashion, but you want to expose it with a more controllable access pattern and want to restrict the requests one user could issue in a certain time period. Popular examples for these API restrictions are Twitter or Facebook. This allows you to offer all of your data but only in limited chunks, and then possibly charge your customers to increase the chunk limit they can request.

All this is done via API keys, which are bound to a user and has become a common pattern to monetize the data you have collected. (more…)

More info...

ArangoDB 2.5 – Improved Foxx Development Process

This version is deprecated. Download the new version of ArangoDB

Version 2.5 of ArangoDB makes the development of Foxx based apps a lot easier.

For each of your Foxx apps you could activate the development mode individually, forcing a reread from disk at every request, and providing additional debug output. Set the development mode for an app doesn’t change the mount-point anymore. The Foxx source location on your filesystem is now identical with the mount-point of your app. (more…)

More info...

Enhanced AQL in ArangoDB 2.5: Improved Query Capabilities

Contained in 2.5 are some small but useful AQL language improvements plus several AQL optimizer improvements.

We are working on further AQL improvements for 2.5, but work is still ongoing. This post summarizes the improvements that are already completed and will be shipped with the initial ArangoDB 2.5 release.

(more…)

More info...

Exploring More ES6 Features: ArangoDB Insights

ArangoDB 2.5 comes with an upgraded version of V8, Google’s open source JavaScript engine.

The built-in version of V8 has been upgraded from 3.29.54 to 3.31.74.1.

In addition to several already usable ES6 features (detailed in this blog, the following ES6 features are activated in ArangoDB 2.5 by default:

  • iterators and generators
  • template strings
  • enhanced object literals
  • enhanced numeric literals
  • block scoping with let and constant variables using const
  • additional String methods (such as startsWith, repeat etc.)

The above features are available in ArangoDB 2.5, and can now be used for scripting purposes in the ArangoShell and in server-side Foxx actions inside the database.

This blog post briefly explains the features provides some quick examples for using them.

Read more on Jan’s Blog

More info...

Get the latest tutorials,
blog posts and news: