1
0
Fork 0
This commit is contained in:
Frank Celler 2016-06-17 17:27:21 +02:00
parent 069309a65c
commit 17938b0cab
14 changed files with 159 additions and 476 deletions

View File

@ -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)

View File

@ -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.

View File

@ -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")

View File

@ -1 +1,3 @@
!CHAPTER Graphs, Vertices & Edges
Graphs, vertices & edges are defined in the [Graphs](../Graphs/README.md) chapter in details.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -30,151 +30,5 @@ Other fields can be updated as in default collection.
!SECTION Working with Edges
!SUBSECTION Insert
<!-- arangod/V8Server/v8-collection.cpp -->
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
<!-- arangod/V8Server/v8-query.cpp -->
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
<!-- arangod/V8Server/v8-query.cpp -->
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
<!-- arangod/V8Server/v8-query.cpp -->
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.

View File

@ -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

View File

@ -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

View File

@ -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.