ArangoDB is an open-source multi-model NoSQL database with a flexible data model for documents and graphs. It is designed as a “general purpose database,” offering all the features typically needed for modern web apps. It supports graph, document, and key-value data models allowing users to freely combine all data models in a single query. As applications become increasingly complex, you often need more than one NoSQL database. Using a multi-model database can simplify your architecture by combining several NoSQL types in a single infrastructure.
ArangoDB has been referred to as a universal database but its creators refer to it as a "native multi-model" database to indicate that it was designed specifically to allow key/value, document, and graph data to be stored together and queried with a common language.
Connecting to a server. By default arangosh will try to connect to an ArangoDB server running on server localhost on port 8529. It will use the username root and an empty password by default. Additionally it will connect to the default database (_system).
The ArangoDB Query Language (AQL) is similar to the Structured Query Language (SQL) in its purpose. Both support reading and modifying collection data, however AQL does not support data definition operations, such as creating and dropping databases, collections and indexes.
NoSQL databases
ArangoDB is hailed as a native multi-model database by its developers. This is unlike other NoSQL databases. In this database, the data can be stored as documents, key/value pairs or graphs. And with a single declarative query language, any or all of your data can be accessed.
Additionally, ArangoDB performs very well and is very easy to use as an operational database for applications. Implementation was easy, support is exemplary, rich feature set with high performance. Technical support is exemplary.
The processor(s) must support the SSE 4.2 and AVX instruction sets (Intel Sandy Bridge or better, AMD Bulldozer or better, etc.) We provide a single package containing the server and the client tools. For a standard server setup, download the Server package and run the NSIS installer.
Benchmarks continue to show competitive to superior performance in ArangoDB over single-model databases, like MongoDB, Neo4j and PostgreSQL, as well as other multi-model databases, like OrientDB.
ArangoDB stores documents in collections. The collection data is persisted on disk so it does not get lost in case of a server restart. When a collection gets created (either explicitly or by inserting the first document into it), a separate directory is created for the collection on disk.
ArangoDB comes with a set of easily graspable graphs that are used to demonstrate the APIs. You can use the add samples tab in the create graph window in the web interface, or load the module @arangodb/graph-examples/example-graph in arangosh and use it to create instances of these graphs in your ArangoDB.
By this approach combined with the edge index, ArangoDB is one of the few graph databases capable of horizontal scaling. Each edge and vertex can contain complex data in the form of nested properties, and all graph functions are deeply integrated into the ArangoDB Query Language, (AQL).
ArangoDB is a mostly-memory database, which means it needs the working set to fit into the main memory to perform well.
A multi-model database is a management system that combines multiple database types with a single backend. Most database management systems support only a single database model. On the other hand, multi-model databases store, query, and index data from different models.
The most notable difference between the two is that graph databases store the relationships between data as data. Relational databases infer a focus on relationships between data but in a different way. The relational focus is between the columns of data tables, not data points.
Graph databases are purpose-built to store and navigate relationships. Relationships are first-class citizens in graph databases, and most of the value of graph databases is derived from these relationships. Graph databases use nodes to store data entities, and edges to store relationships between entities.
Indexes allow fast access to documents, provided the indexed attribute(s) are used in a query. While ArangoDB automatically indexes some system attributes, users are free to create extra indexes on non-system attributes of documents. User-defined indexes can be created on collection level.
All collections in ArangoDB have a unique identifier and a unique name. The namespace for collections is shared with views, so there cannot exist a collection and a view with the same name in the same database. ArangoDB internally uses the collection's unique identifier to look up collections.
From the user perspective there are no schemas in ArangoDB: there is no way to create or alter the schema of a collection at all. Instead, ArangoDB will use the attribute names and data types contained in the JSON data of each document. All of this happens automatically.
They report that as overall the in-memory database Redis provides the best performance. Also, they report that column family databases Cassandra and HBase showed good update performance since they are optimized for update operations.