diff --git a/Documentation/Books/Manual/Appendix/References/CollectionObject.mdpp b/Documentation/Books/Manual/Appendix/References/CollectionObject.mdpp index e5badf51b5..29383fa479 100644 --- a/Documentation/Books/Manual/Appendix/References/CollectionObject.mdpp +++ b/Documentation/Books/Manual/Appendix/References/CollectionObject.mdpp @@ -32,13 +32,14 @@ The following methods exist on the collection object (returned by *db.name*): * [collection.closedRange(attribute, left, right)](../../DataModeling/Documents/DocumentMethods.md#closed-range) * [collection.document(object)](../../DataModeling/Documents/DocumentMethods.md#document) * [collection.documents(keys)](../../DataModeling/Documents/DocumentMethods.md#lookup-by-keys) -* [collection.edges(vertex-id)](../../DataModeling/Documents/DocumentMethods.md#misc) +* [collection.edges(vertex-id)](../../DataModeling/Documents/DocumentMethods.md#edges) * [collection.exists(object)](../../DataModeling/Documents/DocumentMethods.md#exists) * [collection.firstExample(example)](../../DataModeling/Documents/DocumentMethods.md#first-example) -* [collection.inEdges(vertex-id)](../../DataModeling/Documents/DocumentMethods.md#misc) +* [collection.inEdges(vertex-id)](../../DataModeling/Documents/DocumentMethods.md#edges) * [collection.insert(data)](../../DataModeling/Documents/DocumentMethods.md#insert) +* [collection.edges(vertices)](../../DataModeling/Documents/DocumentMethods.md#edges) * [collection.iterate(iterator,options)](../../DataModeling/Documents/DocumentMethods.md#misc) -* [collection.outEdges(vertex-id)](../../DataModeling/Documents/DocumentMethods.md#misc) +* [collection.outEdges(vertex-id)](../../DataModeling/Documents/DocumentMethods.md#edges) * [collection.queryByExample(example)](../../DataModeling/Documents/DocumentMethods.md#query-by-example) * [collection.range(attribute, left, right)](../../DataModeling/Documents/DocumentMethods.md#range) * [collection.remove(selector)](../../DataModeling/Documents/DocumentMethods.md#remove) diff --git a/Documentation/Books/Manual/Architecture/ServerInternals.mdpp b/Documentation/Books/Manual/Architecture/ServerInternals.mdpp index e0b5954b73..d6c3951f92 100644 --- a/Documentation/Books/Manual/Architecture/ServerInternals.mdpp +++ b/Documentation/Books/Manual/Architecture/ServerInternals.mdpp @@ -1,4 +1,4 @@ -!SECTION Serverside db-Object implementation +!SECTION Server-side db-Object implementation We [already talked about the arangosh db Object implementation](../GettingStarted/Arangosh.md), Now a little more about the server version, so the following examples won't work properly in arangosh. diff --git a/Documentation/Books/Manual/DataModeling/Documents/DocumentMethods.mdpp b/Documentation/Books/Manual/DataModeling/Documents/DocumentMethods.mdpp index cb2fffbcf5..736f2eeab2 100644 --- a/Documentation/Books/Manual/DataModeling/Documents/DocumentMethods.mdpp +++ b/Documentation/Books/Manual/DataModeling/Documents/DocumentMethods.mdpp @@ -1143,7 +1143,6 @@ an object with the following sub-attributes: !SUBSECTION Collection type - `collection.type()` Returns the type of a collection. Possible values are: @@ -1153,7 +1152,6 @@ Returns the type of a collection. Possible values are: !SUBSECTION Get the Version of ArangoDB - `db._version()` Returns the server version string. Note that this is not the version of the @@ -1169,28 +1167,99 @@ database. @END_EXAMPLE_ARANGOSH_OUTPUT @endDocuBlock dbVersion +!SUBSECTION Edges + +Edges are normal documents that always contain a `_from` and a `_to` +attribute. Therefore, you can use the document methods to operate on +edges. The following methods, however, are specific to edges. + +`edge-collection.edges(vertex)` + +The *edges* operator finds all edges starting from (outbound) or ending +in (inbound) *vertex*. + +`edge-collection.edges(vertices)` + +The *edges* operator finds all edges starting from (outbound) or ending +in (inbound) a document from *vertices*, which must a list of documents +or document handles. + + @startDocuBlockInline EDGCOL_02_Relation + @EXAMPLE_ARANGOSH_OUTPUT{EDGCOL_02_Relation} + db._create("vertex"); + db._createEdgeCollection("relation"); + ~ var myGraph = {}; + myGraph.v1 = db.vertex.insert({ name : "vertex 1" }); + myGraph.v2 = db.vertex.insert({ name : "vertex 2" }); + | myGraph.e1 = db.relation.insert(myGraph.v1, myGraph.v2, + { label : "knows"}); + db._document(myGraph.e1); + db.relation.edges(myGraph.e1._id); + ~ db._drop("relation"); + ~ db._drop("vertex"); + @END_EXAMPLE_ARANGOSH_OUTPUT + @endDocuBlock EDGCOL_02_Relation + +`edge-collection.inEdges(vertex)` + +The *edges* operator finds all edges ending in (inbound) *vertex*. + +`edge-collection.inEdges(vertices)` + +The *edges* operator finds all edges ending in (inbound) a document from +*vertices*, which must a list of documents or document handles. + +**Examples** + + @startDocuBlockInline EDGCOL_02_inEdges + @EXAMPLE_ARANGOSH_OUTPUT{EDGCOL_02_inEdges} + db._create("vertex"); + db._createEdgeCollection("relation"); + ~ var myGraph = {}; + myGraph.v1 = db.vertex.insert({ name : "vertex 1" }); + myGraph.v2 = db.vertex.insert({ name : "vertex 2" }); + | myGraph.e1 = db.relation.insert(myGraph.v1, myGraph.v2, + { label : "knows"}); + db._document(myGraph.e1); + db.relation.inEdges(myGraph.v1._id); + db.relation.inEdges(myGraph.v2._id); + ~ db._drop("relation"); + ~ db._drop("vertex"); + @END_EXAMPLE_ARANGOSH_OUTPUT + @endDocuBlock EDGCOL_02_inEdges + +`edge-collection.outEdges(vertex)` + +The *edges* operator finds all edges starting from (outbound) +*vertices*. + +`edge-collection.outEdges(vertices)` + +The *edges* operator finds all edges starting from (outbound) a document +from *vertices*, which must a list of documents or document handles. + + +**Examples** + + @startDocuBlockInline EDGCOL_02_outEdges + @EXAMPLE_ARANGOSH_OUTPUT{EDGCOL_02_outEdges} + db._create("vertex"); + db._createEdgeCollection("relation"); + ~ var myGraph = {}; + myGraph.v1 = db.vertex.insert({ name : "vertex 1" }); + myGraph.v2 = db.vertex.insert({ name : "vertex 2" }); + | myGraph.e1 = db.relation.insert(myGraph.v1, myGraph.v2, + { label : "knows"}); + db._document(myGraph.e1); + db.relation.outEdges(myGraph.v1._id); + db.relation.outEdges(myGraph.v2._id); + ~ db._drop("relation"); + ~ db._drop("vertex"); + @END_EXAMPLE_ARANGOSH_OUTPUT + @endDocuBlock EDGCOL_02_outEdges !SUBSECTION Misc - -`collection.edges(vertex-id)` - -Returns all edges connected to the vertex specified by *vertex-id*. - - - -`collection.inEdges(vertex-id)` - -Returns inbound edges connected to the vertex specified by *vertex-id*. - - - -`collection.outEdges(vertex-id)` - -Returns outbound edges connected to the vertex specified by *vertex-id*. - - - `collection.iterate(iterator, options)` Iterates over some elements of the collection and apply the function @@ -1205,10 +1274,8 @@ as second argument. - *probability* (optional, default all): a number between *0* and *1*. Documents are chosen with this probability. - **Examples** - @startDocuBlockInline accessViaGeoIndex @EXAMPLE_ARANGOSH_OUTPUT{accessViaGeoIndex} ~db._create("example") diff --git a/Documentation/Books/Manual/DataModeling/GraphsVerticesEdges.mdpp b/Documentation/Books/Manual/DataModeling/GraphsVerticesEdges.mdpp index 43767ea152..599705f9dc 100644 --- a/Documentation/Books/Manual/DataModeling/GraphsVerticesEdges.mdpp +++ b/Documentation/Books/Manual/DataModeling/GraphsVerticesEdges.mdpp @@ -1 +1,3 @@ !CHAPTER Graphs, Vertices & Edges + +Graphs, vertices & edges are defined in the [Graphs](../Graphs/README.md) chapter in details. \ No newline at end of file diff --git a/Documentation/Books/Manual/GettingStarted/Installing/Cluster.mdpp b/Documentation/Books/Manual/GettingStarted/Installing/Cluster.mdpp index 2d59b5e2dd..5c4f09c6c3 100644 --- a/Documentation/Books/Manual/GettingStarted/Installing/Cluster.mdpp +++ b/Documentation/Books/Manual/GettingStarted/Installing/Cluster.mdpp @@ -3,4 +3,4 @@ Setting up a cluster can be intimidating task. You have to deal with firewalls, ports, different types of machines, and the like. ArangoDB is prepared to deal with all kinds of different setups and -requirements. +requirements. Checkout the [Deployment](../../Deployment/README.md) chapter. diff --git a/Documentation/Books/Manual/GettingStarted/Installing/Compiling.mdpp b/Documentation/Books/Manual/GettingStarted/Installing/Compiling.mdpp index d09eedf566..0c49bc2262 100644 --- a/Documentation/Books/Manual/GettingStarted/Installing/Compiling.mdpp +++ b/Documentation/Books/Manual/GettingStarted/Installing/Compiling.mdpp @@ -3,222 +3,13 @@ The following sections describe how to compile and build the ArangoDB from scratch. ArangoDB will compile on most Linux and Mac OS X systems. We assume that you use the GNU C/C++ compiler or clang/clang++ to compile the -source. ArangoDB has been tested with the GNU C/C++ compiler and clang/clang++, -but should be able to compile with any Posix-compliant, C++11-enabled compiler. -Please let us know whether you successfully compiled it with another C/C++ -compiler. +source. ArangoDB has been tested with these compilers, but should be able to +compile with any Posix-compliant, C++11-enabled compiler. Please let us know +whether you successfully compiled it with another C/C++ compiler. By default, cloning the github repository will checkout **devel**. This version contains the development version of the ArangoDB. Use this branch if you want to make changes to the ArangoDB source. -!SECTION Devel Version - -Note: a separate [blog -article](http://jsteemann.github.io/blog/2014/10/16/how-to-compile-arangodb-from-source/) -is available that describes how to compile ArangoDB from source on Ubuntu. - -!SUBSECTION Basic System Requirements - -Verify that your system contains - -* git (to obtain the sources) -* a modern C/C++ compiler C++11 capable including full regex support: - * GNU "gcc" and "g++" version 4.9.0 or higher - * "clang" and "clang++" version 3.6 or higher - * Visual C++ 2015 [(see the "compiling under windows" cookbook for more details)](https://docs.arangodb.com/cookbook/Compiling/Windows30.html) -* cmake -* GNU make -* Python, version 2 in order to use gyp for V8 -* the OpenSSL library, version 1.0.1g or higher (development package) -* jemalloc or tcmalloc development packages -* the GNU scanner generator FLEX, at least version 2.3.35 (optional) -* the GNU parser generator BISON, at least version 2.4 (optional) - -Most Linux systems already supply RPMs or DPKGs for these packages. -Some older distributions, for example Ubuntu 12.04 or Centos 5, provide only very out-dated -versions of compilers, FLEX and BISON. In that case you need to compile -newer versions of the programs and/or libraries. - -!SUBSECTION Download the Source - -Download the latest source using ***git***: - - unix> git clone git://github.com/arangodb/arangodb.git - -This will automatically clone the **devel** branch. - -Note: if you only plan to compile ArangoDB locally and do not want to modify or push -any changes, you can speed up cloning substantially by using the *--single-branch* and -*--depth* parameters for the clone command as follows: - - unix> git clone --single-branch --depth 1 git://github.com/arangodb/arangodb.git - -!SUBSECTION Setup - -Switch into the ArangoDB directory - - unix> cd ArangoDB - unix> mkdir build - unix> cd build - -In order to generate the build environment please execute - - unix> cmake .. - -to setup the makefiles. This will check the various system characteristics and -installed libraries. If you installed the compiler in a non standard location, you may need to specify it: - - cmake -DCMAKE_C_COMPILER=/opt/bin/gcc -DCMAKE_CXX_COMPILER=/opt/bin/g++ .. - -If you compile on MacOS, you should add the following options to the cmake command: - - cmake .. -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 - -If you also plan to make changes to the source code of ArangoDB, you should compile with the `Debug` target; -The `Debug` target enables additional sanity checks etc. which would slow down production binaries. - -Other options valuable for development: - - -DARANGODB_ENABLE_MAINTAINER_MODE - -Needed, if you plan to make changes to AQL language (which is implemented using a lexer and parser -files in `arangod/Aql/grammar.y` and `arangod/Aql/tokens.ll`) your system has to contain the tools FLEX and BISON. - - -DARANGODB_ENABLE_BACKTRACE - -(requires the maintainer mode) If you want to have c++ stacktraces attached to your exceptions. -This can be usefull to more quick locate the place where an exception or an assertion was thrown. - - -scripts. It allows to run ArangoDB from the compile directory directly, without the -need for a *make install* command and specifying much configuration parameters. -When used, you can start ArangoDB using this command: - - bin/arangod /tmp/database-dir - -ArangoDB will then automatically use the configuration from file *etc/relative/arangod.conf*. - - -DUSE_FAILURE_TESTS - -This option activates additional code in the server that intentionally makes the -server crash or misbehave (e.g. by pretending the system ran out of -memory). This option is useful for writing tests. - -By default the libc allocator is chosen. If your system offers the jemalloc it will be -prefered over tcmalloc and the system allocator. - -!SUBSUBSECTION shared memory -Gyp is used as makefile generator by V8. Gyp requires shared memory to be available, -which may not if you i.e. compile in a chroot. You can make it available like this: - - none /opt/chroots/ubuntu_precise_x64/dev/shm tmpfs rw,nosuid,nodev,noexec 0 2 - devpts /opt/chroots/ubuntu_precise_x64/dev/pts devpts gid=5,mode=620 0 0 - - -!SUBSECTION Compile - -Compile the programs (server, client, utilities) by executing - - make - -This will compile ArangoDB and create a binary of the server in - - ./bin/arangod - -!SUBSECTION Test - -Create an empty directory - - unix> mkdir /tmp/database-dir - -Check the binary by starting it using the command line. - - unix> ./bin/arangod -c etc/relative/arangod.conf --server.endpoint tcp://127.0.0.1:8529 /tmp/database-dir - -This will start up the ArangoDB and listen for HTTP requests on port 8529 bound -to IP address 127.0.0.1. You should see the startup messages similar to the -following: - -``` -2016-06-01T12:47:29Z [29266] INFO ArangoDB xxx ... -2016-06-10T12:47:29Z [29266] INFO using endpoint 'tcp://127.0.0.1.8529' for non-encrypted requests -2016-06-01T12:47:30Z [29266] INFO Authentication is turned on -2016-60-01T12:47:30Z [29266] INFO ArangoDB (version xxx) is ready for business. Have fun! -``` - -If it fails with a message about the database directory, please make sure the -database directory you specified exists and can be written into. - -Use your favorite browser to access the URL - - http://127.0.0.1:8529/_api/version - -This should produce a JSON object like - - {"server" : "arango", "version" : "..."} - -as result. - -!SUBSECTION Re-building ArangoDB after an update - -To stay up-to-date with changes made in the main ArangoDB repository, you will -need to pull the changes from it and re-run `make`. - -Normally, this will be as simple as follows: - - unix> git pull - unix> make - -From time to time there will be bigger structural changes in ArangoDB, which may -render the old Makefiles invalid. Should this be the case and `make` complains -about missing files etc., the following commands should fix it: - - - unix> rm -f CMakeCache.txt - unix> cmake .. - unix> make - -In order to reset everything and also recompile all 3rd party libraries, issue -the following commands: - - unix> git checkout -- . - unix> cd ..; rm -rf build; mkdir build; cd build - -This will clean up ArangoDB and the 3rd party libraries, and rebuild everything. - -Sometimes you can get away with the less intrusive commands. - -!SUBSECTION Install - -Install everything by executing - - make install - -You must be root to do this or at least have write permission to the -corresponding directories. - -The server will by default be installed in - - /usr/local/sbin/arangod - -The configuration file will be installed in - - /usr/local/etc/arangodb/arangod.conf - -The database will be installed in - - /usr/local/var/lib/arangodb - -The ArangoShell will be installed in - - /usr/local/bin/arangosh - -**Note:** The installation directory will be different if you use one of the -`precompiled` packages. Please check the default locations of your operating -system, e. g. `/etc` and `/var/lib`. - -When upgrading from a previous version of ArangoDB, please make sure you inspect -ArangoDB's log file after an upgrade. It may also be necessary to start ArangoDB -with the *--database.upgrade* parameter once to perform required upgrade or -initialization tasks. +Please checkout the [cookbook](https://docs.arangodb.com/cookbook) on how to +compile ArangoDB. diff --git a/Documentation/Books/Manual/GettingStarted/Installing/Linux.mdpp b/Documentation/Books/Manual/GettingStarted/Installing/Linux.mdpp index 33200be0f5..9bbe8c641f 100644 --- a/Documentation/Books/Manual/GettingStarted/Installing/Linux.mdpp +++ b/Documentation/Books/Manual/GettingStarted/Installing/Linux.mdpp @@ -8,7 +8,7 @@ easily install ArangoDB using yum, aptitude, urpmi or zypper. - Alternatively, see [Compiling](Compiling.md) if you want to build ArangoDB yourself. -- Start up the database server +- Start up the database server. Normally, this is done by executing the following command: @@ -23,6 +23,12 @@ To stop the server you can use the following command: The exact commands depend on your Linux distribution. You may require root privileges to execute these commands. +!SECTION Linux Mint + +Please use the corresponding Ubuntu or Debian packages. + +!SECTION Non-Standard Installation + If you compiled ArangoDB from source and did not use any installation package – or using non-default locations and/or multiple ArangoDB instances on the same host – you may want to start the server process @@ -60,8 +66,3 @@ make sure to start the server once with the *--database.upgrade* option. Note that you may have to enable logging first. If you start the server in a shell, you should see errors logged there as well. - - -!SUBSECTION Linux Mint - -Please use the corresponding Ubuntu or Debian packages. diff --git a/Documentation/Books/Manual/GettingStarted/Installing/MacOSX.mdpp b/Documentation/Books/Manual/GettingStarted/Installing/MacOSX.mdpp index 3de2d96953..85c57f4a33 100644 --- a/Documentation/Books/Manual/GettingStarted/Installing/MacOSX.mdpp +++ b/Documentation/Books/Manual/GettingStarted/Installing/MacOSX.mdpp @@ -50,14 +50,14 @@ also need to update homebrew: !SECTION Graphical App In case you are not using homebrew, we also provide a graphical app. You can -download it from [here](https://www.arangodb.com/install). +download it from [here](https://www.arangodb.com/download). Choose *Mac OS X*. Download and install the application *ArangoDB* in your application folder. !SECTION Command-Line App In case you are not using homebrew, we also provide a command-line app. You can -download it from [here](https://www.arangodb.com/install). +download it from [here](https://www.arangodb.com/download). Choose *Mac OS X*. Download and install the application *ArangoDB-CLI* in your application folder. diff --git a/Documentation/Books/Manual/GettingStarted/Installing/README.mdpp b/Documentation/Books/Manual/GettingStarted/Installing/README.mdpp index 17dd2dc2a5..81bce3786a 100644 --- a/Documentation/Books/Manual/GettingStarted/Installing/README.mdpp +++ b/Documentation/Books/Manual/GettingStarted/Installing/README.mdpp @@ -5,4 +5,4 @@ homebrew on MacOS X. You can find packages for various operation systems at our [install](https://www.arangodb.com/download) section, including installers for Windows. -How to do that in detail is described the subchapters of this section. +How to do that in detail is described in the subchapters of this section. diff --git a/Documentation/Books/Manual/GettingStarted/Installing/Windows.mdpp b/Documentation/Books/Manual/GettingStarted/Installing/Windows.mdpp index ad05e88983..f7509147d6 100644 --- a/Documentation/Books/Manual/GettingStarted/Installing/Windows.mdpp +++ b/Documentation/Books/Manual/GettingStarted/Installing/Windows.mdpp @@ -7,14 +7,18 @@ that ArangoDB has been installed in the location *<ROOTDIR>*. You have to be careful when choosing an installation directory. You need either write permission to this directory or you need to modify the config file for the server process. In the latter case the database directory and the Foxx directory -has to be writable by the user. +have to be writable by the user. -Installing for a single user: Select a different directory during -installation. For example *C:\Users\<Username>\ArangoDB* or *C:\ArangoDB*. +!SUBSECTION Single User Installation -Installing for multiple users: Keep the default directory. After the -installation edit the file *<ROOTDIR>\etc\ArangoDB\arangod.conf*. Adjust the -*directory* and *app-path* so that these paths point into your home directory. +Select a different directory during installation. For example +*C:\Users\<Username>\ArangoDB* or *C:\ArangoDB*. + +!SUBSECTION Multiple Users Installation + +Keep the default directory. After the installation edit the file +*<ROOTDIR>\etc\ArangoDB\arangod.conf*. Adjust the *directory* +and *app-path* so that these paths point into your home directory. [database] directory = @HOMEDRIVE@\@HOMEPATH@\arangodb\databases @@ -24,8 +28,10 @@ installation edit the file *<ROOTDIR>\etc\ArangoDB\arangod.conf*. Adjust t Create the directories for each user that wants to use ArangoDB. -Installing as Service: Keep the default directory. After the installation open -a command line as administrator (search for *cmd* and right click *run as +!SUBSECTION Service Installation + +Keep the default directory. After the installation open a command line +as administrator (search for *cmd* and right click *run as administrator*). cmd> arangod --install-service @@ -40,22 +46,15 @@ option. file = @ROOTDIR@\var\log\arangodb\arangod.log -!SUBSECTION Client, Server and Lock-Files +!SECTION Starting -Please note that ArangoDB consists of a database server and client tools. If you -start the server, it will place a (read-only) lock file to prevent accidental -access to the data. The server will attempt to remove this lock file when it is -started to see if the lock is still valid - this is in case the installation did -not proceed correctly or if the server terminated unexpectedly. +If you installed ArangoDB as a service it is automatically started. -!SUBSECTION Starting - -To start an ArangoDB server instance with networking enabled, use the executable -*arangod.exe* located in *<ROOTDIR>\bin*. This will use the configuration -file *arangod.conf* located in *<ROOTDIR>\etc\arangodb*, which you can adjust -to your needs and use the data directory *<ROOTDIR>\var\lib\arangodb*. This -is the place where all your data (databases and collections) will be stored -by default. +Otherwise, use the executable *arangod.exe* located in +*<ROOTDIR>\bin*. This will use the configuration file *arangod.conf* +located in *<ROOTDIR>\etc\arangodb*, which you can adjust to your needs +and use the data directory *<ROOTDIR>\var\lib\arangodb*. This is the place +where all your data (databases and collections) will be stored by default. Please check the output of the *arangod.exe* executable before going on. If the server started successfully, you should see a line `ArangoDB is ready for @@ -68,21 +67,13 @@ page: http://127.0.0.1:8529/ -To check if your installation was successful, click the *Collection* tab and -open the configuration. Select the *System* type. If the installation was -successful, then the page should display a few system collections. - -Try to add a new collection and then add some documents to this new collection. -If you have succeeded in creating a new collection and inserting one or more -documents, then your installation is working correctly. - -!SUBSECTION Advanced Starting +!SECTION Advanced Starting If you want to provide our own start scripts, you can set the environment variable *ARANGODB_CONFIG_PATH*. This variable should point to a directory containing the configuration files. -!SUBSECTION Using the Client +!SECTION Using the Client To connect to an already running ArangoDB server instance, there is a shell *arangosh.exe* located in *<ROOTDIR>\bin*. This starts a shell which can be @@ -97,27 +88,7 @@ the *arangod.exe* executable. *<ROOTDIR>\etc\arangodb\*. Please adjust this to your needs if you want to use different connection settings etc. -!SUBSECTION 32bit - -If you have an EXISTING database, then please note that currently a 32 bit -version of ArangoDB is NOT compatible with a 64 bit version. This means that -if you have a database created with a 32 bit version of ArangoDB it may -become corrupted if you execute a 64 bit version of ArangoDB against the same -database, and vice versa. - -!SUBSECTION Upgrading - -To upgrade an EXISTING database created with a previous version of ArangoDB, -please execute the server *arangod.exe* with the option -*--database.upgrade*. Otherwise starting ArangoDB may fail with errors. - -Note that there is no harm in running the upgrade. So you should run this -batch file if you are unsure of the database version you are using. - -You should always check the output for errors to see if the upgrade was -completed successfully. - -!SUBSECTION Uninstalling +!SECTION Uninstalling To uninstall the Arango server application you can use the windows control panel (as you would normally uninstall an application). Note however, that any data @@ -125,7 +96,7 @@ files created by the Arango server will remain as well as the *<ROOTDIR>* directory. To complete the uninstallation process, remove the data files and the *<ROOTDIR>* directory manually. -!SUBSECTION Limitations for Cygwin +!SECTION Limitations for Cygwin Please note some important limitations when running ArangoDB under Cygwin: Starting ArangoDB can be started from out of a Cygwin terminal, but pressing diff --git a/Documentation/Books/Manual/Graphs/Edges/README.mdpp b/Documentation/Books/Manual/Graphs/Edges/README.mdpp index f0eb6c99fc..7243ce9667 100644 --- a/Documentation/Books/Manual/Graphs/Edges/README.mdpp +++ b/Documentation/Books/Manual/Graphs/Edges/README.mdpp @@ -30,151 +30,5 @@ Other fields can be updated as in default collection. !SECTION Working with Edges -!SUBSECTION Insert - - - -saves a new edge document -`edge-collection.insert(from, to, document)` - -Saves a new edge and returns the document-handle. *from* and *to* -must be documents or document references. - -`edge-collection.insert(from, to, document, waitForSync)` - -The optional *waitForSync* parameter can be used to force -synchronization of the document creation operation to disk even in case -that the *waitForSync* flag had been disabled for the entire collection. -Thus, the *waitForSync* parameter can be used to force synchronization -of just specific operations. To use this, set the *waitForSync* parameter -to *true*. If the *waitForSync* parameter is not specified or set to -*false*, then the collection's default *waitForSync* behavior is -applied. The *waitForSync* parameter cannot be used to disable -synchronization for collections that have a default *waitForSync* value -of *true*. - - -**Examples** - - - @startDocuBlockInline EDGCOL_01_SaveEdgeCol - @EXAMPLE_ARANGOSH_OUTPUT{EDGCOL_01_SaveEdgeCol} - db._create("vertex"); - db._createEdgeCollection("relation"); - v1 = db.vertex.insert({ name : "vertex 1" }); - v2 = db.vertex.insert({ name : "vertex 2" }); - e1 = db.relation.insert(v1, v2, { label : "knows" }); - db._document(e1); - ~ db._drop("relation"); - ~ db._drop("vertex"); - @END_EXAMPLE_ARANGOSH_OUTPUT - @endDocuBlock EDGCOL_01_SaveEdgeCol - - - -!SUBSECTION Edges - - - -selects all edges for a set of vertices -`edge-collection.edges(vertex)` - -The *edges* operator finds all edges starting from (outbound) or ending -in (inbound) *vertex*. - -`edge-collection.edges(vertices)` - -The *edges* operator finds all edges starting from (outbound) or ending -in (inbound) a document from *vertices*, which must a list of documents -or document handles. - - @startDocuBlockInline EDGCOL_02_Relation - @EXAMPLE_ARANGOSH_OUTPUT{EDGCOL_02_Relation} - db._create("vertex"); - db._createEdgeCollection("relation"); - ~ var myGraph = {}; - myGraph.v1 = db.vertex.insert({ name : "vertex 1" }); - myGraph.v2 = db.vertex.insert({ name : "vertex 2" }); - | myGraph.e1 = db.relation.insert(myGraph.v1, myGraph.v2, - { label : "knows"}); - db._document(myGraph.e1); - db.relation.edges(myGraph.e1._id); - ~ db._drop("relation"); - ~ db._drop("vertex"); - @END_EXAMPLE_ARANGOSH_OUTPUT - @endDocuBlock EDGCOL_02_Relation - - - -!SUBSECTION InEdges - - - -selects all inbound edges -`edge-collection.inEdges(vertex)` - -The *edges* operator finds all edges ending in (inbound) *vertex*. - -`edge-collection.inEdges(vertices)` - -The *edges* operator finds all edges ending in (inbound) a document from -*vertices*, which must a list of documents or document handles. - - -**Examples** - - @startDocuBlockInline EDGCOL_02_inEdges - @EXAMPLE_ARANGOSH_OUTPUT{EDGCOL_02_inEdges} - db._create("vertex"); - db._createEdgeCollection("relation"); - ~ var myGraph = {}; - myGraph.v1 = db.vertex.insert({ name : "vertex 1" }); - myGraph.v2 = db.vertex.insert({ name : "vertex 2" }); - | myGraph.e1 = db.relation.insert(myGraph.v1, myGraph.v2, - { label : "knows"}); - db._document(myGraph.e1); - db.relation.inEdges(myGraph.v1._id); - db.relation.inEdges(myGraph.v2._id); - ~ db._drop("relation"); - ~ db._drop("vertex"); - @END_EXAMPLE_ARANGOSH_OUTPUT - @endDocuBlock EDGCOL_02_inEdges - - - -!SUBSECTION OutEdges - - - -selects all outbound edges -`edge-collection.outEdges(vertex)` - -The *edges* operator finds all edges starting from (outbound) -*vertices*. - -`edge-collection.outEdges(vertices)` - -The *edges* operator finds all edges starting from (outbound) a document -from *vertices*, which must a list of documents or document handles. - - -**Examples** - - @startDocuBlockInline EDGCOL_02_outEdges - @EXAMPLE_ARANGOSH_OUTPUT{EDGCOL_02_outEdges} - db._create("vertex"); - db._createEdgeCollection("relation"); - ~ var myGraph = {}; - myGraph.v1 = db.vertex.insert({ name : "vertex 1" }); - myGraph.v2 = db.vertex.insert({ name : "vertex 2" }); - | myGraph.e1 = db.relation.insert(myGraph.v1, myGraph.v2, - { label : "knows"}); - db._document(myGraph.e1); - db.relation.outEdges(myGraph.v1._id); - db.relation.outEdges(myGraph.v2._id); - ~ db._drop("relation"); - ~ db._drop("vertex"); - @END_EXAMPLE_ARANGOSH_OUTPUT - @endDocuBlock EDGCOL_02_outEdges - - +Edges are normal [documents](../../DataModeling/Documents/DocumentMethods.md) +that always contain a `_from` and a `_to` attribute. diff --git a/Documentation/Books/Manual/README.mdpp b/Documentation/Books/Manual/README.mdpp index a98d85b3bc..5e4bfda050 100644 --- a/Documentation/Books/Manual/README.mdpp +++ b/Documentation/Books/Manual/README.mdpp @@ -6,30 +6,28 @@ The documentation introduces ArangoDB for you as a user, developer and administr New and eager to try it out? Start right away with our beginner's guide: [Getting Started](GettingStarted/README.md) +!SUBSECTION Overview + ArangoDB is a multi-model, open-source 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. Use ACID transactions if you require them. Scale horizontally and vertically with a few mouse clicks. Key features include: -* **Schema-free schemata** let you combine the space efficiency of MySQL with the performance power of NoSQL -* Use ArangoDB as an **application server** and fuse your application and database together for maximal throughput -* JavaScript for all: **no language zoo**, you can use one language from your browser to your back-end -* ArangoDB is **multi-threaded** - exploit the power of all your cores -* **Flexible data modeling**: model your data as combination of key-value pairs, documents or graphs - perfect for social relations -* Free **index choice**: use the correct index for your problem, be it a skip list or a fulltext search +* installing ArangoDB on a [**cluster**](Deployment/README.md) is as easy as installing an app on your mobile +* [**Flexible data modeling**](DataModeling/README.md): model your data as combination of key-value pairs, documents or graphs - perfect for social relations +* [**Powerful query language**](../AQL/index.html) (AQL) to retrieve and modify data +* Use ArangoDB as an [**application server**](Foxx/README.md) and fuse your application and database together for maximal throughput +* [**Transactions**](Transactions/README.md): run queries on multiple documents or collections with optional transactional consistency and isolation +* [**Replication** and **Sharding**](Administration/README.md): set up the database in a master-slave configuration or spread bigger datasets across multiple servers * Configurable **durability**: let the application decide if it needs more durability or more performance * No-nonsense storage: ArangoDB uses all of the power of **modern storage hardware**, like SSD and large caches -* **Powerful query language** (AQL) to retrieve and modify data -* **Transactions**: run queries on multiple documents or collections with optional transactional consistency and isolation -* **Replication** and **Sharding**: set up the database in a master-slave configuration or spread bigger datasets across multiple servers +* JavaScript for all: **no language zoo**, you can use one language from your browser to your back-end * It is **open source** (Apache License 2.0) -In this documentation you can inform yourself about all the functions, features and programs ArangoDB provides for you. -Features are illustrated with interactive usage examples; you can cut'n'paste them into [arangosh](Administration/Arangosh/README.md) to try them out. -The http REST-API is demonstrated with cut'n'paste recepies intended to be used with the [cURL](http://curl.haxx.se). -Drivers may provide their own examples based on these .js based examples to improve understandeability for their respective users. -I.e. for the [java driver](https://github.com/arangodb/arangodb-java-driver#learn-more) some of the samples are re-implemented. +!SUBSECTION Structure of the Documentation -You can also go to our [cookbook](https://docs.arangodb.com/cookbook) and look through some recipes to learn more about ArangoDB specific problems and solutions. +In this documentation you can inform yourself about all the functions, features and programs ArangoDB provides for you. There are four handbooks: this manual which describes ArangoDB and its features in detail. The [AQL handbook](../AQL/index.html) explains the query language AQL of ArangoDB. The [HTTP handbook](../HTTP/index.html) which describes the internal API of ArangoDB that is used to communicate with clients. In general, the HTTP handbook will be of interest to driver developers. If you use any of the existing drivers for the language of your choice, you can skip this handbook. You can also go to our [cookbook](https://docs.arangodb.com/cookbook) and look through some recipes to learn more about ArangoDB specific problems and solutions. + +Features are illustrated with interactive usage examples; you can cut'n'paste them into [arangosh](Administration/Arangosh/README.md) to try them out. The http [REST-API](../HTTP/index.html) for driver developers is demonstrated with cut'n'paste recepies intended to be used with the [cURL](http://curl.haxx.se). Drivers may provide their own examples based on these .js based examples to improve understandeability for their respective users. I.e. for the [java driver](https://github.com/arangodb/arangodb-java-driver#learn-more) some of the samples are re-implemented. !SUBSECTION Community diff --git a/Documentation/Books/Manual/Scalability/Cluster.mdpp b/Documentation/Books/Manual/Scalability/Cluster.mdpp index 669e6822c2..78acd03005 100644 --- a/Documentation/Books/Manual/Scalability/Cluster.mdpp +++ b/Documentation/Books/Manual/Scalability/Cluster.mdpp @@ -1,10 +1,10 @@ !CHAPTER Cluster Scalability -ArangoDB has been designed as a distributed multi model database. In this chapter we will give a short outline on the cluster archtiecture. +ArangoDB has been designed as a distributed multi model database. In this chapter we will give a short outline on the cluster architecture. !SUBSECTION Cluster ID -Every node in a cluster will be assigned a uniquely generated ID during its startup. As such a node is identifiable througout the cluster. All cluster operations will communicate via this ID. +Every node in a cluster will be assigned a uniquely generated ID during its startup. As such a node is identifiable throughout the cluster. All cluster operations will communicate via this ID. !SUBSECTION Roles in an ArangoDB cluster diff --git a/Documentation/Books/Manual/Scalability/README.mdpp b/Documentation/Books/Manual/Scalability/README.mdpp index f38d009989..e94471cb1d 100644 --- a/Documentation/Books/Manual/Scalability/README.mdpp +++ b/Documentation/Books/Manual/Scalability/README.mdpp @@ -1,7 +1,5 @@ !CHAPTER Scalability -Text zur eventuellen Wiederverwertung: - For single instance setups we provide binary packages for various Linux distributions, for Mac OSX and for Windows, as well as Docker images. Installation is mostly straightforward using the standard package managers @@ -20,8 +18,10 @@ initial deployment, but also the later management of automatic replacement of failed instances and the scaling of the ArangoDB cluster (triggered manually or even automatically). -As of June 2016, we offer Apache Mesos integration, later there will be -integration with other cluster management infrastructures. +As of June 2016, we offer Apache Mesos integration, later there will +be integration with other cluster management infrastructures. See the +[Deployment](../Deployment/README.md) chapter and its subsections for +instructions. It is possible to deploy an ArangoDB cluster by simply launching a bunch of Docker containers with the right command line options to link them up, @@ -33,5 +33,3 @@ ArangoDB cluster cannot within itself launch additional instances, replacement of failed nodes is not automatic and scaling up and down has to be managed manually. This is why we do not recommend this setup for production deployment. - -TODO: Verweise auf das Deployment chapter.