1
0
Fork 0
arangodb/API-Changes-3.0.md

154 lines
5.1 KiB
Markdown

ArangoDB API changes for Version 3.0
====================================
Overview
--------
### Breaking changes to existing API:
1. Cap-constraints are withdrawn
2. first() and last() are withdrawn
<collection>.first() and <collection>.last() are withdrawn
3. Automatic creation of collections with first use
4. Pre Version 1.4 API compatibility withdrawn
5. Query-parameters "policy" and "rev" withdrawn in replace()/update()
6. /_api/edge withdrawn
use /_api/document instead
Attributes `_from` and `_to` for edges must be passed inside the
document body and not as URL parameters `from` and `to`
7. <collection>.BY_EXAMPLE_HASH , <collection>.BY_EXAMPLE_SKIPLIST,
<collection>.BY_CONDITION_SKIPLIST deleted.
SimpleQuery.byCondition withdrawn.
8. `arangodump` arguments `translateIDs`, `failOnUnknown` withdrawn.
9. <collection>.exists now throws an error if there is a revision
conflict
10. replacing an edge in an edge collection now requires the specification
of both the `_from` and `_to` attributes. In 2.8 it was not required
to specify `_from` and `_to` when replacing an edge.
11. /_api/collection/figures will not return the following result attributes:
- shapefiles.count
- shapes.fileSize
- shapes.count
- shapes.size
- attributes.count
- attributes.size
12. the `checksum` attribute returned by GET /_api/collection/<collection>/figures
now is returned as a string value. It was returned as a number value in previous
versions. Additionally the checksum calculation algorithm was changed in 3.0,
so 3.0 will create different checksums than previous versions for the same data.
13. the HTTP API for modifying documents (/_api/document) does not return the `error`
attribute with a value of `false` in case an operation succeeds.
14. calling either collection.edges(), collection.outEdges(), collection.inEdges()
with an array of edge ids will now make the edge ids unique before returning the
connected edges. This is probably desired anyway, as results will be returned only
once per distinct input edge id. However, it may break client applications that
rely on the old behavior.
15. the HTTP for "/_api/gharial" now returns 202 (Accepted) instead of 200 (OK) or
201 (Created).
16. the HTTP API for creating documents (/_api/document) no longer supports the
createCollection parameter.
17. GET /_api/document?collection=<name> withdrawn,
is now
PUT /_api/simple/all-keys with body {"collection":<name>} with same functionality.
The type parameter is now an attribute in the body.
### New capabilities:
1. Babies for document queries.
2. _from and _to in edges can be changed.
3. _key, _from, _to can be indexed like normal attributes.
Explanations
------------
### Breaking changes
1. Cap-constraints are withdrawn
For 3.1 we plan to implement full MVCC and then at the latest it is
no longer well-defined what a cap constraint means. Furthermore, in
cluster mode it is really hard to implement as defined.
2. <collection>.first() and <collection>.last() are withdrawn
Harmonization between single server and cluster. Cluster
implementation would be very difficult and inefficient. Even the
single server implementation simplifies without this (one doubly
linked list less) and saves memory.
3. Automatic creation of collections with first use
Never worked in cluster, harmonization between single server and
cluster, In cluster would be undefined, since number of shards,
shard keys, replication factor and replication quorum would not be
specified.
4. Pre Version 1.4 API compatibility withdrawn
5. Query-parameters "policy" and "rev" withdrawn in PUT /_api/document/<id>
"policy" was non-sensical (just do not specify "rev")
6. /_api/edge withdrawn
Works now all over /_api/document
This is much cleaner and one can use the new baby-capabilities for
edges. Less code, drivers can be adjusted relatively easily by switching
to /_api/document.
7. <collection>.BY_EXAMPLE_HASH , <collection>.BY_EXAMPLE_SKIPLIST,
<collection>.BY_CONDITION_SKIPLIST deleted
These were never documented.
<collection>.{byExample,byExampleHash,byExampleSkiplist,byConditionSkiplist}
are still there and now do AQL internally. byExampleHash and
byExampleSkiplist just call byExample.
SimpleQuery.byCondition withdrawn.
8. `arangodump` arguments `translateIDs`, `failOnUnknown` withdrawn.
9. <collection>.exists now throws an error if there is a revision conflict
With the old behavior (return false) one cannot distinguish whether
a document does not exist at all or whether the queries revision is
outdated.
16. createCollection was only supported in single-server, but not in the
cluster.
### New capabilities:
1. Babies for document queries.
Higher performance, necessary for synchronous replication, good for
clean API abstraction for transactions.
2. _from and _to in edges can be changed.
Comes with the VelocyPack change.
3. _key, _from, _to can be indexed like normal attributes.
Comes with the VelocyPack change.