ArangoDB – Command Line

ArangoDB – Command Line ”; Previous Next In this chapter, we will discuss how Arangosh works as the Command Line for ArangoDB. We will start by learning how to add a Database user. Note − Remember numeric keypad might not work on Arangosh. Let us assume that the user is “harry” and password is “hpwdb”. 127.0.0.1:8529@_system> require(“org/arangodb/users”).save(“harry”, “hpwdb”); Output { “user” : “harry”, “active” : true, “extra” : {}, “changePassword” : false, “code” : 201 } Print Page Previous Next Advertisements ”;

ArangoDB – Advantages

ArangoDB – Advantages ”; Previous Next Following are the advantages of using ArangoDB − Consolidation As a native multi-model database, ArangoDB eliminates the need to deploy multiple databases, and thus decreases the number of components and their maintenance. Consequently, it reduces the technology-stack complexity for the application. In addition to consolidating your overall technical needs, this simplification leads to lower total cost of ownership and increasing flexibility. Simplified Performance Scaling With applications growing over time, ArangoDB can tackle growing performance and storage needs, by independently scaling with different data models. As ArangoDB can scale both vertically and horizontally, so in case when your performance demands a decrease (a deliberate, desired slow-down), your back-end system can be easily scaled down to save on hardware as well as operational costs. Reduced Operational Complexity The decree of Polyglot Persistence is to employ the best tools for every job you undertake. Certain tasks need a document database, while others may need a graph database. As a result of working with single-model databases, it can lead to multiple operational challenges. Integrating single-model databases is a difficult job in itself. But the biggest challenge is building a large cohesive structure with data consistency and fault tolerance between separate, unrelated database systems. It may prove nearly impossible. Polyglot Persistence can be handled with a native multi-model database, as it allows to have polyglot data easily, but at the same time with data consistency on a fault tolerant system. With ArangoDB, we can use the correct data model for the complex job. Strong Data Consistency If one uses multiple single-model databases, data consistency can become an issue. These databases aren’t designed to communicate with each other, therefore some form of transaction functionality needs to be implemented to keep your data consistent between different models. Supporting ACID transactions, ArangoDB manages your different data models with a single back-end, providing strong consistency on a single instance, and atomic operations when operating in cluster mode. Fault Tolerance It is a challenge to build fault tolerant systems with many unrelated components. This challenge becomes more complex when working with clusters. Expertise is required to deploy and maintain such systems, using different technologies and/or technology stacks. Moreover, integrating multiple subsystems, designed to run independently, inflict large engineering and operational costs. As a consolidated technology stack, multi-model database presents an elegant solution. Designed to enable modern, modular architectures with different data models, ArangoDB works for cluster usage as well. Lower Total Cost of Ownership Each database technology requires ongoing maintenance, bug fixing patches, and other code changes which are provided by the vendor. Embracing a multi-model database significantly reduces the related maintenance costs simply by eliminating the number of database technologies in designing an application. Transactions Providing transactional guarantees throughout multiple machines is a real challenge, and few NoSQL databases give these guarantees. Being native multi-model, ArangoDB imposes transactions to guarantee data consistency. Print Page Previous Next Advertisements ”;

ArangoDB – Home

ArangoDB Tutorial PDF Version Quick Guide Resources Job Search Discussion Apparently, the world is becoming more and more connected. And at some point in the very near future, your kitchen bar may well be able to recommend your favorite brands of whiskey! This recommended information may come from retailers, or equally likely it can be suggested from friends on Social Networks; whatever it is, you will be able to see the benefits of using graph databases, if you like the recommendations. This tutorial explains the various aspects of ArangoDB which is a major contender in the landscape of graph databases. Starting with the basics of ArangoDB which focuses on the installation and basic concepts of ArangoDB, it gradually moves on to advanced topics such as CRUD operations and AQL. The last few chapters in this tutorial will help you understand how to deploy ArangoDB as a single instance and/or using Docker. Audience This tutorial is meant for those who are interested in learning ArangoDB as a Multimodel Database. Graph databases are spreading like wildfire across the industry and are making an impact on the development of new generation applications. So anyone who is interested in learning different aspects of ArangoDB, should go through this tutorial. Prerequisites Before proceeding with this tutorial, you should have the basic knowledge of Database, SQL, Graph Theory, and JavaScript. Print Page Previous Next Advertisements ”;

Crud Operations Using Web Interface

Crud Operations using Web Interface ”; Previous Next In our previous chapter, we learned how to perform various operations on documents with Arangosh, the command line. We will now learn how to perform the same operations using the web interface. To start with, put the following address – http://your_server_ip:8529/_db/song_collection/_admin/aardvark/index.html#login in the address bar of your browser. You will be directed to the following login page. Now, enter the username and password. If it is successful, the following screen appears. We need to make a choice for the database to work on, the _system database being the default one. Let us choose the song_collection database, and click on the green tab − Creating a Collection In this section, we will learn how to create a collection. Press the Collections tab in the navigation bar at the top. Our command line added songs collection are visible. Clicking on that will show the entries. We will now add an artists’ collection using the web interface. Collection songs which we created with Arangosh is already there. In the Name field, write artists in the New Collection dialog box that appears. Advanced options can safely be ignored and the default collection type, i.e. Document, is fine. Clicking on the Save button will finally create the collection, and now the two collections will be visible on this page. Filling Up the Newly Created Collection with Documents You will be presented with an empty collection on clicking the artists collection − To add a document, you need to click the + sign placed in the upper right corner. When you are prompted for a _key, enter Affable_Balding as the key. Now, a form will appear to add and edit the attributes of the document. There are two ways of adding attributes: Graphical and Tree. The graphical way is intuitive but slow, therefore, we will switch to the Code view, using the Tree dropdown menu to select it − To make the process easier, we have created a sample data in the JSON format, which you can copy and then paste into the query editor area − {“artist”: “Johnny Mercer”, “title”:”Affable Balding Me”, “composer”: “Robert Emmett Dolan”, “Year”: 1950} (Note: Only one pair of curly braces should be used; see the screenshot below) You can observe that we have quoted the keys and also the values in the code view mode. Now, click Save. Upon successful completion, a green flash appears on the page momentarily. How to Read Documents To read documents, go back to the Collections page. When one clicks on the artist collection, a new entry appears. How to Update Documents It is simple to edit the entries in a document; you just need to click on the row you wish to edit in the document overview. Here again the same query editor will be presented as when creating new documents. Removing Documents You can delete the documents by pressing the ‘-’ icon. Every document row has this sign at the end. It will prompt you to confirm to avoid unsafe deletion. Moreover, for a particular collection, other operations like filtering the documents, managing indexes, and importing data also exist on the Collections Overview page. In our subsequent chapter, we will discuss an important feature of the Web Interface, i.e., the AQL query Editor. Print Page Previous Next Advertisements ”;

ArangoDB – System Requirements

ArangoDB – System Requirements ”; Previous Next In this chapter, we will discuss the system requirements for ArangoDB. The system requirements for ArangoDB are as follows − A VPS Server with Ubuntu Installation RAM: 1 GB; CPU : 2.2 GHz For all the commands in this tutorial, we have used an instance of Ubuntu 16.04 (xenial) of RAM 1GB with one cpu having a processing power 2.2 GHz. And all the arangosh commands in this tutorial were tested for the ArangoDB version 3.1.27. How to Install ArangoDB? In this section, we will see how to install ArangoDB. ArangoDB comes pre-built for many operating systems and distributions. For more details, please refer to the ArangoDB documentation. As already mentioned, for this tutorial we will use Ubuntu 16.04×64. The first step is to download the public key for its repositories − # wget https://www.arangodb.com/repositories/arangodb31/ xUbuntu_16.04/Release.key Output –2017-09-03 12:13:24– https://www.arangodb.com/repositories/arangodb31/xUbuntu_16.04/Release.key Resolving https://www.arangodb.com/ (www.arangodb.com)… 104.25.1 64.21, 104.25.165.21, 2400:cb00:2048:1::6819:a415, … Connecting to https://www.arangodb.com/ (www.arangodb.com)|104.25. 164.21|:443… connected. HTTP request sent, awaiting response… 200 OK Length: 3924 (3.8K) [application/pgpkeys] Saving to: ‘Release.key’ Release.key 100%[===================>] 3.83K – .-KB/s in 0.001s 2017-09-03 12:13:25 (2.61 MB/s) – ‘Release.key’ saved [39 24/3924] The important point is that you should see the Release.key saved at the end of the output. Let us install the saved key using the following line of code − # sudo apt-key add Release.key Output OK Run the following commands to add the apt repository and update the index − # sudo apt-add-repository ”deb https://www.arangodb.com/repositories/arangodb31/xUbuntu_16.04/ /” # sudo apt-get update As a final step, we can install ArangoDB − # sudo apt-get install arangodb3 Output Reading package lists… Done Building dependency tree Reading state information… Done The following package was automatically installed and is no longer required: grub-pc-bin Use ”sudo apt autoremove” to remove it. The following NEW packages will be installed: arangodb3 0 upgraded, 1 newly installed, 0 to remove and 17 not upgraded. Need to get 55.6 MB of archives. After this operation, 343 MB of additional disk space will be used. Press Enter. Now the process of installing ArangoDB will start − Get:1 https://www.arangodb.com/repositories/arangodb31/xUbuntu_16.04 arangodb3 3.1.27 [55.6 MB] Fetched 55.6 MB in 59s (942 kB/s) Preconfiguring packages … Selecting previously unselected package arangodb3. (Reading database … 54209 files and directories currently installed.) Preparing to unpack …/arangodb3_3.1.27_amd64.deb … Unpacking arangodb3 (3.1.27) … Processing triggers for systemd (229-4ubuntu19) … Processing triggers for ureadahead (0.100.0-19) … Processing triggers for man-db (2.7.5-1) … Setting up arangodb3 (3.1.27) … Database files are up-to-date. When the installation of ArangoDB is about to complete, the following screen appears − Here, you will be asked to provide a password for the ArangoDB root user. Note it down carefully. Select the yes option when the following dialog box appears − When you click Yes as in the above dialog box, the following dialog box appears. Click Yes here. You can also check the status of ArangoDB with the following command − # sudo systemctl status arangodb3 Output arangodb3.service – LSB: arangodb Loaded: loaded (/etc/init.d/arangodb3; bad; vendor pre set: enabled) Active: active (running) since Mon 2017-09-04 05:42:35 UTC; 4min 46s ago Docs: man:systemd-sysv-generator(8) Process: 2642 ExecStart=/etc/init.d/arangodb3 start (code = exited, status = 0/SUC Tasks: 22 Memory: 158.6M CPU: 3.117s CGroup: /system.slice/arangodb3.service ├─2689 /usr/sbin/arangod –uid arangodb –gid arangodb –pid-file /va └─2690 /usr/sbin/arangod –uid arangodb –gid arangodb –pid-file /va Sep 04 05:42:33 ubuntu-512 systemd[1]: Starting LSB: arangodb… Sep 04 05:42:33 ubuntu-512 arangodb3[2642]: * Starting arango database server a Sep 04 05:42:35 ubuntu-512 arangodb3[2642]: {startup} starting up in daemon mode Sep 04 05:42:35 ubuntu-512 arangodb3[2642]: changed working directory for child Sep 04 05:42:35 ubuntu-512 arangodb3[2642]: …done. Sep 04 05:42:35 ubuntu-512 systemd[1]: StartedLSB: arang odb. Sep 04 05:46:59 ubuntu-512 systemd[1]: Started LSB: arangodb. lines 1-19/19 (END) ArangoDB is now ready to be used. To invoke the arangosh terminal, type the following command in the terminal − # arangosh Output Please specify a password: Supply the root password created at the time of installation − _ __ _ _ __ __ _ _ __ __ _ ___ | | / | ”__/ _ | ’ / ` |/ _ / | ’ | (| | | | (| | | | | (| | () _ | | | _,|| _,|| ||_, |_/|/| || |__/ arangosh (ArangoDB 3.1.27 [linux] 64bit, using VPack 0.1.30, ICU 54.1, V8 5.0.71.39, OpenSSL 1.0.2g 1 Mar 2016) Copyright (c) ArangoDB GmbH Pretty printing values. Connected to ArangoDB ”http+tcp://127.0.0.1:8529” version: 3.1.27 [server], database: ”_system”, username: ”root” Please note that a new minor version ”3.2.2” is available Type ”tutorial” for a tutorial or ”help” to see common examples 127.0.0.1:8529@_system> exit To log out from ArangoDB, type the following command − 127.0.0.1:8529@_system> exit Output Uf wiederluege! Na shledanou! Auf Wiedersehen! Bye Bye! Adiau! ¡Hasta luego! Εις το επανιδείν! להתראות ! Arrivederci! Tot ziens! Adjö! Au revoir! さようなら До свидания! Até Breve! !خداحافظ Print Page Previous Next Advertisements ”;

ArangoDB – Quick Guide

ArangoDB – Quick Guide ”; Previous Next ArangoDB – A Multi-Model First Database 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. Moreover, different models can be combined in a single query. And, owing to its multi-model style, one can make lean applications, which will be scalable horizontally with any or all of the three data models. Layered vs. Native Multi-Model Databases In this section, we will highlight a crucial difference between native and layered multimodel databases. Many database vendors call their product “multi-model,” but adding a graph layer to a key/value or document store does not qualify as native multi-model. With ArangoDB, the same core with the same query language, one can club together different data models and features in a single query, as we have already stated in previous section. In ArangoDB, there is no “switching” between data models, and there is no shifting of data from A to B to execute queries. It leads to performance advantages to ArangoDB in comparison to the “layered” approaches. The Need for Multimodal Database Interpreting the [Fowler’s] basic idea leads us to realize the benefits of using a variety of appropriate data models for different parts of the persistence layer, the layer being part of the larger software architecture. According to this, one might, for example, use a relational database to persist structured, tabular data; a document store for unstructured, object-like data; a key/value store for a hash table; and a graph database for highly linked referential data. However, traditional implementation of this approach will lead one to use multiple databases in the same project. It can lead to some operational friction (more complicated deployment, more frequent upgrades) as well as data consistency and duplication issues. The next challenge after unifying the data for the three data models, is to devise and implement a common query language that can allow data administrators to express a variety of queries, such as document queries, key/value lookups, graphy queries, and arbitrary combinations of these. By graphy queries, we mean queries involving graph-theoretic considerations. In particular, these may involve the particular connectivity features coming from the edges. For example, ShortestPath, GraphTraversal, and Neighbors. Graphs are a perfect fit as data model for relations. In many real-world cases such as social network, recommendor system, etc., a very natural data model is a graph. It captures relations and can hold label information with each edge and with each vertex. Further, JSON documents are a natural fit to store this type of vertex and edge data. ArangoDB ─ Features There are various notable features of ArangoDB. We will highlight the prominent features below − Multi-model Paradigm ACID Properties HTTP API ArangoDB supports all popular database models. Following are a few models supported by ArangoDB − Document model Key/Value model Graph model A single query language is enough to retrieve data out of the database The four properties Atomicity, Consistency, Isolation, and Durability (ACID) describe the guarantees of database transactions. ArangoDB supports ACID-compliant transactions. ArangoDB allows clients, such as browsers, to interact with the database with HTTP API, the API being resource-oriented and extendable with JavaScript. ArangoDB – Advantages Following are the advantages of using ArangoDB − Consolidation As a native multi-model database, ArangoDB eliminates the need to deploy multiple databases, and thus decreases the number of components and their maintenance. Consequently, it reduces the technology-stack complexity for the application. In addition to consolidating your overall technical needs, this simplification leads to lower total cost of ownership and increasing flexibility. Simplified Performance Scaling With applications growing over time, ArangoDB can tackle growing performance and storage needs, by independently scaling with different data models. As ArangoDB can scale both vertically and horizontally, so in case when your performance demands a decrease (a deliberate, desired slow-down), your back-end system can be easily scaled down to save on hardware as well as operational costs. Reduced Operational Complexity The decree of Polyglot Persistence is to employ the best tools for every job you undertake. Certain tasks need a document database, while others may need a graph database. As a result of working with single-model databases, it can lead to multiple operational challenges. Integrating single-model databases is a difficult job in itself. But the biggest challenge is building a large cohesive structure with data consistency and fault tolerance between separate, unrelated database systems. It may prove nearly impossible. Polyglot Persistence can be handled with a native multi-model database, as it allows to have polyglot data easily, but at the same time with data consistency on a fault tolerant system. With ArangoDB, we can use the correct data model for the complex job. Strong Data Consistency If one uses multiple single-model databases, data consistency can become an issue. These databases aren’t designed to communicate with each other, therefore some form of transaction functionality needs to be implemented to keep your data consistent between different models. Supporting ACID transactions, ArangoDB manages your different data models with a single back-end, providing strong consistency on a single instance, and atomic operations when operating in cluster mode. Fault Tolerance It is a challenge to build fault tolerant systems with many unrelated components. This challenge becomes more complex when working with clusters. Expertise is required to deploy and maintain such systems, using different technologies and/or technology stacks. Moreover, integrating multiple subsystems, designed to run independently, inflict large engineering and operational costs. As a consolidated technology stack, multi-model database presents an elegant solution. Designed to enable modern, modular architectures with different data models, ArangoDB works for cluster usage as well. Lower Total Cost of Ownership Each database technology requires ongoing maintenance, bug fixing patches, and other code changes which are provided by the vendor. Embracing a multi-model database significantly reduces the related maintenance costs simply by eliminating the number

Data Models & Modeling

ArangoDB – Data Models and Modeling ”; Previous Next In this chapter, we will focus on the following topics − Database Interaction Data Model Data Retrieval ArangoDB supports document based data model as well as graph based data model. Let us first describe the document based data model. ArangoDB”s documents closely resemble the JSON format. Zero or more attributes are contained in a document, and a value attached with each attribute. A value is either of an atomic type, such as a number, Boolean or null, literal string, or of a compound data type, such as embedded document/object or an array. Arrays or sub-objects may consist of these data types, which implies that a single document can represent non-trivial data structures. Further in hierarchy, documents are arranged into collections, which may contain no documents (in theory) or more than one document. One can compare documents to rows and collections to tables (Here tables and rows refer to those of relational database management systems – RDBMS). But, in RDBMS, defining columns is a prerequisite to store records into a table, calling these definitions schemas. However, as a novel feature, ArangoDB is schema-less – there is no a priori reason to specify what attributes the document will have. And unlike RDBMS, each document can be structured in a completely different way from another document. These documents can be saved together in one single collection. Practically, common characteristics may exist among documents in the collection, however the database system, i.e., ArangoDB itself, does not bind you to a particular data structure. Now we will try to understand ArangoDB”s [graph data model], which requires two kinds of collections — the first is the document collections (known as vertices collections in group-theoretic language), the second is the edge collections. There is a subtle difference between these two types. Edge collections also store documents, but they are characterized by including two unique attributes, _from and _to for creating relations between documents. In practice, a document (read edge) links two documents (read vertices), both stored in their respective collections. This architecture is derived from the graph-theoretic concept of a labeled, directed graph, excluding edges that can have not only labels, but can be a complete JSON like document in itself. To compute fresh data, delete documents or to manipulate them, queries are used, which select or filter documents as per the given criteria. Either being simple as an “example query” or being as complex as “joins”, queries are coded in AQL – ArangoDB Query Language. Print Page Previous Next Advertisements ”;