ArangoDB, database for undecided
This amazing software, suitable for production use, allows you to store data in documents, graphs, key-value forms, etc.
It is ideal for a new company or department where it is difficult to predict the best storage and access model in the long term.
The database and index are stored in memory. The data is duplicated on the hard disk, but the index must be rebuilt when the system reboots because it exists only in memory.
This is free software under the Apache license.

ArangoDB does not support the following models:
- Relational.
Data is stored in rows and columns of tables. The string usually corresponds to a product, event, customer, etc. The columns correspond to attributes such as each customer's name, address, and phone number. Adding, deleting, or modifying a row is very fast; changing columns is more difficult because all existing rows must be updated or the query results will be undefined. - NoSQL Tables.
This model was created for cases where columns and rows need to be changed as often as rows. Take the case of the airline, for example. In its database, each row includes a flight number, aircraft, pilot and passengers. The number of columns depends on each row. It is easy to modify flight elements or change passengers. See NoSQL for details.
ArangoDB supports the following NoSQL models:
- Document.
The database structure is not defined in the tables; it is in the documents that are stored. The user enters all information associated with an object, such as a product, in each document. This document is stored as is in the database. Documents have the same structure, although the content may differ, and are encoded in JSON (other software uses XML or another format).
The same queries can be executed as for a relational database, but operations must be defined in scripts.
- Plot.
And here there are no more tables in the database; data is stored in nodes linked by relationships representing relationships between objects in the real world. - Key/Value
This storage type, identical to the associative array type (recursive or not), is very fast to access. For example, the URL and corresponding page may be stored in each row. This is a smaller version of the relational database, but it has all functional attributes such as replication, combinatorial queries, etc.
These models do not coexist in the same ArangoDB database; each resides in a separate database. However, they can be organized into clusters without any additional management operations, and queries can be executed on all clusters as if they were a single database.
To execute queries for all three models, the system has its own AQL (Arango Query Language). The syntax falls somewhere between SQL and procedural language, allowing data to be included in the JSON format.
The result of each query is an associative array.
We see that ArangoDB-based storage offers more freedom when it comes to content that can be stored. Not only can it combine different storage models, but the document model itself allows you to scale the content type as desired, provided you add scripts to access it.
The ArangoDB website provides more information about the software specifications. It is worth noting that this is stable software used in production by many companies. And it's free.