mirror of https://gitee.com/bigwinds/arangodb
updated docs
This commit is contained in:
parent
e98a22a31c
commit
ebad0130ea
|
@ -1,89 +0,0 @@
|
|||
unix> curl --dump - http://localhost:8529/_admin/statistics
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
content-type: application/json; charset=utf-8
|
||||
|
||||
{
|
||||
"system" : {
|
||||
"minorPageFaults" : 18666,
|
||||
"majorPageFaults" : 57,
|
||||
"userTime" : 1.162991,
|
||||
"systemTime" : 0.464635,
|
||||
"numberThreads" : 0,
|
||||
"residentSize" : 34525184,
|
||||
"virtualSize" : 0
|
||||
},
|
||||
"client" : {
|
||||
"httpConnections" : 1,
|
||||
"connectionTime" : {
|
||||
"count" : 0,
|
||||
"counts" : [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"totalTime" : {
|
||||
"count" : 54,
|
||||
"counts" : [
|
||||
51,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
3
|
||||
]
|
||||
},
|
||||
"requestTime" : {
|
||||
"count" : 54,
|
||||
"counts" : [
|
||||
51,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
3
|
||||
]
|
||||
},
|
||||
"queueTime" : {
|
||||
"count" : 53,
|
||||
"counts" : [
|
||||
53,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"bytesSent" : {
|
||||
"count" : 54,
|
||||
"counts" : [
|
||||
13,
|
||||
27,
|
||||
13,
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"bytesReceived" : {
|
||||
"count" : 54,
|
||||
"counts" : [
|
||||
52,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
"error" : false,
|
||||
"code" : 200
|
||||
}
|
||||
|
|
@ -1,179 +0,0 @@
|
|||
unix> curl --dump - http://localhost:8529/_admin/statistics-description
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
content-type: application/json; charset=utf-8
|
||||
|
||||
{
|
||||
"groups" : [
|
||||
{
|
||||
"group" : "system",
|
||||
"name" : "Process Statistics",
|
||||
"description" : "Statistics about the ArangoDB process"
|
||||
},
|
||||
{
|
||||
"group" : "client",
|
||||
"name" : "Client Statistics",
|
||||
"description" : "Statistics about the clients connecting to the server."
|
||||
}
|
||||
],
|
||||
"figures" : [
|
||||
{
|
||||
"group" : "system",
|
||||
"identifier" : "userTime",
|
||||
"name" : "User Time",
|
||||
"description" : "Amount of time that this process has been scheduled in user mode, measured in clock ticks divided by sysconf(_SC_CLK_TCK) aka seconds.",
|
||||
"type" : "accumulated",
|
||||
"units" : "seconds"
|
||||
},
|
||||
{
|
||||
"group" : "system",
|
||||
"identifier" : "systemTime",
|
||||
"name" : "System Time",
|
||||
"description" : "Amount of time that this process has been scheduled in kernel mode, measured in clock ticks divided by sysconf(_SC_CLK_TCK) aka seconds.",
|
||||
"type" : "accumulated",
|
||||
"units" : "seconds"
|
||||
},
|
||||
{
|
||||
"group" : "system",
|
||||
"identifier" : "numberOfThreads",
|
||||
"name" : "Number of Threads",
|
||||
"description" : "Number of threads in this process.",
|
||||
"type" : "current",
|
||||
"units" : "number"
|
||||
},
|
||||
{
|
||||
"group" : "system",
|
||||
"identifier" : "residentSize",
|
||||
"name" : "Resident Set Size",
|
||||
"description" : "The number of pages the process has in real memory. This is just the pages which count toward text, data, or stack space. This does not include pages which have not been demand-loaded in, or which are swapped out.",
|
||||
"type" : "current",
|
||||
"units" : "bytes"
|
||||
},
|
||||
{
|
||||
"group" : "system",
|
||||
"identifier" : "virtualSize",
|
||||
"name" : "Virtual Memory Size",
|
||||
"description" : "The size of the virtual memory the process is using.",
|
||||
"type" : "current",
|
||||
"units" : "bytes"
|
||||
},
|
||||
{
|
||||
"group" : "system",
|
||||
"identifier" : "minorPageFaults",
|
||||
"name" : "Minor Page Faults",
|
||||
"description" : "The number of minor faults the process has made which have not required loading a memory page from disk.",
|
||||
"type" : "accumulated",
|
||||
"units" : "number"
|
||||
},
|
||||
{
|
||||
"group" : "system",
|
||||
"identifier" : "majorPageFaults",
|
||||
"name" : "Major Page Faults",
|
||||
"description" : "The number of major faults the process has made which have required loading a memory page from disk.",
|
||||
"type" : "accumulated",
|
||||
"units" : "number"
|
||||
},
|
||||
{
|
||||
"group" : "client",
|
||||
"identifier" : "httpConnections",
|
||||
"name" : "HTTP Client Connections",
|
||||
"description" : "The number of http connections that are currently open.",
|
||||
"type" : "current",
|
||||
"units" : "number"
|
||||
},
|
||||
{
|
||||
"group" : "client",
|
||||
"identifier" : "totalTime",
|
||||
"name" : "Total Time",
|
||||
"description" : "Total time needed to answer a request.",
|
||||
"type" : "distribution",
|
||||
"cuts" : [
|
||||
0.01,
|
||||
0.05,
|
||||
0.1,
|
||||
0.2,
|
||||
0.5,
|
||||
1
|
||||
],
|
||||
"units" : "seconds"
|
||||
},
|
||||
{
|
||||
"group" : "client",
|
||||
"identifier" : "requestTime",
|
||||
"name" : "Request Time",
|
||||
"description" : "Request time needed to answer a request.",
|
||||
"type" : "distribution",
|
||||
"cuts" : [
|
||||
0.01,
|
||||
0.05,
|
||||
0.1,
|
||||
0.2,
|
||||
0.5,
|
||||
1
|
||||
],
|
||||
"units" : "seconds"
|
||||
},
|
||||
{
|
||||
"group" : "client",
|
||||
"identifier" : "queueTime",
|
||||
"name" : "Queue Time",
|
||||
"description" : "Queue time needed to answer a request.",
|
||||
"type" : "distribution",
|
||||
"cuts" : [
|
||||
0.01,
|
||||
0.05,
|
||||
0.1,
|
||||
0.2,
|
||||
0.5,
|
||||
1
|
||||
],
|
||||
"units" : "seconds"
|
||||
},
|
||||
{
|
||||
"group" : "client",
|
||||
"identifier" : "bytesSent",
|
||||
"name" : "Bytes Sent",
|
||||
"description" : "Bytes sents for a request.",
|
||||
"type" : "distribution",
|
||||
"cuts" : [
|
||||
250,
|
||||
1000,
|
||||
2000,
|
||||
5000,
|
||||
10000
|
||||
],
|
||||
"units" : "bytes"
|
||||
},
|
||||
{
|
||||
"group" : "client",
|
||||
"identifier" : "bytesReceived",
|
||||
"name" : "Bytes Received",
|
||||
"description" : "Bytes receiveds for a request.",
|
||||
"type" : "distribution",
|
||||
"cuts" : [
|
||||
250,
|
||||
1000,
|
||||
2000,
|
||||
5000,
|
||||
10000
|
||||
],
|
||||
"units" : "bytes"
|
||||
},
|
||||
{
|
||||
"group" : "client",
|
||||
"identifier" : "connectionTime",
|
||||
"name" : "Connection Time",
|
||||
"description" : "Total connection time of a client.",
|
||||
"type" : "distribution",
|
||||
"cuts" : [
|
||||
0.1,
|
||||
1,
|
||||
60
|
||||
],
|
||||
"units" : "seconds"
|
||||
}
|
||||
],
|
||||
"error" : false,
|
||||
"code" : 200
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"_id" : "_users/1589671",
|
||||
"_rev" : "1589671",
|
||||
"_key" : "1589671",
|
||||
"active" : true,
|
||||
"user" : "root",
|
||||
"password" : "$1$e0d13aed$328469fc501398de5c3626dcc0a5a567e01b4bafbc06d89c0a5cf2b09872ca14"
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
"firstName" : "Hugo",
|
||||
"lastName" : "Schlonz",
|
||||
"address" : {
|
||||
"city" : "Hier",
|
||||
"street" : "Strasse 1"
|
||||
},
|
||||
"hobbies" : [
|
||||
"swimming",
|
||||
"biking",
|
||||
"programming"
|
||||
],
|
||||
"_id" : "demo/schlonz",
|
||||
"_rev" : "12468647",
|
||||
"_key" : "schlonz"
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products
|
||||
{ "Hello": "World" }
|
||||
|
||||
HTTP/1.1 202 Accepted
|
||||
content-type: application/json; charset=utf-8
|
||||
etag: "21316007"
|
||||
location: /_api/document/products/21316007
|
||||
|
||||
{
|
||||
"error" : false,
|
||||
"_id" : "products/21316007",
|
||||
"_rev" : "21316007",
|
||||
"_key" : "21316007"
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products
|
||||
{ 1: "World" }
|
||||
|
||||
HTTP/1.1 400 Bad Request
|
||||
content-type: application/json; charset=utf-8
|
||||
|
||||
{
|
||||
"error" : true,
|
||||
"errorMessage" : "expecting attribute name",
|
||||
"code" : 400,
|
||||
"errorNum" : 600
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products
|
||||
{ "Hello": "World" }
|
||||
|
||||
HTTP/1.1 201 Created
|
||||
content-type: application/json; charset=utf-8
|
||||
etag: "17973671"
|
||||
location: /_api/document/products/17973671
|
||||
|
||||
{
|
||||
"error" : false,
|
||||
"_id" : "products/17973671",
|
||||
"_rev" : "17973671",
|
||||
"_key" : "17973671"
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products&createCollection=true
|
||||
{ "Hello": "World" }
|
||||
|
||||
HTTP/1.1 202 Accepted
|
||||
content-type: application/json; charset=utf-8
|
||||
etag: "29049255"
|
||||
location: /_api/document/products/29049255
|
||||
|
||||
{
|
||||
"error" : false,
|
||||
"_id" : "products/29049255",
|
||||
"_rev" : "29049255",
|
||||
"_key" : "29049255"
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products
|
||||
{ "Hello": "World" }
|
||||
|
||||
HTTP/1.1 404 Not Found
|
||||
content-type: application/json; charset=utf-8
|
||||
|
||||
{
|
||||
"error" : true,
|
||||
"errorMessage" : "collection /_api/collection/products not found",
|
||||
"code" : 404,
|
||||
"errorNum" : 1203
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
unix> curl -X POST --data @- --dump - http://localhost:8529/_api/document?collection=products&waitForSync=true
|
||||
{ "Hello": "World" }
|
||||
|
||||
HTTP/1.1 201 Created
|
||||
content-type: application/json; charset=utf-8
|
||||
etag: "19743143"
|
||||
location: /_api/document/products/19743143
|
||||
|
||||
{
|
||||
"error" : false,
|
||||
"_id" : "products/19743143",
|
||||
"_rev" : "19743143",
|
||||
"_key" : "19743143"
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
unix> curl --dump - http://localhost:8529/_api/document/products/24265127
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
content-type: application/json; charset=utf-8
|
||||
etag: "24265127"
|
||||
|
||||
{
|
||||
"hallo" : "world",
|
||||
"_id" : "products/24265127",
|
||||
"_rev" : "24265127",
|
||||
"_key" : "24265127"
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
unix> curl --dump - http://localhost:8529/_api/document/?collection=products
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
content-type: application/json; charset=utf-8
|
||||
|
||||
{
|
||||
"documents" : [
|
||||
"/_api/document/products/31408551",
|
||||
"/_api/document/products/31146407",
|
||||
"/_api/document/products/30622119"
|
||||
]
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
unix> curl -X HEAD --dump - http://localhost:8529/_api/document/products/37306791
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
content-type: application/json; charset=utf-8
|
||||
etag: "37306791"
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
unix> curl --header 'if-none-match: "34292135"' --dump - http://localhost:8529/_api/document/products/34292135
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
unix> curl --dump - http://localhost:8529/_api/document/products/unknownhandle
|
||||
|
||||
HTTP/1.1 404 Not Found
|
||||
content-type: application/json; charset=utf-8
|
||||
|
||||
{
|
||||
"error" : true,
|
||||
"errorMessage" : "document /_api/document/products/unknownhandle not found",
|
||||
"code" : 404,
|
||||
"errorNum" : 1202
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/32653735
|
||||
{}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/27410855
|
||||
{}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/22757799
|
||||
{}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/25903527
|
||||
{}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
unix> curl -X PUT --data @- --dump - http://localhost:8529/_api/document/products/35799463
|
||||
{}
|
||||
|
|
@ -126,6 +126,7 @@ WIKI = \
|
|||
NamingConventions \
|
||||
NewFeatures11 \
|
||||
NewFeatures12 \
|
||||
NewFeatures13 \
|
||||
RefManual \
|
||||
RefManualArangoErrors \
|
||||
RestDocument \
|
||||
|
@ -134,6 +135,7 @@ WIKI = \
|
|||
Transactions \
|
||||
Upgrading11 \
|
||||
Upgrading12 \
|
||||
Upgrading13 \
|
||||
UserManual \
|
||||
UserManualActions \
|
||||
UserManualArangosh \
|
||||
|
|
|
@ -22,14 +22,17 @@ for various languages including the Big-P (PHP, Python, Perl) and Ruby.
|
|||
Please contact @S_EXTREF_S{http://www.arangodb.org/connect,us} if you have any
|
||||
questions.
|
||||
|
||||
Upgrading to ArangoDB 1.2 {#ArangoDBUpgrading12}
|
||||
Upgrading to ArangoDB 1.3 {#ArangoDBUpgrading13}
|
||||
================================================
|
||||
|
||||
- @BOOK_REF{NewFeatures13}
|
||||
- @BOOK_REF{Upgrading13}
|
||||
|
||||
Older Releases:
|
||||
|
||||
- @BOOK_REF{NewFeatures12}
|
||||
- @BOOK_REF{Upgrading12}
|
||||
|
||||
Older Releases:
|
||||
|
||||
- @BOOK_REF{NewFeatures11}
|
||||
- @BOOK_REF{Upgrading11}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ Rapid API Development with FOXX{#NewFeatures13Foxx}
|
|||
A preview of the forthcoming Foxx is contained in 1.3. Please note
|
||||
that this is not the final version, Foxx is still experimental.
|
||||
|
||||
Foxx is a lightweight Javascript “micro framework” which allows you to
|
||||
Foxx is a lightweight Javascript "micro framework" which allows you to
|
||||
build applications directly on top of ArangoDB and therefore skip the
|
||||
middleman (Rails, Django, Symfony or whatever your favorite web
|
||||
framework is). Inspired by frameworks like Sinatra Foxx is designed
|
||||
|
@ -37,9 +37,105 @@ explains how to use Foxx.
|
|||
Transactions{#NewFeatures13Transactions}
|
||||
----------------------------------------
|
||||
|
||||
ArangoDB provides server-side transactions that allow executing multi-
|
||||
document and even multi-collection operations with ACID guarantees.
|
||||
|
||||
Transactions in ArangoDB are defined by providing a JavaScript object
|
||||
which needs to contain the transaction code, and some declarations about
|
||||
the collections involved in the transaction.
|
||||
|
||||
The transaction code will be executed by the server en bloc. If
|
||||
execution of any statement in the transaction code fails for whatever reason,
|
||||
the entire transaction will be aborted and rolled back.
|
||||
|
||||
Data modifications done by transactions become visible to following
|
||||
transactions only when a transaction succeeds. Data modifications that
|
||||
are performed by a still-ongoing transaction are not exposed to other
|
||||
parallel transactions. In fact, transactions on the same collection will
|
||||
be executed serially.
|
||||
|
||||
Please refer to @ref Transactions for more details and examples on
|
||||
transaction usage in ArangoDB.
|
||||
|
||||
New Administration Interface{#NewFeatures13Admin}
|
||||
-------------------------------------------------
|
||||
|
||||
TODO
|
||||
|
||||
New Server Statistics{#NewFeatures13Statistics}
|
||||
-----------------------------------------------
|
||||
|
||||
The server statistics provided by ArangoDB have been changed in 1.3.
|
||||
|
||||
Before version 1.3, the server provided a multi-level history of request
|
||||
and connection statistics. Values for each incoming request and connection
|
||||
were kept individually and mapped to the chronological period they appeared
|
||||
in. The server then provided aggregated values for different periods,
|
||||
which was implemented using a constant recalculation of the aggregation
|
||||
values.
|
||||
|
||||
To lower ArangoDB's CPU usage, the constant recalculation has been removed
|
||||
in 1.3. Instead, the server will now only keep aggregate values per figure
|
||||
reported, but will not provide any chronological values.
|
||||
|
||||
Request and connection statistics values are 0 at server start, and will be
|
||||
increased with each incoming request or connection. Clients querying the
|
||||
statistics will see the accumulated values only. They can calculate the
|
||||
values for a period of time by querying the statistics twice and calculating
|
||||
the difference between the values themselves.
|
||||
|
||||
The REST APIs for the statistics in ArangoDB 1.3 can be found at:
|
||||
|
||||
/_admin/statistics
|
||||
/_admin/statistics-description
|
||||
|
||||
The `/_admin/statistics-description` API can be used by clients to get
|
||||
descriptions for the figures reported by `/_admin/statistics`. The description
|
||||
will contain a textual description, the unit used for the value(s) and the
|
||||
boundary of slot values used.
|
||||
|
||||
The previoulsy available APIs
|
||||
|
||||
/_admin/request-statistics
|
||||
/_admin/connection-statistics
|
||||
|
||||
are not available in ArangoDB 1.3 anymore.
|
||||
|
||||
AQL extensions{#NewFeatures13AQL}
|
||||
---------------------------------
|
||||
|
||||
It is now possible to extend AQL with user-defined functions.
|
||||
These functions need to be written in Javascript, and be registered before usage
|
||||
in an AQL query.
|
||||
|
||||
arangosh> var aqlfunctions = require("org/arangodb/aql/functions");
|
||||
arangosh> aqlfunctions.register("myfunctions:double", function (value) { return value * 2; }, true);
|
||||
false
|
||||
arangosh> db._query("RETURN myfunctions:double(4)").toArray();
|
||||
[ 8 ]
|
||||
|
||||
Please refer to @ref ExtendingAql for more details on this.
|
||||
|
||||
There have been the following additional changes to AQL in ArangoDB 1.3:
|
||||
|
||||
* added AQL statistical functions `VARIANCE_POPULATION`, `VARIANCE_SAMPLE`,
|
||||
`STDDEV_POPULATION`, `STDDEV_SAMPLE`, `AVERAGE`, `MEDIAN`. These functions
|
||||
work on lists.
|
||||
|
||||
* added AQL numeric function `SQRT` to calculate square-roots.
|
||||
|
||||
* added AQL string functions `TRIM`, `LEFT` and `RIGHT` for easier string and
|
||||
substring handling.
|
||||
|
||||
* the AQL functions `REVERSE` and `LENGTH` now work on string values, too.
|
||||
Previously they were allowed for lists only.
|
||||
|
||||
* made "limit" an optional parameter in the `NEAR` function. The "limit" parameter
|
||||
can now be either omitted completely, or set to 0. If so, an internal
|
||||
default value (currently 100) will be applied for the limit.
|
||||
|
||||
Please refer to @ref AqlFunctions for detailed information on the AQL functions.
|
||||
|
||||
Node Modules and Packages{#NewFeatures13Node}
|
||||
---------------------------------------------
|
||||
|
||||
|
@ -57,7 +153,7 @@ which allows to handle binary data in JavaScript.
|
|||
|
||||
Supplying the Buffer class makes it possible to use other interesting modules
|
||||
like punycode. It enables us to support some of NPM packages available - for
|
||||
instance CoffeScript.
|
||||
instance CoffeeScript.
|
||||
|
||||
arangosh> var cs = require("coffee-script");
|
||||
arangosh> cs.compile("a = 1");
|
||||
|
@ -89,3 +185,69 @@ The node packages can be installed using npm in the "share/npm"
|
|||
directory. If you find out, that a node package is also working
|
||||
under ArangoDB, please share your findings with us and other
|
||||
users.
|
||||
|
||||
Miscelleanous changes{#NewFeatures13Misc}
|
||||
-----------------------------------------
|
||||
|
||||
* added `db._saveOrReplace()` method for server-side JavaScript.
|
||||
TODO
|
||||
|
||||
* Added server startup option `--database.force-sync-properties` to force syncing of
|
||||
collection properties on collection creation, deletion and on collection properties
|
||||
change.
|
||||
|
||||
The default value is `true` to mimic the behavior of previous versions of ArangoDB.
|
||||
If set to `false`, collection properties are still written to disk but no immediate
|
||||
system call to sync() is made.
|
||||
|
||||
Setting the `--database.force-sync-properties` to `false` may speed up running
|
||||
test suites on systems where sync() is expensive, but is discouraged for regular
|
||||
use cases.
|
||||
|
||||
* ArangoDB will now reject saving documents with an invalid "type".
|
||||
|
||||
Previous versions of ArangoDB didn't reject documents that were just scalar values
|
||||
without any attribute names.
|
||||
|
||||
Starting with version 1.3, each document saved in ArangoDB must be a JSON object
|
||||
consisting of attribute name / attribute value pairs.
|
||||
|
||||
Storing the following types of documents will be rejected by the server:
|
||||
|
||||
[ "foo", "bar" ]
|
||||
1.23
|
||||
"test"
|
||||
|
||||
Of course such values can be stored inside valid documents, e.g.
|
||||
|
||||
{ "data" : [ "foo", "bar" ] }
|
||||
{ "number" : 1.23 }
|
||||
{ "value" : "test" }
|
||||
|
||||
User-defined document attribute names must also start with a letter or a number.
|
||||
It is disallowed to use user-defined attribute names starting with an underscore.
|
||||
This is due to name starting with an underscore being reserved for ArangoDB's
|
||||
internal use.
|
||||
|
||||
* Changed return value of REST API method `/_admin/log`:
|
||||
|
||||
Previously, the log messages returned by the API in the `text` attribute also
|
||||
contained the date and log level, which was redundant.
|
||||
|
||||
In ArangoDB 1.3, the values in the `text` attribute contain only the mere log
|
||||
message, and no date and log level. Dates and log levels for the individual
|
||||
messages are still available in the separate `timestamp` and `level` attributes.
|
||||
|
||||
* Extended output of server version and components for REST APIs `/_admin/version`
|
||||
and `/_api/version`:
|
||||
|
||||
To retrieve the extended information, the REST APIs can be called with the URL
|
||||
parameter `details=true`. This will provide a list of server version details in
|
||||
the `details` attribute of the result.
|
||||
|
||||
* Extended output for REST API `/_api/collection/<name>/figures`:
|
||||
|
||||
The result will now contain an attribute `attributes` with a sub-attribute `count`.
|
||||
This value provides the number of different attributes that are or have been used
|
||||
in the collection.
|
||||
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
TOC {#NewFeatures13TOC}
|
||||
=======================
|
||||
|
||||
- @ref NewFeatures13Introduction
|
||||
- @ref NewFeatures13Datafile
|
||||
- @ref NewFeatures13Foxx
|
||||
- @ref NewFeatures13Transactions
|
||||
- @ref NewFeatures13Admin
|
||||
- @ref NewFeatures13Statistics
|
||||
- @ref NewFeatures13AQL
|
||||
- @ref NewFeatures13Node
|
||||
- @ref NewFeatures13Misc
|
|
@ -430,7 +430,7 @@ Removed Functionality {#Upgrading12RemovedFunctionality}
|
|||
The global `edges` variable has been removed in `arangosh`. In ArangoDB 1.1 and
|
||||
before this variable could be used to create and access edge collections.
|
||||
|
||||
Since ArangoDb 1.1, all collections can be accessed using the `db` variable, and
|
||||
Since ArangoDB 1.1, all collections can be accessed using the `db` variable, and
|
||||
there was no need to keep the `edges` variable any longer.
|
||||
|
||||
### arangoimp
|
||||
|
|
|
@ -17,23 +17,170 @@ Existing users of ArangoDB 1.2 should read the list carefully and make sure they
|
|||
have undertaken all necessary steps and precautions before upgrading from
|
||||
ArangoDB 1.2 to ArangoDB 1.3. Please also check @ref Upgrading13Troubleshooting.
|
||||
|
||||
|
||||
Database Directory Version Check and Upgrade {#Upgrading13VersionCheck}
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Starting with ArangoDB 1.1, _arangod_ will perform a database version check at
|
||||
startup. This has not changed in ArangoDB 1.3.
|
||||
|
||||
The version check will look for a file named _VERSION_ in its database
|
||||
directory. If the file is not present, _arangod_ in version 1.3 will perform an
|
||||
auto-upgrade (can also be considered a database "initialisation"). This
|
||||
auto-upgrade will create the system collections necessary to run ArangoDB, and
|
||||
it will also create the VERSION file with a version number like `1.3` inside.
|
||||
|
||||
If the _VERSION_ file is present but is from a non-matching version of ArangoDB
|
||||
(e.g. ArangoDB 1.2 if you upgrade), _arangod_ will refuse to start. Instead, it
|
||||
will ask you start the server with the option `--upgrade`. Using the
|
||||
`--upgrade` option will make the server trigger any required upgrade tasks to
|
||||
migrate data from ArangoDB 1.2 to ArangoDB 1.3.
|
||||
|
||||
This manual invocation of an upgrade shall ensure that users have full control
|
||||
over when they perform any updates/upgrades of their data, and do not risk
|
||||
running an incompatible tandem of server and database versions.
|
||||
|
||||
If you try starting an ArangoDB 1.3 server with a database created by an earlier
|
||||
version of ArangoDB, and did not invoke the upgrade procedure, the output of
|
||||
ArangoDB will look like this:
|
||||
|
||||
> bin/arangod --server.endpoint tcp://127.0.0.1:8529 --database.directory /tmp/12
|
||||
|
||||
...
|
||||
2013-05-10T08:35:59Z [9017] ERROR Database directory version (1.2) is lower than server version (1.3).
|
||||
2013-05-10T08:35:59Z [9017] ERROR It seems like you have upgraded the ArangoDB binary. If this is what you wanted to do, please restart with the --upgrade option to upgrade the data in the database directory.
|
||||
2013-05-10T08:35:59Z [9017] FATAL Database version check failed. Please start the server with the --upgrade option
|
||||
...
|
||||
|
||||
So it is really necessary to forcefully invoke the upgrade procedure. Please
|
||||
create a backup of your database directory before upgrading. Please also make
|
||||
sure that the database directory and all subdirectories and files in it are
|
||||
writeable for the user you run ArangoDB with.
|
||||
|
||||
As mentioned, invoking the upgrade procedure can be done by specifying the
|
||||
additional command line option `--upgrade` as follows:
|
||||
|
||||
> bin/arangod --server.endpoint tcp://127.0.0.1:8529 --database.directory /tmp/12 --upgrade
|
||||
|
||||
...
|
||||
2013-05-10T08:38:41Z [9039] INFO Starting upgrade from version 1.2 to 1.3
|
||||
2013-05-10T08:38:41Z [9039] INFO Found 20 defined task(s), 8 task(s) to run
|
||||
...
|
||||
2013-05-10T08:38:43Z [9039] INFO Upgrade successfully finished
|
||||
2013-05-10T08:38:43Z [9039] INFO database version check passed
|
||||
...
|
||||
|
||||
The upgrade procecure will execute the defined tasks to run _arangod_ with all
|
||||
new features and data formats. It should normally run without problems and
|
||||
indicate success at its end. If it detects a problem that it cannot fix, it will
|
||||
halt on the first error and warn you.
|
||||
|
||||
Re-starting arangod with the `--upgrade` option will execute only the previously
|
||||
failed and not yet executed tasks.
|
||||
|
||||
Upgrading from ArangoDB 1.2 to ArangoDB 1.3 will rewrite data in the collections'
|
||||
datafiles. The upgrade procedure will create a backup of all files it processes,
|
||||
in case something goes wrong.
|
||||
|
||||
In case the upgrade did not produce any problems and ArangoDB works well for you
|
||||
after the upgrade, you may want to remove these backup files manually.
|
||||
|
||||
All collection datafiles will be backed up in the original collection
|
||||
directories in the database directory. You can easily detect the backup files
|
||||
because they have a filename ending in `.old`.
|
||||
|
||||
|
||||
Upgrade a binary package {#Upgrading13BinaryPackage}
|
||||
---------------------------------------------------
|
||||
|
||||
Linux:
|
||||
- Upgrade ArangoDB by package manager (Example `zypper update arangodb`)
|
||||
- check configuration file: `/etc/arangodb/arangod.conf`
|
||||
- Upgrade database files with `/etc/init.d/arangodb upgrade`
|
||||
|
||||
Mac OS X binary package
|
||||
- You can find the new Mac OS X packages here: `http://www.arangodb.org/repositories/MacOSX`
|
||||
- check configuration file: `/etc/arangodb/arangod.conf`
|
||||
- Upgrade database files `/usr/sbin/arangod --upgrade'
|
||||
|
||||
Mac OS X with homebrew
|
||||
- Upgrade ArangoDB by `brew upgrade arangodb'
|
||||
- check configuration file: `/usr/local/Cellar/1.X.Y/etc/arangodb/arangod.conf`
|
||||
- Upgrade database files `/usr/local/sbin/arangod --upgrade`
|
||||
|
||||
In case you upgrade from a previous version of ArangoDB, please make sure you
|
||||
perform the changes to the configuration file as described in @ref Upgrading13Options.
|
||||
Otherwise ArangoDB 1.3 will not start properly.
|
||||
|
||||
|
||||
New and Changed Command-Line Options{#Upgrading13Options}
|
||||
---------------------------------------------------------
|
||||
|
||||
In order to support node modules and packages, a new command-line options was
|
||||
In order to support node modules and packages, a new command-line option was
|
||||
introduced:
|
||||
|
||||
--javascript.package-path <directory>
|
||||
|
||||
must be used to specify the directory containing the NPM packages. This is option
|
||||
is presented in the pre-defined configuration files. In case a created your own
|
||||
configuration, you need to add this option and make sure that
|
||||
configuration, you need to add this option and also make sure that
|
||||
|
||||
--javascript.modules-path <directories>
|
||||
|
||||
also contains the new node directory.
|
||||
contains the new `node` directory.
|
||||
|
||||
Example values for `--javascript.modules-path` and `--javascript.package-path` are:
|
||||
|
||||
--javascript.modules-path = DIR/js/server/modules;DIR/js/common/modules;DIR/js/node
|
||||
|
||||
--javascript.package-path = DIR/js/npm
|
||||
|
||||
where `DIR` is the directory that contains the shared data installed by ArangoDB
|
||||
during installation. It might be `/usr/local/share/arangodb`, but the actual value is
|
||||
system-dependent.
|
||||
|
||||
Not adding the `node` directory to `--javascript.modules-path` or not setting
|
||||
`--javascript.package-path` will result in server startup errors.
|
||||
|
||||
|
||||
The configuration options `--scheduler.report-intervall` and `--dispatcher.report-intervall`
|
||||
have been renamed to `--scheduler.report-interval` and `--dispatcher.report-interval`.
|
||||
|
||||
These are rarely used debugging options that are not contained in any of the configuration
|
||||
files shipped with ArangoDB, so the changed name should not have an effect for end users.
|
||||
|
||||
|
||||
Removed Features{#Upgrading13RemovedFeatures}
|
||||
---------------------------------------------
|
||||
|
||||
The configure options `--enable-zone-debug` and `--enable-arangob` have been removed.
|
||||
These should not have been used by end users anyway, so this change should not have
|
||||
an effect.
|
||||
|
||||
|
||||
Troubleshooting{#Upgrading13Troubleshooting}
|
||||
============================================
|
||||
|
||||
If the server does not start after an upgrade, please check that your configuration
|
||||
contains the `node` directory in the `--javascript.modules-path`, and that the
|
||||
parameter `--javascript.package-path` is set.
|
||||
|
||||
On systems with rlimit, ArangoDB 1.3 will also require the minimum number of file
|
||||
descriptors it can use to be 256. If the limit is set to a lower value, ArangoDB will
|
||||
try to increase the limit to 256. If raising the limit does fail, ArangoDB will refuse
|
||||
to start, and fail with an error message like
|
||||
|
||||
2013-05-10T09:00:40Z [11492] FATAL cannot raise the file descriptor limit to 256, got 'Operation not permitted'
|
||||
|
||||
In this case the number of file descriptors should be increased. Please note that 256
|
||||
is a minimum value and that you should allow ArangoDB to use much more file descriptors
|
||||
if you afford it.
|
||||
|
||||
To avoid the file descriptor check on startup in an emergency case, you can use the
|
||||
startup option
|
||||
|
||||
--server.descriptors-minimum 0
|
||||
|
||||
|
||||
Please also check the logfile written by ArangoDB for further errors messages.
|
||||
|
||||
|
|
|
@ -2,5 +2,7 @@ TOC {#Upgrading13TOC}
|
|||
=====================
|
||||
|
||||
- @ref Upgrading13Introduction
|
||||
- @ref Upgrading13VersionCheck
|
||||
- @ref Upgrading13BinaryPackage
|
||||
- @ref Upgrading13Options
|
||||
- @ref Upgrading13Troubleshooting
|
||||
|
|
|
@ -997,6 +997,16 @@ AQL supports the following functions to operate on list values:
|
|||
are ignored. If the list is empty or only `null` values are contained in the list,
|
||||
the function will return `null`.
|
||||
|
||||
- @FN{STDDEV_POPULATION(@FA{list})}: returns the population standard deviation of the
|
||||
values in @FA{list}. This requires the elements in @FA{list} to be numbers. `null`
|
||||
values are ignored. If the list is empty or only `null` values are contained in the list,
|
||||
the function will return `null`.
|
||||
|
||||
- @FN{STDDEV_SAMPLE(@FA{list})}: returns the sample standard deviation of the values in
|
||||
@FA{list}. This requires the elements in @FA{list} to be numbers. `null` values
|
||||
are ignored. If the list is empty or only `null` values are contained in the list,
|
||||
the function will return `null`.
|
||||
|
||||
- @FN{REVERSE(@FA{list})}: returns the elements in @FA{list} in reversed order.
|
||||
|
||||
- @FN{FIRST(@FA{list})}: returns the first element in @FA{list} or `null` if the
|
||||
|
|
|
@ -42,6 +42,9 @@ User functions can take any number of input arguments and should
|
|||
provide one result. They should be kept purely functional and thus free of
|
||||
side effects and state.
|
||||
|
||||
Especially it is unsupported to modify any global variables, or to change
|
||||
data of a collection from an AQL user function.
|
||||
|
||||
User function code is late-bound, and may thus not rely on any variables
|
||||
that existed at the time of declaration. If user function code requires
|
||||
access to any external data, it must take care to set up the data by
|
||||
|
|
|
@ -79,7 +79,7 @@ attribute of the object passed to the `_executeTransaction` function. The
|
|||
db._executeTransaction({
|
||||
collections: {
|
||||
write: [ "users", "logins" ],
|
||||
read: [ "recommendations" ],
|
||||
read: [ "recommendations" ]
|
||||
},
|
||||
...
|
||||
});
|
||||
|
@ -93,7 +93,7 @@ single collection name (as a string):
|
|||
db._executeTransaction({
|
||||
collections: {
|
||||
write: "users",
|
||||
read: "recommendations",
|
||||
read: "recommendations"
|
||||
},
|
||||
...
|
||||
});
|
||||
|
@ -114,7 +114,7 @@ attribute:
|
|||
|
||||
db._executeTransaction({
|
||||
collections: {
|
||||
write: "users",
|
||||
write: "users"
|
||||
},
|
||||
action: function () {
|
||||
/* all operations go here */
|
||||
|
@ -128,7 +128,7 @@ of a Javascript function:
|
|||
|
||||
db._executeTransaction({
|
||||
collections: {
|
||||
write: "users",
|
||||
write: "users"
|
||||
},
|
||||
action: "function () { /* all operations go here */ }"
|
||||
});
|
||||
|
@ -141,7 +141,7 @@ Instead, any variables used inside `action` should be defined inside `action` it
|
|||
|
||||
db._executeTransaction({
|
||||
collections: {
|
||||
write: "users",
|
||||
write: "users"
|
||||
},
|
||||
action: function () {
|
||||
var db = require(...).db;
|
||||
|
@ -159,7 +159,7 @@ be thrown and not caught inside the transaction:
|
|||
|
||||
db._executeTransaction({
|
||||
collections: {
|
||||
write: "users",
|
||||
write: "users"
|
||||
},
|
||||
action: function () {
|
||||
var db = require("internal").db;
|
||||
|
@ -178,7 +178,7 @@ case, the user can return any legal Javascript value from the function:
|
|||
|
||||
db._executeTransaction({
|
||||
collections: {
|
||||
write: "users",
|
||||
write: "users"
|
||||
},
|
||||
action: function () {
|
||||
var db = require("internal").db;
|
||||
|
@ -574,7 +574,7 @@ from inside a running transaction, the server will throw error `1651 (nested
|
|||
transactions detected`).
|
||||
|
||||
It is also disallowed to execute user transaction on some of ArangoDB's own system
|
||||
collections. This shouldn't be problem for regular usage as system collections will
|
||||
collections. This shouldn't be a problem for regular usage as system collections will
|
||||
not contain user data and there is no need to access them from within a user
|
||||
transaction.
|
||||
|
||||
|
|
|
@ -592,6 +592,16 @@ bool ApplicationV8::prepare () {
|
|||
LOGGER_ERROR("specified dev-app-path '" << _devAppPath << "' does not exist.");
|
||||
// TODO: decide if we want to abort server start here
|
||||
}
|
||||
|
||||
// check whether package-path exist
|
||||
if (! _packagePath.empty() && ! FileUtils::isDirectory(_packagePath.c_str())) {
|
||||
LOGGER_ERROR("specified package-path '" << _packagePath << "' does not exist.");
|
||||
// TODO: decide if we want to abort server start here
|
||||
}
|
||||
else if (_packagePath.empty()) {
|
||||
LOGGER_ERROR("--javascript.package-path option was not specified. this may cause follow-up errors.");
|
||||
// TODO: decide if we want to abort server start here
|
||||
}
|
||||
|
||||
|
||||
_startupLoader.setDirectory(_startupPath);
|
||||
|
|
Loading…
Reference in New Issue