1
0
Fork 0

moved .dox to .md

This commit is contained in:
Frank Celler 2013-02-09 21:42:20 +01:00
parent 9bf9862f2b
commit 6ef349c473
77 changed files with 2362 additions and 2633 deletions

View File

@ -1,7 +0,0 @@
1 + 1
33 - 99
12.4 * 4.5
13.0 / 0.1
23 % 7
-15
+9.99

View File

@ -1,4 +0,0 @@
FOR u IN users
FOR f IN friends
FILTER u.active == true && f.active == true && u.id == f.userId
RETURN u.name

View File

@ -1,3 +0,0 @@
FOR u IN users
FILTER u.id == @id && u.name == @name
RETURN u

View File

@ -1,3 +0,0 @@
FOR u IN @@collection
FILTER u.active == true
RETURN u

View File

@ -1,4 +0,0 @@
FOR u IN users
COLLECT city = u.city INTO g
RETURN { "city" : city, "users" : g }

View File

@ -1,4 +0,0 @@
FOR u IN users
COLLECT first = u.firstName, age = u.age INTO g
RETURN { "first" : first, "age" : age, "numUsers" : LENGTH(g) }

View File

@ -1,2 +0,0 @@
COLLECT variable-name = expression
COLLECT variable-name = expression INTO groups

View File

@ -1,41 +0,0 @@
null < false
null < true
null < 0
null < ''
null < ' '
null < '0'
null < 'abc'
null < [ ]
null < { }
false < true
false < 0
false < ''
false < ' '
false < '0'
false < 'abc'
false < [ ]
false < { }
true < 0
true < ''
true < ' '
true < '0'
true < 'abc'
true < [ ]
true < { }
0 < ''
0 < ' '
0 < '0'
0 < 'abc'
0 < [ ]
0 < { }
'' < ' '
'' < '0'
'' < 'abc'
'' < [ ]
'' < { }
[ ] < { }

View File

@ -1,6 +0,0 @@
[ ] < [ 0 ]
[ 1 ] < [ 2 ]
[ 1, 2 ] < [ 2 ]
[ 99, 99 ] < [ 100 ]
[ false ] < [ true ]
[ false, 1 ] < [ false, '' ]

View File

@ -1,8 +0,0 @@
{ } < { "a" : 1 }
{ } < { "a" : null }
{ "a" : 1 } < { "a" : 2 }
{ "b" : 1 } < { "a" : 0 }
{ "a" : { "c" : true } } < { "a" : { "c" : 0 } }
{ "a" : { "c" : true, "a" : 0 } } < { "a" : { "c" : false, "a" : 1 } }
{ "a" : 1, "b" : 2 } == { "b" : 2, "a" : 1 }

View File

@ -1,7 +0,0 @@
1 > 0
true != null
45 <= "yikes!"
65 != "65"
65 == 65
1.23 < 1.32
1.5 IN [ 2, 3, 1.5 ]

View File

@ -1,2 +0,0 @@
u.address.city.name
u.friends[0].name.first

View File

@ -1 +0,0 @@
{ }

View File

@ -1 +0,0 @@
EDGES(friendrelations, "friends/john", "outgoing")

View File

@ -1,42 +0,0 @@
/* return 5 documents from a users collection, unaltered */
FOR u IN users
LIMIT 0, 5
RETURN u
[ { "_id" : "9259836/10505020", "_rev" : "10505020", "active" : true, "id" : 100, "age" : 37, "name" : "John", "gender" : "m" },
{ "_id" : "9259836/11553596", "_rev" : "11553596", "active" : true, "id" : 107, "age" : 30, "gender" : "m", "name" : "Anthony" },
{ "_id" : "9259836/11094844", "_rev" : "11094844", "active" : true, "id" : 101, "age" : 36, "name" : "Fred", "gender" : "m" },
{ "_id" : "9259836/11619132", "_rev" : "11619132", "active" : true, "id" : 108, "age" : 29, "name" : "Jim", "gender" : "m" },
{ "_id" : "9259836/11160380", "_rev" : "11160380", "active" : false, "id" : 102, "age" : 35, "name" : "Jacob", "gender" : "m" } ]
/* return a projection from a users collection */
FOR u IN users
LIMIT 0, 5
RETURN { "user" : { "isActive": u.active ? "yes" : "no", "name" : u.name } }
[ { "user" : { "isActive" : "yes", "name" : "John" } },
{ "user" : { "isActive" : "yes", "name" : "Anthony" } },
{ "user" : { "isActive" : "yes", "name" : "Fred" } },
{ "user" : { "isActive" : "yes", "name" : "Jim" } },
{ "user" : { "isActive" : "no", "name" : "Jacob" } } ]
/* return a filtered projection from a users collection */
FOR u IN users
FILTER u.active == true && u.age >= 30
SORT u.age DESC
RETURN { "age" : u.age, "name" : u.name }
[ { "age" : 37, "name" : "John" },
{ "age" : 37, "name" : "Sophia" },
{ "age" : 36, "name" : "Fred" },
{ "age" : 36, "name" : "Emma" },
{ "age" : 34, "name" : "Madison" },
{ "age" : 33, "name" : "Michael" },
{ "age" : 33, "name" : "Chloe" },
{ "age" : 32, "name" : "Alexander" },
{ "age" : 31, "name" : "Daniel" },
{ "age" : 31, "name" : "Abigail" },
{ "age" : 30, "name" : "Anthony" },
{ "age" : 30, "name" : "Isabella" } ]

View File

@ -1,45 +0,0 @@
/* group users by age */
FOR u IN users
FILTER u.active == true
COLLECT age = u.age INTO group
SORT age DESC
RETURN { "age" : age, "users" : group }
[ { "age" : 37, "users" : ["Sophia", "John"] },
{ "age" : 36, "users" : ["Emma", "Fred"] },
{ "age" : 34, "users" : ["Madison"] },
{ "age" : 33, "users" : ["Chloe", "Michael"] },
{ "age" : 32, "users" : ["Alexander"] },
{ "age" : 31, "users" : ["Abigail", "Daniel"] },
{ "age" : 30, "users" : ["Isabella", "Anthony"] },
{ "age" : 29, "users" : ["Mary", "Jim"] },
{ "age" : 28, "users" : ["Mariah", "Diego"] } ]
/* group users by agegroup and gender */
FOR u IN users
FILTER u.active == true
COLLECT ageGroup = FLOOR(u.age/5) * 5, gender = u.gender INTO group
SORT ageGroup DESC
RETURN { "ageGroup" : ageGroup, "gender" : gender, "numUsers" : LENGTH(group) }
[ { "ageGroup" : 35, "gender" : "f", "numUsers" : 2 },
{ "ageGroup" : 35, "gender" : "m", "numUsers" : 2 },
{ "ageGroup" : 30, "gender" : "f", "numUsers" : 4 },
{ "ageGroup" : 30, "gender" : "m", "numUsers" : 4 },
{ "ageGroup" : 25, "gender" : "f", "numUsers" : 2 },
{ "ageGroup" : 25, "gender" : "m", "numUsers" : 2 } ]
/* get the 3 agegroups with most users */
FOR u IN users
FILTER u.active == true
COLLECT ageGroup = FLOOR(u.age/5) * 5 INTO group
FILTER LENGTH(group) > 2 /* group must contain at least 3 users */
SORT LENGTH(group) DESC
LIMIT 0, 3
RETURN { "ageGroup" : ageGroup, "numUsers" : LENGTH(group), "users" : group[*].u.name }
[ { "ageGroup" : 30, "numUsers" : 8, "users" : ["Alexander", "Isabella", "Michael", "Abigail", "Anthony", "Daniel", "Madison", "Chloe"] },
{ "ageGroup" : 25, "numUsers" : 4, "users" : ["Mariah", "Mary", "Jim", "Diego"] },
{ "ageGroup" : 35, "numUsers" : 4, "users" : ["Emma", "Sophia", "Fred", "John"] } ]

View File

@ -1,49 +0,0 @@
/* getting the names of friends (also users) for users. this is achieved by "joining" a relations table */
FOR u IN users
FILTER u.active == true
LET friends = (FOR f IN userRelations
FILTER f.from == u.id
FOR u2 IN users
FILTER f.to == u2.id
RETURN u2.name
)
RETURN { "user" : u.name, "friends" : friends }
[ { "user" : "John", "friends" : ["Diego", "Mary", "Abigail"] },
{ "user" : "Anthony", "friends" : ["Madison"] },
{ "user" : "Fred", "friends" : ["Mariah"] },
{ "user" : "Jim", "friends" : ["Mariah"] },
{ "user" : "Diego", "friends" : ["Mary"] },
{ "user" : "Sophia", "friends" : ["Madison", "John"] },
{ "user" : "Michael", "friends" : ["John", "Jim"] },
{ "user" : "Emma", "friends" : ["Jacob", "Madison"] },
{ "user" : "Alexander", "friends" : ["Michael", "John"] },
{ "user" : "Daniel", "friends" : ["Eva"] },
{ "user" : "Madison", "friends" : ["Anthony", "Daniel"] },
{ "user" : "Chloe", "friends" : ["Alexander"] },
{ "user" : "Abigail", "friends" : ["Daniel", "John", "Jacob", "Jim"] },
{ "user" : "Isabella", "friends" : ["Madison", "Diego"] },
{ "user" : "Mary", "friends" : ["Isabella", "Diego", "Michael"] },
{ "user" : "Mariah", "friends" : ["Madison", "Ethan", "Eva"] } ]
/* getting users favorite song names from a joined "songs" collection */
FOR u IN users
LET likes = (
FOR s IN songs
FILTER s._id IN u.likes
RETURN CONCAT(s.artist, " - ", s.song)
)
SORT RAND()
LIMIT 0, 8
RETURN { "user" : u.name, "likes" : likes }
[ { "user" : "Eva", "likes" : ["Chocolate - Ritmo De La Noche", "4 The Cause - Stand By Me", "Tony Carey - Room with a view"] },
{ "user" : "Mary", "likes" : ["Hall and Oates - Maneater", "Elton John - Candle In The Wind", "A-Ha - Crying In The Rain", "Laid Back - Sunshine Reggae", "Cock Robin - The promise you made"] },
{ "user" : "Alexander", "likes" : ["Moby - Feel so real", "Rednex - Old pop in an oak", "2 Unlimited - No Limit"] },
{ "user" : "Michael", "likes" : ["The Kelly Family - David's Song"] },
{ "user" : "Ethan", "likes" : ["Technotronic - Megamix", "Gipsy Kings - Baila me", "Goombay Dance Band - Seven Tears", "Sandra - Hiroshima"] }, { "user" : "Isabella", "likes" : ["Milli Vanilli - Girl, I'm Gonna Miss You", "Technotronic - Get Up", "Right Said Fred - Don't Talk Just Kiss", "Peter Schilling - Major Tom (Völlig losgelöst)"] },
{ "user" : "Abigail", "likes" : ["Tina Turner - Typical male", "Liquido - Narcotic"] },
{ "user" : "Jim", "likes" : ["Berlin - Take my breath away", "Ashford & Simpson - Solid", "Fine Young Cannibals - She drives me cracy", "Cut'N'Move - Give it up", "Cyndi Lauper - Time after time"] },
{ "user" : "Jacob", "likes" : ["Kylie Minogue - The Loco-motion", "Eruption - Runaway"] } ]

View File

@ -1,23 +0,0 @@
/* a query that returns a string value. the result string is contained in a list because the result of every valid query is a list */
RETURN "this will be returned"
["this will be returned"]
/* a query that creates the cross products of two lists, and runs a projection on it */
FOR year in [ 2011, 2012, 2013 ]
FOR quarter IN [ 1, 2, 3, 4 ]
RETURN { "y" : "year", "q" : quarter, "nice" : CONCAT(TO_STRING(quarter), "/", TO_STRING(year)) }
[ { "y" : "year", "q" : 1, "nice" : "1/2011" },
{ "y" : "year", "q" : 2, "nice" : "2/2011" },
{ "y" : "year", "q" : 3, "nice" : "3/2011" },
{ "y" : "year", "q" : 4, "nice" : "4/2011" },
{ "y" : "year", "q" : 1, "nice" : "1/2012" },
{ "y" : "year", "q" : 2, "nice" : "2/2012" },
{ "y" : "year", "q" : 3, "nice" : "3/2012" },
{ "y" : "year", "q" : 4, "nice" : "4/2012" },
{ "y" : "year", "q" : 1, "nice" : "1/2013" },
{ "y" : "year", "q" : 2, "nice" : "2/2013" },
{ "y" : "year", "q" : 3, "nice" : "3/2013" },
{ "y" : "year", "q" : 4, "nice" : "4/2013" } ]

View File

@ -1,2 +0,0 @@
FOR u IN users
RETURN { "user" : u, "friendNames" : u.friends[*].name }

View File

@ -1,3 +0,0 @@
FOR u IN users
FILTER u.active == true && u.age < 39
RETURN u

View File

@ -1,4 +0,0 @@
FOR u IN users
FILTER u.active == true
FILTER u.age < 39
RETURN u

View File

@ -1 +0,0 @@
FILTER condition

View File

@ -1,2 +0,0 @@
FOR u IN users
RETURN u

View File

@ -1,3 +0,0 @@
FOR u IN users
FOR l IN locations
RETURN { "user" : u, "location" : l }

View File

@ -1,2 +0,0 @@
FOR year IN [ 2011, 2012, 2013 ]
RETURN { "year" : year, "isLeapYear" : year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) }

View File

@ -1 +0,0 @@
FOR variable-name IN expression

View File

@ -1,3 +0,0 @@
HAS(user, "name")
LENGTH(friends)
COLLECTIONS()

View File

@ -1 +0,0 @@
FUNCTIONAME(arguments)

View File

@ -1,3 +0,0 @@
FOR u IN users
LET numRecommendations = LENGTH(u.recommendations)
RETURN { "user" : u, "numRecommendations" : numRecommendations, "isPowerUser" : numRecommendations >= 10 }

View File

@ -1,12 +0,0 @@
FOR u IN users
LET friends = (
FOR f IN friends
FILTER u.id == f.userId
RETURN f
)
LET memberships = (
FOR m IN memberships
FILTER u.id == m.userId
RETURN m
)
RETURN { "user" : u, "friends" : friends, "numFriends" : LENGTH(friends), "memberShips" : memberships }

View File

@ -1 +0,0 @@
LET variable-name = expression

View File

@ -1,4 +0,0 @@
FOR u IN users
SORT u.firstName, u.lastName, u.id DESC
LIMIT 0, 5
RETURN u

View File

@ -1,2 +0,0 @@
LIMIT count
LIMIT offset, count

View File

@ -1,11 +0,0 @@
// access 1st list element (element start at index 0)
u.friends[0]
// access 3rd list element
u.friends[2]
// access last list element
u.friends[-1]
// access second last list element
u.friends[-2]

View File

@ -1,3 +0,0 @@
[ 1, 2, 3 ]
[ -99, "yikes!", [ true, [ "no"], [ ] ], 1 ]
[ [ "fox", "marshal" ] ]

View File

@ -1,3 +0,0 @@
u.age > 15 && u.address.city != ""
true || false
!u.isInvalid

View File

@ -1,2 +0,0 @@
FOR f IN `filter`
RETURN f.`sort`

View File

@ -1,3 +0,0 @@
{ name : "Peter" }
{ "name" : "Vanessa", "age" : 15 }
{ "name" : "John", likes : [ "Swimming", "Skiing" ], "address" : { "street" : "Cucumber lane", "zip" : "94242" } }

View File

@ -1,3 +0,0 @@
FOR u IN users
FILTER u.name == null
RETURN u

View File

@ -1,3 +0,0 @@
FOR u IN users
FILTER u.age < 39
RETURN u

View File

@ -1,8 +0,0 @@
1
42
-1
-42
1.23
-99.99
0.1
-4.87e103

View File

@ -1,5 +0,0 @@
PATHS(friends, friendrelations, "outbound", false)
FOR p IN PATHS(friends, friendrelations, "outbound")
FILTER p.source._id == "123456/123456" && LENGTH(p.edges) == 2
RETURN p.vertices[*].name

View File

@ -1,3 +0,0 @@
FOR u IN users
FILTER u.type == "newbie" && u.active == true
RETURN u.name

View File

@ -1 +0,0 @@
[ ]

View File

@ -1,6 +0,0 @@
FOR u IN users
RETURN { "id" : u.id, "name" : u.name }
[ { "id" : 1, "name" : "John" },
{ "id" : 2, "name" : "Vanessa" },
{ "id" : 3, "name" : "Amy" } ]

View File

@ -1,6 +0,0 @@
FOR u IN users
RETURN u
[ { "id" : 1, "name" : "John", "active" : false },
{ "age" : 32, "id" : 2, "name" : "Vanessa" },
{ "friends" : [ "John", "Vanessa" ], "id" : 3, "name" : "Amy" } ]

View File

@ -1,4 +0,0 @@
FOR u IN users
RETURN u.id
[ 1, 2, 3 ]

View File

@ -1,2 +0,0 @@
FOR variable-name IN expression
RETURN variable-name

View File

@ -1 +0,0 @@
RETURN expression

View File

@ -1,3 +0,0 @@
FOR u IN users
SORT u.lastName, u.firstName, u.id DESC
RETURN u

View File

@ -1 +0,0 @@
SORT expression direction

View File

@ -1,10 +0,0 @@
"yikes!"
"don't know"
"this is a \"quoted\" word"
"this is a longer string."
"the path separator on Windows is \\"
'yikes!'
'don\'t know'
'this is a longer string."
'the path separator on Windows is \\'

View File

@ -1,17 +0,0 @@
FOR u IN users
LET recommendations = (
FOR r IN recommendations
FILTER u.id == r.userId
SORT u.rank DESC
LIMIT 10
RETURN r
)
RETURN { "user" : u, "recommendations" : recommendations }
FOR u IN users
COLLECT city = u.city INTO g
RETURN { "city" : city, "numUsers" : LENGTH(g), "maxRating": MAX(
FOR r IN g
RETURN r.user.rating
) }

View File

@ -1 +0,0 @@
u.age > 15 || u.active == true ? u.userId : null

View File

@ -1,16 +0,0 @@
TRAVERSAL(friends, friendrelations, "friends/john", "outbound", {
strategy: "depthfirst",
order: "postorder",
itemOrder: "backward",
maxDepth: 6,
trackPaths: true
})
TRAVERSAL(friends, friendrelations, "friends/john", "outbound", {
strategy: "breadthfirst",
order: "preorder",
itemOrder: "forward",
followEdges: [ { type: "knows" }, { state: "FL" } ]
})

View File

@ -1,3 +0,0 @@
TREE(friends, friendrelations, "friends/john", "outbound", "likes", {
itemOrder: "forward"
})

View File

@ -1 +0,0 @@
null < bool < number < string < list < document

View File

@ -1,3 +0,0 @@
FOR u IN users
LET friends = u.friends
RETURN { "name" : u.name, "friends" : friends }

View File

@ -1 +0,0 @@
./arangod --server.endpoint tcp://127.0.0.1:12345 --server.disable-authentication true /tmp/vocbase

View File

@ -1 +0,0 @@
http://127.0.0.1:12345/version

View File

@ -1,4 +0,0 @@
> ./arangod --server.endpoint tcp://127.0.0.1:12345 /tmp/vocbase
2012-02-05T13:23:52Z [455] INFO ArangoDB (version 1.x.y) is ready for business
2012-02-05T13:23:52Z [455] INFO HTTP client port: 12345
2012-02-05T13:23:52Z [455] INFO Have Fun!

View File

@ -1,2 +0,0 @@
> ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/
2012-06-27T15:58:28Z [10133] INFO starting up in supervisor mode

View File

@ -1,3 +0,0 @@
> ps fax | grep arangod
10137 ? Ssl 0:00 ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/
10142 ? Sl 0:00 \_ ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/

View File

@ -1,5 +0,0 @@
> kill -SIGSEGV 10142
> ps fax | grep arangod
10137 ? Ssl 0:00 ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/
10168 ? Sl 0:00 \_ ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/

View File

@ -0,0 +1,261 @@
Compiling ArangoDB from scratch {#Compiling}
============================================
@EMBEDTOC{CompilingTOC}
Compiling ArangoDB {#CompilingIntro}
====================================
The following sections describe how to compile and build the ArangoDB from
scratch. The ArangoDB will compile on most Linux and Mac OS X systems. It
assumes that you use the GNU C++ compiler to compile the source. The ArangoDB
has been tested with the GNU C++ compiler, but should compile with any Posix
compliant compiler. Please let us know, whether you successfully compiled it
with another C++ compiler.
There are possibilities:
- all-in-one: this version contains the source code of the ArangoDB, all
generated files from the autotools, FLEX, and BISON as well
as a version of V8, libev, and ICU.
- devel: this version contains the development version of the ArangoDB.
Use this branch, if you want to make changes to ArangoDB
source.
The devel version requires a complete development environment, while the
all-in-one version allows you to compile the ArangoDB without installing all the
prerequisites. The disadvantage is that it takes longer to compile and you
cannot make changes to the flex or bison files.
@section CompilingAmazonMicroInstance Amazon Micro Instance
@@sohgoh has reported that it is very easy to install ArangoDB on an
Amazon Micro Instance:
amazon> sudo yum install readline-devel
amazon> ./configure
amazon> make
amazon> make install
For detailed instructions the following section.
All-In-One Version {#CompilingAIO}
==================================
Basic System Requirements {#CompilingAIOPrerequisites}
------------------------------------------------------
Verify that your system contains:
- the GNU C++ compiler "g++" and standard C++ libraries
- the GNU make
In addition you will need the following library:
- the GNU readline library
- the OpenSSL library
Under Mac OS X you also need to install:
- Xcode
- scons
Download the Source {#DownloadSourceAIO}
----------------------------------------
Download the latest source using GIT:
git clone git://github.com/triAGENS/ArangoDB.git
Configure {#CompilingAIOConfigure}
----------------------------------
Switch into the ArangoDB directory
cd ArangoDB
In order to configure the build environment execute
./configure --enable-all-in-one-v8 --enable-all-in-one-libev --enable-all-in-one-icu
to setup the makefiles. This will check the various system characteristics and
installed libraries.
Compile {#CompilingAIOCompile}
------------------------------
Compile the program by executing
make
This will compile the ArangoDB and create a binary of the server in
./bin/arangod
Test {#CompilingAIOTest}
------------------------
Check the binary by starting it using the command line.
unix> ./arangod --server.endpoint tcp://127.0.0.1:12345 --server.disable-authentication true /tmp/vocbase
This will start up the ArangoDB and listen for HTTP requests on port 12345 bound
to IP address 127.0.0.1. You should see the startup messages
unix> ./arangod --server.endpoint tcp://127.0.0.1:12345 /tmp/vocbase
2012-02-05T13:23:52Z [455] INFO ArangoDB (version 1.x.y) is ready for business
2012-02-05T13:23:52Z [455] INFO HTTP client port: 12345
2012-02-05T13:23:52Z [455] INFO Have Fun!
If it fails with a message about the database directory, please make sure the
database directory you specified (/tmp/vocbase in the above example) exists and
can be written into.
Use your favorite browser to access the URL
http://127.0.0.1:12345/version
This should produce a JSON object like
{"server" : "arango", "version" : "1.x.y"}
as result.
Note that starting ArangoDB in this way will result in error messages being
displayed, because the paths are not yet set up. This will be corrected in the
next step.
Install {#CompilingAIOInstall}
------------------------------
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/sbin/arangod
The configuration file will be installed in
/etc/arangodb/arangod.conf
The database will be installed in
/var/arangodb
The arango shell will be installed in
/usr/bin/arangosh
Devel Version {#CompilingDevel}
===============================
Basic System Requirements {#CompilingDevelPrerequisites}
--------------------------------------------------------
Verify that your system contains
- the GNU C++ compiler "g++" and standard C++ libraries
- the GNU autotools (autoconf, automake)
- the GNU make
- the GNU scanner generator FLEX, at least version 2.3.35
- the GNU parser generator BISON, at least version 2.4
- Python, version 2 or 3
In addition you will need the following libraries
- libev in version 3 or 4
- Google's V8 engine
- the GNU readline library
- the OpenSSL library
- the Boost test framework library (boost_unit_test_framework)
To compile Google V8 yourself, you will also need Python 2 and SCons.
Some distributions, for example Centos 5, provide only very out-dated versions
of FLEX, BISON, and the V8 engine. In that case you need to compile newer
versions of the programs and/or libraries.
Install or download the prerequisites
- Google's V8 engine (see http://code.google.com/p/v8)
- SCons for compiling V8 (see http://www.scons.org)
- libev (see http://software.schmorp.de/pkg/libev.html)
- OpenSSL (http://openssl.org/)
if neccessary. Most linux systems already supply RPM or DEP for these
packages. Please note that you have to install the development packages.
Download the Source {#DownloadSourceDevel}
------------------------------------------
Download the latest source using GIT:
git clone git://github.com/triAGENS/ArangoDB.git
Setup {#CompilingDevelSetup}
----------------------------
Switch into the ArangoDB directory
cd ArangoDB
The source tarball contains a pre-generated "configure" script. You can
regenerate this script by using the GNU auto tools. In order to do so, execute
make setup
This will call aclocal, autoheader, automake, and autoconf in the correct order.
Configure {#CompilingDevelConfigure}
------------------------------------
In order to configure the build environment execute
unix> ./configure --disable-all-in-one-v8 --disable-all-in-one-libev --disable-all-in-one-icu --enable-maintainer-mode
to setup the makefiles. This will check for the various system characteristics
and installed libraries.
Now continue with @ref CompilingAIOCompile.
The following configuration options exists:
`\-\-enable-all-in-one-libev` tells the build system to use the bundled version
of LIBEV instead of using the system version.
`\-\-disable-all-in-one-libev` tells the build system to use the installed
system version of LIBEV instead of compiling the supplied version from the
3rdParty directory in the make run.
`\-\-enable-all-in-one-v8` tells the build system to use the bundled version of
V8 instead of using the system version.
`\-\-disable-all-in-one-v8` tells the build system to use the installed system
version of V8 instead of compiling the supplied version from the 3rdParty
directory in the make run.
`\-\-enable-all-in-one-icu` tells the build system to use the bundled version of
ICU instead of using the system version.
`\-\-disable-all-in-one-icu` tells the build system to use the installed system
version of ICU instead of compiling the supplied version from the 3rdParty
directory in the make run.
`\-\-enable-maintainer-mode` tells the build system to use BISON and FLEX to
regenerate the parser and scanner files. If disabled, the supplied files will be
used so you cannot make changes to the parser and scanner files. You need at
least BISON 2.4.1 and FLEX 2.5.35. This option also allows you to make changes
to the error messages file, which is converted to js and C header files using
Python. You will need Python 2 or 3 for this. Furthermore, this option enables
additional test cases to be executed in a `make unittests` run. You also need to
install the Boost test framework for this.
`\-\-enable-arangob` tells the build system to also build the arangob benchmark
tool. The binary will be built in the bin subdirectory.

View File

@ -0,0 +1,18 @@
TOC {#CompilingTOC}
===================
- @ref Compiling
- @ref CompilingIntro
- @ref CompilingAmazonMicroInstance
- @ref CompilingAIO
- @ref CompilingAIOPrerequisites
- @ref DownloadSourceAIO
- @ref CompilingAIOConfigure
- @ref CompilingAIOCompile
- @ref CompilingAIOTest
- @ref CompilingAIOInstall
- @ref CompilingDevel
- @ref CompilingDevelPrerequisites
- @ref DownloadSourceDevel
- @ref CompilingDevelSetup
- @ref CompilingDevelConfigure

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,185 @@
ArangoDB Query Language (AQL) Examples {#AqlExamples}
=====================================================
Simple queries {#AqlExamplesSimple}
===================================
This page contains some examples for how to write queries in AQL. For better
understandability, the query results are also included.
A query that returns a string value. the result string is contained in a list
because the result of every valid query is a list:
RETURN "this will be returned"
["this will be returned"]
A query that creates the cross products of two lists, and runs a projection on it:
FOR year in [ 2011, 2012, 2013 ]
FOR quarter IN [ 1, 2, 3, 4 ]
RETURN { "y" : "year", "q" : quarter, "nice" : CONCAT(TO_STRING(quarter), "/", TO_STRING(year)) }
[ { "y" : "year", "q" : 1, "nice" : "1/2011" },
{ "y" : "year", "q" : 2, "nice" : "2/2011" },
{ "y" : "year", "q" : 3, "nice" : "3/2011" },
{ "y" : "year", "q" : 4, "nice" : "4/2011" },
{ "y" : "year", "q" : 1, "nice" : "1/2012" },
{ "y" : "year", "q" : 2, "nice" : "2/2012" },
{ "y" : "year", "q" : 3, "nice" : "3/2012" },
{ "y" : "year", "q" : 4, "nice" : "4/2012" },
{ "y" : "year", "q" : 1, "nice" : "1/2013" },
{ "y" : "year", "q" : 2, "nice" : "2/2013" },
{ "y" : "year", "q" : 3, "nice" : "3/2013" },
{ "y" : "year", "q" : 4, "nice" : "4/2013" } ]
Collection-based queries {#AqlExamplesCollection}
=================================================
Return 5 documents from a users collection, unaltered:
FOR u IN users
LIMIT 0, 5
RETURN u
[ { "_id" : "9259836/10505020", "_rev" : "10505020", "active" : true, "id" : 100, "age" : 37, "name" : "John", "gender" : "m" },
{ "_id" : "9259836/11553596", "_rev" : "11553596", "active" : true, "id" : 107, "age" : 30, "gender" : "m", "name" : "Anthony" },
{ "_id" : "9259836/11094844", "_rev" : "11094844", "active" : true, "id" : 101, "age" : 36, "name" : "Fred", "gender" : "m" },
{ "_id" : "9259836/11619132", "_rev" : "11619132", "active" : true, "id" : 108, "age" : 29, "name" : "Jim", "gender" : "m" },
{ "_id" : "9259836/11160380", "_rev" : "11160380", "active" : false, "id" : 102, "age" : 35, "name" : "Jacob", "gender" : "m" } ]
Return a projection from a users collection:
FOR u IN users
LIMIT 0, 5
RETURN { "user" : { "isActive": u.active ? "yes" : "no", "name" : u.name } }
[ { "user" : { "isActive" : "yes", "name" : "John" } },
{ "user" : { "isActive" : "yes", "name" : "Anthony" } },
{ "user" : { "isActive" : "yes", "name" : "Fred" } },
{ "user" : { "isActive" : "yes", "name" : "Jim" } },
{ "user" : { "isActive" : "no", "name" : "Jacob" } } ]
Return a filtered projection from a users collection:
FOR u IN users
FILTER u.active == true && u.age >= 30
SORT u.age DESC
RETURN { "age" : u.age, "name" : u.name }
[ { "age" : 37, "name" : "John" },
{ "age" : 37, "name" : "Sophia" },
{ "age" : 36, "name" : "Fred" },
{ "age" : 36, "name" : "Emma" },
{ "age" : 34, "name" : "Madison" },
{ "age" : 33, "name" : "Michael" },
{ "age" : 33, "name" : "Chloe" },
{ "age" : 32, "name" : "Alexander" },
{ "age" : 31, "name" : "Daniel" },
{ "age" : 31, "name" : "Abigail" },
{ "age" : 30, "name" : "Anthony" },
{ "age" : 30, "name" : "Isabella" } ]
Joins {#AqlExamplesJoins}
=========================
Getting the names of friends (also users) for users. this is achieved by "joining" a relations table:
FOR u IN users
FILTER u.active == true
LET friends = (FOR f IN userRelations
FILTER f.from == u.id
FOR u2 IN users
FILTER f.to == u2.id
RETURN u2.name
)
RETURN { "user" : u.name, "friends" : friends }
[ { "user" : "John", "friends" : ["Diego", "Mary", "Abigail"] },
{ "user" : "Anthony", "friends" : ["Madison"] },
{ "user" : "Fred", "friends" : ["Mariah"] },
{ "user" : "Jim", "friends" : ["Mariah"] },
{ "user" : "Diego", "friends" : ["Mary"] },
{ "user" : "Sophia", "friends" : ["Madison", "John"] },
{ "user" : "Michael", "friends" : ["John", "Jim"] },
{ "user" : "Emma", "friends" : ["Jacob", "Madison"] },
{ "user" : "Alexander", "friends" : ["Michael", "John"] },
{ "user" : "Daniel", "friends" : ["Eva"] },
{ "user" : "Madison", "friends" : ["Anthony", "Daniel"] },
{ "user" : "Chloe", "friends" : ["Alexander"] },
{ "user" : "Abigail", "friends" : ["Daniel", "John", "Jacob", "Jim"] },
{ "user" : "Isabella", "friends" : ["Madison", "Diego"] },
{ "user" : "Mary", "friends" : ["Isabella", "Diego", "Michael"] },
{ "user" : "Mariah", "friends" : ["Madison", "Ethan", "Eva"] } ]
Getting users favorite song names from a joined "songs" collection:
FOR u IN users
LET likes = (
FOR s IN songs
FILTER s._id IN u.likes
RETURN CONCAT(s.artist, " - ", s.song)
)
SORT RAND()
LIMIT 0, 8
RETURN { "user" : u.name, "likes" : likes }
[ { "user" : "Eva", "likes" : ["Chocolate - Ritmo De La Noche", "4 The Cause - Stand By Me", "Tony Carey - Room with a view"] },
{ "user" : "Mary", "likes" : ["Hall and Oates - Maneater", "Elton John - Candle In The Wind", "A-Ha - Crying In The Rain", "Laid Back - Sunshine Reggae", "Cock Robin - The promise you made"] },
{ "user" : "Alexander", "likes" : ["Moby - Feel so real", "Rednex - Old pop in an oak", "2 Unlimited - No Limit"] },
{ "user" : "Michael", "likes" : ["The Kelly Family - David's Song"] },
{ "user" : "Ethan", "likes" : ["Technotronic - Megamix", "Gipsy Kings - Baila me", "Goombay Dance Band - Seven Tears", "Sandra - Hiroshima"] }, { "user" : "Isabella", "likes" : ["Milli Vanilli - Girl, I'm Gonna Miss You", "Technotronic - Get Up", "Right Said Fred - Don't Talk Just Kiss", "Peter Schilling - Major Tom (Völlig losgelöst)"] },
{ "user" : "Abigail", "likes" : ["Tina Turner - Typical male", "Liquido - Narcotic"] },
{ "user" : "Jim", "likes" : ["Berlin - Take my breath away", "Ashford & Simpson - Solid", "Fine Young Cannibals - She drives me cracy", "Cut'N'Move - Give it up", "Cyndi Lauper - Time after time"] },
{ "user" : "Jacob", "likes" : ["Kylie Minogue - The Loco-motion", "Eruption - Runaway"] } ]
Grouping {#AqlExamplesGrouping}
===============================
Group users by age:
FOR u IN users
FILTER u.active == true
COLLECT age = u.age INTO group
SORT age DESC
RETURN { "age" : age, "users" : group }
[ { "age" : 37, "users" : ["Sophia", "John"] },
{ "age" : 36, "users" : ["Emma", "Fred"] },
{ "age" : 34, "users" : ["Madison"] },
{ "age" : 33, "users" : ["Chloe", "Michael"] },
{ "age" : 32, "users" : ["Alexander"] },
{ "age" : 31, "users" : ["Abigail", "Daniel"] },
{ "age" : 30, "users" : ["Isabella", "Anthony"] },
{ "age" : 29, "users" : ["Mary", "Jim"] },
{ "age" : 28, "users" : ["Mariah", "Diego"] } ]
Group users by agegroup and gender:
FOR u IN users
FILTER u.active == true
COLLECT ageGroup = FLOOR(u.age/5) * 5, gender = u.gender INTO group
SORT ageGroup DESC
RETURN { "ageGroup" : ageGroup, "gender" : gender, "numUsers" : LENGTH(group) }
[ { "ageGroup" : 35, "gender" : "f", "numUsers" : 2 },
{ "ageGroup" : 35, "gender" : "m", "numUsers" : 2 },
{ "ageGroup" : 30, "gender" : "f", "numUsers" : 4 },
{ "ageGroup" : 30, "gender" : "m", "numUsers" : 4 },
{ "ageGroup" : 25, "gender" : "f", "numUsers" : 2 },
{ "ageGroup" : 25, "gender" : "m", "numUsers" : 2 } ]
Get the 3 agegroups with most users:
FOR u IN users
FILTER u.active == true
COLLECT ageGroup = FLOOR(u.age/5) * 5 INTO group
FILTER LENGTH(group) > 2 /* group must contain at least 3 users */
SORT LENGTH(group) DESC
LIMIT 0, 3
RETURN { "ageGroup" : ageGroup, "numUsers" : LENGTH(group), "users" : group[*].u.name }
[ { "ageGroup" : 30, "numUsers" : 8, "users" : ["Alexander", "Isabella", "Michael", "Abigail", "Anthony", "Daniel", "Madison", "Chloe"] },
{ "ageGroup" : 25, "numUsers" : 4, "users" : ["Mariah", "Mary", "Jim", "Diego"] },
{ "ageGroup" : 35, "numUsers" : 4, "users" : ["Emma", "Sophia", "Fred", "John"] } ]

View File

@ -0,0 +1,4 @@
TOC {#AqlExamples}
==================
- @ref AqlExamples

View File

@ -0,0 +1,29 @@
TOC {#AqlTOC}
=============
- @ref Aql
- @ref AqlPurpose
- @ref AqlHowToUse
- @ref AqlQueryResults
- @ref AqlBasics
- @ref AqlWhitespace
- @ref AqlComments
- @ref AqlKeywords
- @ref AqlNames
- @ref AqlTypes
- @ref AqlParameter
- @ref AqlTypeOrder
- @ref AqlData
- @ref AqlOperators
- @ref AqlFunctions
- @ref AqlOperations
- @ref AqlOperationFor
- @ref AqlOperationReturn
- @ref AqlOperationFilter
- @ref AqlOperationSort
- @ref AqlOperationLimit
- @ref AqlOperationLet
- @ref AqlOperationCollect
- @ref AqlAdvanced
- @ref AqlSubqueries
- @ref AqlExpansion

View File

@ -0,0 +1,248 @@
Command-Line Options {#CommandLine}
===================================
@NAVIGATE_CommandLine
@EMBEDTOC{CommandLineTOC}
General Options {#CommandLineGeneralOptions}
============================================
@anchor CommandLineHelp
@copydetails triagens::rest::ApplicationServer::_options
@CLEARPAGE
@anchor CommandLineVersion
@copydetails triagens::rest::ApplicationServer::_version
@CLEARPAGE
@anchor CommandLineUpgrade
@copydetails triagens::arango::ApplicationV8::_performUpgrade
@CLEARPAGE
@anchor CommandLineConfiguration
@copydetails triagens::rest::ApplicationServer::_configFile
@CLEARPAGE
@anchor CommandLineDaemon
@CMDOPT{\--daemon}
Runs the server as a daemon (as a background process). This parameter can only
be set if the pid (process id) file is specified. That is, unless a value to the
parameter pid-file is given, then the server will report an error and exit.
@CLEARPAGE
@anchor CommandLineDefaultLanguage
@copydetails triagens::arango::ArangoServer::_defaultLanguage
@CLEARPAGE
@anchor CommandLineSupervisor
@CMDOPT{\--supervisor}
Executes the server in supervisor mode. In the event that the server
unexpectedly terminates due to an internal error, the supervisor will
automatically restart the server. Setting this flag automatically implies that
the server will run as a daemon. Note that, as with the daemon flag, this flag
requires that the pid-file parameter will set.
unix> ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/
2012-06-27T15:58:28Z [10133] INFO starting up in supervisor mode
As can be seen (e.g. by executing the ps command), this will start a supervisor
process and the actual database process:
unix> ps fax | grep arangod
10137 ? Ssl 0:00 ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/
10142 ? Sl 0:00 \_ ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/
When the database process terminates unexpectedly, the supervisor process will
start up a new database process:
> kill -SIGSEGV 10142
> ps fax | grep arangod
10137 ? Ssl 0:00 ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/
10168 ? Sl 0:00 \_ ./arangod --supervisor --pid-file /var/run/arangodb.pid /tmp/vocbase/
@CLEARPAGE
@anchor CommandLineUid
@copydetails triagens::rest::ApplicationServer::_uid
@CLEARPAGE
@anchor CommandLineGid
@copydetails triagens::rest::ApplicationServer::_gid
@CLEARPAGE
@anchor CommandLinePidFile
@copydetails triagens::rest::AnyServer::_pidFile
Command-Line Options for the ArangoDB {#CommandLineArango}
==========================================================
@anchor CommandLineArangoEndpoint
@copydetails triagens::rest::ApplicationEndpointServer::_endpoints
@CLEARPAGE
@anchor CommandLineArangoDisableAuthentication
@copydetails triagens::rest::ApplicationEndpointServer::_disableAuthentication
@CLEARPAGE
@anchor CommandLineArangoKeepAliveTimeout
@copydetails triagens::rest::ApplicationEndpointServer::_keepAliveTimeout
@CLEARPAGE
@anchor CommandLineArangoKeyFile
@copydetails triagens::rest::ApplicationEndpointServer::_httpsKeyfile
@CLEARPAGE
@anchor CommandLineArangoCaFile
@copydetails triagens::rest::ApplicationEndpointServer::_cafile
@CLEARPAGE
@anchor CommandLineArangoSslProtocol
@copydetails triagens::rest::ApplicationEndpointServer::_sslProtocol
@CLEARPAGE
@anchor CommandLineArangoSslCacheMode
@copydetails triagens::rest::ApplicationEndpointServer::_sslCache
@CLEARPAGE
@anchor CommandLineArangoSslOptions
@copydetails triagens::rest::ApplicationEndpointServer::_sslOptions
@CLEARPAGE
@anchor CommandLineArangoSslCipherList
@copydetails triagens::rest::ApplicationEndpointServer::_sslCipherList
@CLEARPAGE
@anchor CommandLineArangoDisableAdminInterface
@CMDOPT{\--disable-admin-interface @CA{value}}
If this option is specified and @CA{value} is `true`, then the HTML
administration interface at URL `http://server:port/` will be disabled and
cannot used by any user at all.
@CLEARPAGE
@anchor CommandLineArangoDirectory
@copydetails triagens::arango::ArangoServer::_databasePath
@CLEARPAGE
@anchor CommandLineArangoMaximalJournalSize
@copydetails triagens::arango::ArangoServer::_defaultMaximalSize
@CLEARPAGE
@anchor CommandLineArangoWaitForSync
@copydetails triagens::arango::ArangoServer::_defaultWaitForSync
@CLEARPAGE
@anchor CommandLineArangoForceSyncShapes
@copydetails triagens::arango::ArangoServer::_forceSyncShapes
@CLEARPAGE
@anchor CommandLineArangoRemoveOnDrop
@copydetails triagens::arango::ArangoServer::_removeOnDrop
@CLEARPAGE
@anchor CommandLineArangoJsGcFrequency
@copydetails triagens::arango::ApplicationV8::_gcFrequency
@CLEARPAGE
@anchor CommandLineArangoJsGcInterval
@copydetails triagens::arango::ApplicationV8::_gcInterval
@CLEARPAGE
@anchor CommandLineArangoJsV8Options
@copydetails triagens::arango::ApplicationV8::_v8Options;
@CLEARPAGE
Command-Line Options for Communication {#CommandLineScheduler}
==============================================================
@anchor CommandLineSchedulerThreads
@copydetails triagens::rest::ApplicationScheduler::_nrSchedulerThreads
@CLEARPAGE
@anchor CommandLineSchedulerBackend
@copydetails triagens::rest::ApplicationScheduler::_backend
@CLEARPAGE
@anchor CommandLineSchedulerShowIoBackends
@CMDOPT{\--show-io-backends}
If this option is specified, then the server will list available backends and
exit. This option is useful only when used in conjunction with the option
scheduler.backend. An integer is returned (which is platform dependent) which
indicates available backends on your platform. See libev for further details and
for the meaning of the integer returned. This describes the allowed integers for
`scheduler.backend`, see @ref CommandLineScheduler "here" for details.
@CLEARPAGE
Command-Line Options for Logging {#CommandLineLogging}
======================================================
There are two different kinds of logs. Human-readable logs and machine-readable
logs. The human-readable logs are used to provide an administration with
information about the server. The machine-readable logs are used to provide
statistics about executed requests and timings about computation steps.
General Logging Options {#CommandLineLoggingGeneral}
----------------------------------------------------
@anchor CommandLineLoggingLogFile
@copydetails triagens::rest::ApplicationServer::_logFile
@CLEARPAGE
@anchor CommandLineLoggingLogSeverity
@copydetails triagens::rest::ApplicationServer::_logSeverity
@CLEARPAGE
@anchor CommandLineLoggingLogSyslog
@copydetails triagens::rest::ApplicationServer::_logSyslog
@CLEARPAGE
Human Readable Logging {#CommandLineLoggingHuman}
-------------------------------------------------
@anchor CommandLineLoggingLogLevel
@copydetails triagens::rest::ApplicationServer::_logLevel
@CLEARPAGE
@anchor CommandLineLoggingLogLineNumber
@copydetails triagens::rest::ApplicationServer::_logLineNumber
@CLEARPAGE
@anchor CommandLineLoggingLogPrefix
@copydetails triagens::rest::ApplicationServer::_logPrefix
@CLEARPAGE
@anchor CommandLineLoggingLogThread
@copydetails triagens::rest::ApplicationServer::_logThreadId
@CLEARPAGE
@anchor CommandLineLoggingLogFilter
@copydetails triagens::rest::ApplicationServer::_logFilter
@CLEARPAGE
Machine Readable Logging {#CommandLineLoggingMachine}
-----------------------------------------------------
@anchor CommandLineLoggingLogApplication
@copydetails triagens::rest::ApplicationServer::_logApplicationName
@CLEARPAGE
@anchor CommandLineLoggingLogFacility
@copydetails triagens::rest::ApplicationServer::_logFacility
@CLEARPAGE
@anchor CommandLineLoggingLogFormat
@copydetails triagens::rest::ApplicationServer::_logFormat
@CLEARPAGE
@anchor CommandLineLoggingLogHostName
@copydetails triagens::rest::ApplicationServer::_logHostName
@CLEARPAGE
Command-Line Options for Random Numbers {#CommandLineRandom}
============================================================
@anchor CommandLineRandomGenerator
@copydetails triagens::rest::ApplicationServer::_randomGenerator

View File

@ -0,0 +1,56 @@
TOC {#CommandLineTOC}
=====================
- @ref CommandLine
- @ref CommandLineGeneralOptions
- @ref CommandLineHelp "help"
- @ref CommandLineVersion "version"
- @ref CommandLineUpgrade "upgrade"
- @ref CommandLineConfiguration "configuration"
- @ref CommandLineDaemon "daemon"
- @ref CommandLineDefaultLanguage "default-language"
- @ref CommandLineSupervisor "supervisor"
- @ref CommandLineUid "uid"
- @ref CommandLineGid "gid"
- @ref CommandLinePidFile "pid-file"
- @ref CommandLineArango
- @ref CommandLineArangoEndpoint "server.endpoint"
- @ref CommandLineArangoDisableAuthentication "server.disable-authentication"
- @ref CommandLineArangoKeepAliveTimeout "server.keep-alive-timeout"
- @ref CommandLineArangoKeyFile "server.keyfile"
- @ref CommandLineArangoCaFile "server.cafile"
- @ref CommandLineArangoSslProtocol "server.ssl-protocol"
- @ref CommandLineArangoSslCacheMode "server.ssl-cache"
- @ref CommandLineArangoSslOptions "server.ssl-options"
- @ref CommandLineArangoSslCipherList "server.ssl-cipher-list"
- @ref CommandLineArangoDirectory "database.directory"
- @ref CommandLineArangoMaximalJournalSize "database.maximal-journal-size"
- @ref CommandLineArangoWaitForSync "database.wait-for-sync"
- @ref CommandLineArangoForceSyncShapes "database.force-sync-shapes"
- @ref CommandLineArangoRemoveOnDrop "database.remove-on-compacted"
- @ref CommandLineArangoJsGcFrequency "javascript.gc-frequency"
- @ref CommandLineArangoJsGcInterval "javascript.gc-interval"
- @ref CommandLineArangoJsV8Options "javascript.v8-options"
- @ref CommandLineLogging
- @ref CommandLineLoggingGeneral
- @ref CommandLineLoggingLogFile "log.file"
- @ref CommandLineLoggingLogSeverity "log.severity"
- @ref CommandLineLoggingLogSyslog "log.syslog"
- @ref CommandLineLoggingHuman
- @ref CommandLineLoggingLogLevel "log.level"
- @ref CommandLineLoggingLogLineNumber "log.line-number"
- @ref CommandLineLoggingLogPrefix "log.prefix"
- @ref CommandLineLoggingLogThread "log.thread"
- @ref CommandLineLoggingLogFilter "log.filter"
- @ref CommandLineLoggingMachine
- @ref CommandLineLoggingLogApplication "log.application"
- @ref CommandLineLoggingLogFacility "log.facility"
- @ref CommandLineLoggingLogFormat "log.format"
- @ref CommandLineLoggingLogHostName "log.hostname"
- @ref CommandLineScheduler
- @ref CommandLineSchedulerThreads "scheduler.threads"
- @ref CommandLineSchedulerBackend "scheduler.backend"
- @ref CommandLineSchedulerShowIoBackends "show-io-backends"
- @ref CommandLineRandom
- @ref CommandLineRandomGenerator "random.generator"
- @ref CommandLineRandomGenerator "random.no-seed"

View File

@ -3,20 +3,6 @@ ArangoDB's User Manual (@VERSION) {#UserManual}
@NAVIGATE_UserManual
@if LATEX
- @ref FirstStepsArangoDB
- @ref UserManualArangosh
- @ref UserManualWebInterface
- @ref ShellCollection
- @ref ShellDocument
- @ref ShellEdge
- @ref SimpleQueries
- @ref Aql
- @ref UserManualActions
@latexonly\appendix@endlatexonly
- @ref CommandLine
- @ref Glossary
@else
@CHAPTER_REF{FirstStepsArangoDB}
@CHAPTER_REF{UserManualArangosh}
@CHAPTER_REF{UserManualWebInterface}
@ -25,6 +11,7 @@ ArangoDB's User Manual (@VERSION) {#UserManual}
@CHAPTER_REF{ShellEdge}
@CHAPTER_REF{SimpleQueries}
@CHAPTER_REF{Aql}
@CHAPTER_REF{AqlExamples}
@CHAPTER_REF{UserManualActions}
@CHAPTER_REF{CommandLine}
@endif
@CHAPTER_REF{Glossary}

View File

@ -1,56 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
/// @brief ArangoDB query language (AQL), examples
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2012 triagens GmbH, Cologne, Germany
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Jan Steemann
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// @page AqlExamples ArangoDB Query Language (AQL) Examples
///
/// This page contains some examples for how to write queries in AQL. For better
/// understandability, the query results are also included.
///
/// @section AqlExamplesSimple Simple queries
///
/// @verbinclude aqlexample-simple
///
/// @section AqlExamplesCollection Collection-based queries
///
/// @verbinclude aqlexample-collection
///
/// @section AqlExamplesJoins Joins
///
/// @verbinclude aqlexample-join
///
/// @section AqlExamplesGrouping Grouping
///
/// @verbinclude aqlexample-grouping
///
////////////////////////////////////////////////////////////////////////////////
// Local Variables:
// mode: c++
// mode: outline-minor
// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @\\}\\)"
// End:

File diff suppressed because it is too large Load Diff

View File

@ -1,324 +0,0 @@
//////////////////////////////////////////////////////////////////////////////
/// @brief user guide guide
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2012 triagens GmbH, Cologne, Germany
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Dr. Frank Celler
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// @page CommandLineTOC
///
/// <ul>
/// <li>@ref CommandLine
/// <ul>
/// <li>@ref CommandLineGeneralOptions
/// <ul>
/// <li>@ref CommandLineHelp "help"</li>
/// <li>@ref CommandLineVersion "version"</li>
/// <li>@ref CommandLineUpgrade "upgrade"</li>
/// <li>@ref CommandLineConfiguration "configuration"</li>
/// <li>@ref CommandLineDaemon "daemon"</li>
/// <li>@ref CommandLineDefaultLanguage "default-language"</li>
/// <li>@ref CommandLineSupervisor "supervisor"</li>
/// <li>@ref CommandLineUid "uid"</li>
/// <li>@ref CommandLineGid "gid"</li>
/// <li>@ref CommandLinePidFile "pid-file"</li>
/// </ul>
/// </li>
/// <li>@ref CommandLineArango
/// <ul>
/// <li>@ref CommandLineArangoEndpoint "server.endpoint"</li>
/// <li>@ref CommandLineArangoDisableAuthentication "server.disable-authentication"</li>
/// <li>@ref CommandLineArangoKeepAliveTimeout "server.keep-alive-timeout"</li>
/// <li>@ref CommandLineArangoKeyFile "server.keyfile"</li>
/// <li>@ref CommandLineArangoCaFile "server.cafile"</li>
/// <li>@ref CommandLineArangoSslProtocol "server.ssl-protocol"</li>
/// <li>@ref CommandLineArangoSslCacheMode "server.ssl-cache"</li>
/// <li>@ref CommandLineArangoSslOptions "server.ssl-options"</li>
/// <li>@ref CommandLineArangoSslCipherList "server.ssl-cipher-list"</li>
/// <li>@ref CommandLineArangoDirectory "database.directory"</li>
/// <li>@ref CommandLineArangoMaximalJournalSize "database.maximal-journal-size"</li>
/// <li>@ref CommandLineArangoWaitForSync "database.wait-for-sync"</li>
/// <li>@ref CommandLineArangoForceSyncShapes "database.force-sync-shapes"</li>
/// <li>@ref CommandLineArangoRemoveOnDrop "database.remove-on-compacted"</li>
/// <li>@ref CommandLineArangoJsGcFrequency "javascript.gc-frequency"</li>
/// <li>@ref CommandLineArangoJsGcInterval "javascript.gc-interval"</li>
/// <li>@ref CommandLineArangoJsV8Options "javascript.v8-options"</li>
/// </ul>
/// </li>
/// <li>@ref CommandLineLogging
/// <ul>
/// <li>@ref CommandLineLoggingGeneral
/// <ul>
/// <li>@ref CommandLineLoggingLogFile "log.file"</li>
/// <li>@ref CommandLineLoggingLogSeverity "log.severity"</li>
/// <li>@ref CommandLineLoggingLogSyslog "log.syslog"</li>
/// </ul>
/// </li>
/// <li>@ref CommandLineLoggingHuman
/// <ul>
/// <li>@ref CommandLineLoggingLogLevel "log.level"</li>
/// <li>@ref CommandLineLoggingLogLineNumber "log.line-number"</li>
/// <li>@ref CommandLineLoggingLogPrefix "log.prefix"</li>
/// <li>@ref CommandLineLoggingLogThread "log.thread"</li>
/// <li>@ref CommandLineLoggingLogFilter "log.filter"</li>
/// </ul>
/// </li>
/// <li>@ref CommandLineLoggingMachine
/// <ul>
/// <li>@ref CommandLineLoggingLogApplication "log.application"</li>
/// <li>@ref CommandLineLoggingLogFacility "log.facility"</li>
/// <li>@ref CommandLineLoggingLogFormat "log.format"</li>
/// <li>@ref CommandLineLoggingLogHostName "log.hostname"</li>
/// </ul>
/// </li>
/// </ul>
/// </li>
/// <li>@ref CommandLineScheduler
/// <ul>
/// <li>@ref CommandLineSchedulerThreads "scheduler.threads"</li>
/// <li>@ref CommandLineSchedulerBackend "scheduler.backend"</li>
/// <li>@ref CommandLineSchedulerShowIoBackends "show-io-backends"</li>
/// </ul>
/// </li>
/// <li>@ref CommandLineRandom
/// <ul>
/// <li>@ref CommandLineRandomGenerator "random.generator"</li>
/// <li>@ref CommandLineRandomGenerator "random.no-seed"</li>
/// </ul>
/// </li>
/// </ul>
/// </li>
/// </ul>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// @page CommandLine Command-Line Options
///
/// @NAVIGATE_CommandLine
/// @EMBEDTOC{CommandLineTOC}
///
/// @section CommandLineGeneralOptions General Options
//////////////////////////////////////////////////////
///
/// @anchor CommandLineHelp
/// @copydetails triagens::rest::ApplicationServer::_options
///
/// @anchor CommandLineVersion
/// @copydetails triagens::rest::ApplicationServer::_version
///
/// @anchor CommandLineUpgrade
/// @copydetails triagens::arango::ApplicationV8::_performUpgrade
///
/// @anchor CommandLineConfiguration
/// @copydetails triagens::rest::ApplicationServer::_configFile
///
/// @anchor CommandLineDaemon
/// @CMDOPT{\--daemon}
///
/// Runs the server as a daemon (as a background process). This parameter can
/// only be set if the pid (process id) file is specified. That is, unless a
/// value to the parameter pid-file is given, then the server will report an
/// error and exit.
///
/// @anchor CommandLineDefaultLanguage
/// @copydetails triagens::arango::ArangoServer::_defaultLanguage
///
/// @anchor CommandLineSupervisor
/// @CMDOPT{\--supervisor}
///
/// Executes the server in supervisor mode. In the event that the server
/// unexpectedly terminates due to an internal error, the supervisor will
/// automatically restart the server. Setting this flag automatically implies
/// that the server will run as a daemon. Note that, as with the daemon flag,
/// this flag requires that the pid-file parameter will set.
///
/// @verbinclude supervisor
///
/// As can be seen (e.g. by executing the ps command), this will start a supervisor
/// process and the actual database process:
///
/// @verbinclude supervisor-ps1
///
/// When the database process terminates unexpectedly, the supervisor process will
/// start up a new database process:
///
/// @verbinclude supervisor-ps2
///
/// @anchor CommandLineUid
/// @copydetails triagens::rest::ApplicationServer::_uid
///
/// @anchor CommandLineGid
/// @copydetails triagens::rest::ApplicationServer::_gid
///
/// @anchor CommandLinePidFile
/// @copydetails triagens::rest::AnyServer::_pidFile
///
/// @section CommandLineArango Command-Line Options for the ArangoDB
////////////////////////////////////////////////////////////////////
///
/// @anchor CommandLineArangoEndpoint
/// @copydetails triagens::rest::ApplicationEndpointServer::_endpoints
///
/// @anchor CommandLineArangoDisableAuthentication
/// @copydetails triagens::rest::ApplicationEndpointServer::_disableAuthentication
///
/// @anchor CommandLineArangoKeepAliveTimeout
/// @copydetails triagens::rest::ApplicationEndpointServer::_keepAliveTimeout
///
/// @anchor CommandLineArangoKeyFile
/// @copydetails triagens::rest::ApplicationEndpointServer::_httpsKeyfile
///
/// @anchor CommandLineArangoCaFile
/// @copydetails triagens::rest::ApplicationEndpointServer::_cafile
///
/// @anchor CommandLineArangoSslProtocol
/// @copydetails triagens::rest::ApplicationEndpointServer::_sslProtocol
///
/// @anchor CommandLineArangoSslCacheMode
/// @copydetails triagens::rest::ApplicationEndpointServer::_sslCache
///
/// @anchor CommandLineArangoSslOptions
/// @copydetails triagens::rest::ApplicationEndpointServer::_sslOptions
///
/// @anchor CommandLineArangoSslCipherList
/// @copydetails triagens::rest::ApplicationEndpointServer::_sslCipherList
///
/// @anchor CommandLineArangoDisableAdminInterface
/// @CMDOPT{\--disable-admin-interface @CA{value}}
///
/// If this option is specified and @CA{value} is @LIT{true}, then the HTML
/// administration interface at URL @LIT{http://server:port/} will be disabled
/// and cannot used by any user at all.
///
/// @anchor CommandLineArangoDirectory
/// @copydetails triagens::arango::ArangoServer::_databasePath
///
/// @anchor CommandLineArangoMaximalJournalSize
/// @copydetails triagens::arango::ArangoServer::_defaultMaximalSize
///
/// @anchor CommandLineArangoWaitForSync
/// @copydetails triagens::arango::ArangoServer::_defaultWaitForSync
///
/// @anchor CommandLineArangoForceSyncShapes
/// @copydetails triagens::arango::ArangoServer::_forceSyncShapes
///
/// @anchor CommandLineArangoRemoveOnDrop
/// @copydetails triagens::arango::ArangoServer::_removeOnDrop
///
/// @anchor CommandLineArangoJsGcFrequency
/// @copydetails triagens::arango::ApplicationV8::_gcFrequency
///
/// @anchor CommandLineArangoJsGcInterval
/// @copydetails triagens::arango::ApplicationV8::_gcInterval
///
/// @anchor CommandLineArangoJsV8Options
/// @copydetails triagens::arango::ApplicationV8::_v8Options;
///
/// @section CommandLineScheduler Command-Line Options for Communication
////////////////////////////////////////////////////////////////////////
///
/// @anchor CommandLineSchedulerThreads
/// @copydetails triagens::rest::ApplicationScheduler::_nrSchedulerThreads
///
/// @anchor CommandLineSchedulerBackend
/// @copydetails triagens::rest::ApplicationScheduler::_backend
///
/// @anchor CommandLineSchedulerShowIoBackends
/// @CMDOPT{\--show-io-backends}
///
/// If this option is specified, then the server will list available backends
/// and exit. This option is useful only when used in conjunction with the
/// option scheduler.backend. An integer is returned (which is platform
/// dependent) which indicates available backends on your platform. See libev
/// for further details and for the meaning of the integer returned. This
/// describes the allowed integers for @LIT{scheduler.backend}, see
/// @ref CommandLineScheduler "here" for details.
///
/// @section CommandLineLogging Command-Line Options for Logging
////////////////////////////////////////////////////////////////
///
/// There are two different kinds of logs. Human-readable logs and
/// machine-readable logs. The human-readable logs are used to provide an
/// administration with information about the server. The machine-readable logs
/// are used to provide statistics about executed requests and timings about
/// computation steps.
///
/// @subsection CommandLineLoggingGeneral General Logging Options
///
/// @anchor CommandLineLoggingLogFile
/// @copydetails triagens::rest::ApplicationServer::_logFile
///
/// @anchor CommandLineLoggingLogSeverity
/// @copydetails triagens::rest::ApplicationServer::_logSeverity
///
/// @anchor CommandLineLoggingLogSyslog
/// @copydetails triagens::rest::ApplicationServer::_logSyslog
///
/// @subsection CommandLineLoggingHuman Human Readable Logging
///
/// @anchor CommandLineLoggingLogLevel
/// @copydetails triagens::rest::ApplicationServer::_logLevel
///
/// @anchor CommandLineLoggingLogLineNumber
/// @copydetails triagens::rest::ApplicationServer::_logLineNumber
///
/// @anchor CommandLineLoggingLogPrefix
/// @copydetails triagens::rest::ApplicationServer::_logPrefix
///
/// @anchor CommandLineLoggingLogThread
/// @copydetails triagens::rest::ApplicationServer::_logThreadId
///
/// @anchor CommandLineLoggingLogFilter
/// @copydetails triagens::rest::ApplicationServer::_logFilter
///
/// @subsection CommandLineLoggingMachine Machine Readable Logging
///
/// @anchor CommandLineLoggingLogApplication
/// @copydetails triagens::rest::ApplicationServer::_logApplicationName
///
/// @anchor CommandLineLoggingLogFacility
/// @copydetails triagens::rest::ApplicationServer::_logFacility
///
/// @anchor CommandLineLoggingLogFormat
/// @copydetails triagens::rest::ApplicationServer::_logFormat
///
/// @anchor CommandLineLoggingLogHostName
/// @copydetails triagens::rest::ApplicationServer::_logHostName
///
/// @section CommandLineRandom Command-Line Options for Random Numbers
//////////////////////////////////////////////////////////////////////
///
/// @anchor CommandLineRandomGenerator
/// @copydetails triagens::rest::ApplicationServer::_randomGenerator
////////////////////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------------
// --SECTION-- END-OF-FILE
// -----------------------------------------------------------------------------
// Local Variables:
// mode: c++
// mode: outline-minor
// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @\\}\\)"
// End:

View File

@ -1,373 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
/// @brief installation guide
//
/// @file
///
/// DISCLAIMER
///
/// Copyright 2012 triagens GmbH, Cologne, Germany
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Dr. Frank Celler
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------------
// --SECTION-- COMPILING
// -----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
/// @page CompilingTOC
///
/// <ul>
/// <li>@ref Compiling
/// <ul>
/// <li>@ref CompilingAmazonMicroInstance
/// </li>
/// <li>@ref CompilingAIO
/// <ul>
/// <li>@ref CompilingAIOPrerequisites
/// </li>
/// <li>@ref DownloadSourceAIO
/// </li>
/// <li>@ref CompilingAIOConfigure
/// </li>
/// <li>@ref CompilingAIOCompile
/// </li>
/// <li>@ref CompilingAIOTest
/// </li>
/// <li>@ref CompilingAIOInstall
/// </li>
/// </ul>
/// </li>
/// <li>@ref CompilingDevel
/// <ul>
/// <li>@ref CompilingDevelPrerequisites
/// </li>
/// <li>@ref DownloadSourceDevel
/// </li>
/// <li>@ref CompilingDevelSetup
/// </li>
/// <li>@ref CompilingDevelConfigure
/// </li>
/// </ul>
/// </li>
/// </ul>
/// </li>
/// </ul>
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// @page Compiling Compiling ArangoDB from scratch
///
/// The following sections describe how to compile and build the ArangoDB from
/// scratch. The ArangoDB will compile on most Linux and Mac OS X systems. It
/// assumes that you use the GNU C++ compiler to compile the source. The
/// ArangoDB has been tested with the GNU C++ compiler, but should compile with
/// any Posix compliant compiler. Please let us know, whether you successfully
/// compiled it with another C++ compiler.
///
/// There are possibilities:
///
/// - all-in-one: this version contains the source code of the ArangoDB, all
/// generated files from the autotools, FLEX, and BISON as well
/// as a version of V8, libev, and ICU.
///
/// - devel: this version contains the development version of the ArangoDB.
/// Use this branch, if you want to make changes to ArangoDB
/// source.
///
/// The devel version requires a complete development environment, while the
/// all-in-one version allows you to compile the ArangoDB without installing
/// all the prerequisites. The disadvantage is that it takes longer to compile
/// and you cannot make changes to the flex or bison files.
///
/// @EMBEDTOC{CompilingTOC}
///
/// @section CompilingAmazonMicroInstance Amazon Micro Instance
///////////////////////////////////////////////////////////////
///
/// @@sohgoh has reported that it is very easy to install ArangoDB on an
/// Amazon Micro Instance:
///
/// @code
/// > sudo yum install readline-devel
/// > ./configure
/// > make
/// > make install
/// @endcode
///
/// For detailed instructions the following section.
///
/// @section CompilingAIO All-In-One Version
////////////////////////////////////////////
///
/// @subsection CompilingAIOPrerequisites Basic System Requirements
///////////////////////////////////////////////////////////////////
///
/// Verify that your system contains:
///
/// - the GNU C++ compiler "g++" and standard C++ libraries
/// - the GNU make
///
/// In addition you will need the following library:
///
/// - the GNU readline library
/// - the OpenSSL library
///
/// Under Mac OS X you also need to install:
///
/// - Xcode
/// - scons
///
/// @subsection DownloadSourceAIO Download the Source
/////////////////////////////////////////////////////
///
/// Download the latest source using GIT:
///
/// @LIT{git clone git://github.com/triAGENS/ArangoDB.git}
///
/// @subsection CompilingAIOConfigure Configure
///////////////////////////////////////////////
///
/// Switch into the ArangoDB directory
///
/// @code
/// cd ArangoDB
/// @endcode
///
/// In order to configure the build environment execute
///
/// @code
/// ./configure --enable-all-in-one-v8 --enable-all-in-one-libev --enable-all-in-one-icu
/// @endcode
///
/// to setup the makefiles. This will check the various system characteristics
/// and installed libraries.
///
/// @subsection CompilingAIOCompile Compile
///////////////////////////////////////////
///
/// Compile the program by executing
///
/// @code
/// make
/// @endcode
///
/// This will compile the ArangoDB and create a binary of the server in
///
/// @code
/// ./bin/arangod
/// @endcode
///
/// @subsection CompilingAIOTest Test
/////////////////////////////////////
///
/// Check the binary by starting it using the command line.
///
/// @verbinclude arangod-startup
///
/// This will start up the ArangoDB and listen for HTTP requests on port 12345
/// bound to IP address 127.0.0.1. You should see the startup messages
///
/// @TINYEXAMPLE{startup1,startup message}
///
/// If it fails with a message about the database directory, please make sure the database
/// directory you specified (/tmp/vocbase in the above example) exists and can be written into.
///
/// Use your favorite browser to access the URL
///
/// @verbinclude arangod-version
///
/// This should produce a JSON object like
///
/// @code
/// {"server" : "arango", "version" : "1.x.y"}
/// @endcode
///
/// as result.
///
/// Note that starting ArangoDB in this way will result in error messages being
/// displayed, because the paths are not yet set up. This will be corrected in
/// the next step.
///
/// @subsection CompilingAIOInstall Install
///////////////////////////////////////////
///
/// Install everything by executing
///
/// @code
/// make install
/// @endcode
///
/// 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
///
/// @code
/// /usr/sbin/arangod
/// @endcode
///
/// The configuration file will be installed in
///
/// @code
/// /etc/arangodb/arangod.conf
/// @endcode
///
/// The database will be installed in
///
/// @code
/// /var/arangodb
/// @endcode
///
/// The arango shell will be installed in
///
/// @code
/// /usr/bin/arangosh
/// @endcode
///
/// @section CompilingDevel Devel Version
/////////////////////////////////////////
///
/// @subsection CompilingDevelPrerequisites Basic System Requirements
//////////////////////////////////////////////////////////////////////
///
/// Verify that your system contains
///
/// - the GNU C++ compiler "g++" and standard C++ libraries
/// - the GNU autotools (autoconf, automake)
/// - the GNU make
/// - the GNU scanner generator FLEX, at least version 2.3.35
/// - the GNU parser generator BISON, at least version 2.4
/// - Python, version 2 or 3
///
/// In addition you will need the following libraries
///
/// - libev in version 3 or 4
/// - Google's V8 engine
/// - the GNU readline library
/// - the OpenSSL library
/// - the Boost test framework library (boost_unit_test_framework)
///
/// To compile Google V8 yourself, you will also need Python 2 and SCons.
///
/// Some distributions, for example Centos 5, provide only very out-dated
/// versions of FLEX, BISON, and the V8 engine. In that case you need to compile
/// newer versions of the programs and/or libraries.
///
/// Install or download the prerequisites
///
/// - Google's V8 engine (see http://code.google.com/p/v8)
/// - SCons for compiling V8 (see http://www.scons.org)
/// - libev (see http://software.schmorp.de/pkg/libev.html)
/// - OpenSSL (http://openssl.org/)
///
/// if neccessary. Most linux systems already supply RPM or DEP for
/// these packages. Please note that you have to install the
/// development packages.
///
/// @subsection DownloadSourceDevel Download the Source
///////////////////////////////////////////////////////
///
/// Download the latest source using GIT:
///
/// @code
/// git clone git://github.com/triAGENS/ArangoDB.git
/// @endcode
///
/// @subsection CompilingDevelSetup Setup
/////////////////////////////////////////
///
/// Switch into the ArangoDB directory
///
/// @code
/// cd ArangoDB
/// @endcode
///
/// The source tarball contains a pre-generated "configure" script. You can
/// regenerate this script by using the GNU auto tools. In order to do so,
/// execute
///
/// @code
/// make setup
/// @endcode
///
/// This will call aclocal, autoheader, automake, and autoconf in the correct
/// order.
///
/// @subsection CompilingDevelConfigure Configure
/////////////////////////////////////////////////
///
/// In order to configure the build environment execute
///
/// @code
/// ./configure --disable-all-in-one-v8 --disable-all-in-one-libev --disable-all-in-one-icu --enable-maintainer-mode
/// @endcode
///
/// to setup the makefiles. This will check for the various system
/// characteristics and installed libraries.
///
/// Now continue with @ref CompilingAIOCompile.
///
/// The following configuration options exists:
///
/// @LIT{\-\-enable-all-in-one-libev} tells the build system to use the
/// bundled version of LIBEV instead of using the system version.
///
/// @LIT{\-\-disable-all-in-one-libev} tells the build system to use the
/// installed system version of LIBEV instead of compiling the
/// supplied version from the 3rdParty directory in the make run.
///
/// @LIT{\-\-enable-all-in-one-v8} tells the build system to use the
/// bundled version of V8 instead of using the system version.
///
/// @LIT{\-\-disable-all-in-one-v8} tells the build system to use the
/// installed system version of V8 instead of compiling the
/// supplied version from the 3rdParty directory in the make run.
///
/// @LIT{\-\-enable-all-in-one-icu} tells the build system to use the
/// bundled version of ICU instead of using the system version.
///
/// @LIT{\-\-disable-all-in-one-icu} tells the build system to use the
/// installed system version of ICU instead of compiling the
/// supplied version from the 3rdParty directory in the make run.
///
/// @LIT{\-\-enable-maintainer-mode} tells the build system to use BISON and FLEX
/// to regenerate the parser and scanner files. If disabled, the supplied files
/// will be used so you cannot make changes to the parser and scanner files.
/// You need at least BISON 2.4.1 and FLEX 2.5.35.
/// This option also allows you to make changes to the error messages file,
/// which is converted to js and C header files using Python. You will need Python
/// 2 or 3 for this.
/// Furthermore, this option enables additional test cases to be executed in a
/// @LIT{make unittests} run. You also need to install the Boost test framework
/// for this.
///
/// @LIT{\-\-enable-arangob} tells the build system to also build the arangob
/// benchmark tool. The binary will be built in the bin subdirectory.
///
////////////////////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------------
// --SECTION-- END-OF-FILE
// -----------------------------------------------------------------------------
// Local Variables:
// mode: c++
// mode: outline-minor
// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @\\}\\)"
// End: