ArangoDB is a multi-model mostly-memory database with a flexible data model for documents and graphs. It allows users to specify either multi-collections transactions for ACID properties or standard single-document transactions for performance boosting. The whole software is under the Apache 2.0 license.[04]
- Website
- https://arango.ai[01]
- Source Code
- https://github.com/arangodb/arangodb[02]
- Developer
- Country of Origin
- DE
- Start Year
- 2011
- Former Name
- AvocadoDB
- Project Types
- Commercial, Open Source
- Supported Languages
- JavaScript, SQL
- Operating System
- Linux
- License
- Apache v2
ArangoDB is a multi-model mostly-memory database with a flexible data model for documents and graphs. It allows users to specify either multi-collections transactions for ACID properties or standard single-document transactions for performance boosting. The whole software is under the Apache 2.0 license.[04]
History[01][02][04]
ArangoDB was ready to be used in production since version 1.0 released in spring 2012. The current version is 3.4.0. ArangoDB is original named AvocadoDB. The name is change to ArangoDB in may, 2012.
Concurrency Control[05]
The user need to specify which collections a transaction needs to read/write. ArangoDB will first collect all the locks in alphabetical order of the collection names at the beginning of each transaction, and release the locks in reverse order after the transaction finishes. In case there is a deadlock, ArangoDB will automatically abort one of the transactions, roll back the changes, and throw error 29 (deadlock detected) to the client.
Data Model[05]
In ArangoDB, a document collection always has a primary key _key. Therefore, without specifying any secondary index, it is just like a key-value store. Generally, there can be multiple attributes and multiple secondary indexes, then it is like a common document store. By default, the sharding key is the same as the primary key _key. Therefore it can achieve good linear scalability. Besides key-value store and document store, ArangoDB can also support graph store with comprehensive functionalities.
Indexes[06]
By default, the index of a document is a hash index on its _key attribute. At the same time, user can specify other indexes including skip list, fulltext index, persistent index, geo-spatial Index etc.
Logging[07][05]
ArangoDB does not overwrite existing documents. Instead, it create a new version of modified documents for all the write operations (including delete operation). ArangoDB's Write-Ahead-Logging records all these write operations that were executed on the server.
Query Interface[08]
ArangoDB has its own query language ArangoDB query language (AQL). AQL queries can be invoked using Arangosh (ArangoDB Shell), web interface, or HTTP REST API.
Storage Architecture[01][04]
ArangoDB is a mostly-memory database. There are two storage engines available. The default one is called MMFiles which is based on memory-mapped files. The other available option is RocksDB.
Stored Procedures[05]
ArangoDB allows users to define their own User Defined Functions (UDFs). Users can also use the Foxx microservice framework to build their own logic into a microservice inside the database and able to access data it needs. This can achieve the same functionalities of stored procedures.
Citations
8 sources- Arango Contextual Data Platform arango.ai
- GitHub - arangodb/arangodb: 🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. · GitHub github.com
- ArangoDB - Wikipedia wikipedia.org
- https://www.arangodb.com/documentation/faq arangodb.com
- Arango Documentation arango.ai
- https://docs.arangodb.com/3.3/Manual/Indexing/IndexBasics.html arangodb.com
- https://docs.arangodb.com/3.3/Manual/Architecture/WriteAheadLog.html arangodb.com
- https://docs.arangodb.com/3.2/AQL/Invocation arangodb.com