ArangoDB es una base de datos de múltiples modelos con la capacidad de almacenar datos como gráficos, documentos y clave-valor.
Tomé material de un curso gratuito sobre Udemy y el curso Outline
Vale la pena prestar atención al centro de capacitación y los muelles
Puede trabajar en la biblioteca HTTP API , frontal , terminal y python
Concepto
ArangoDB almacena objetos en documentos json con soporte para la inversión de claves, por lo que un campo especial _key es responsable .
Hay dos tipos de colecciones:
Estándar. Almacén de documentos Json, campos especiales _key, _rev, _id . la clave se puede configurar usted mismo. Los dos últimos se crean automáticamente.
_key es la clave del objeto de la colección. IMPORTANTE: distingue entre mayúsculas y minúsculas
_rev - utilizado para algoritmos internos
_id : se utiliza para comunicarse con otras colecciones. Tiene el formato { nombre de la colección } / _ clave
Borde. Colecciones especiales que almacenan objetos de comunicación entre objetos de colecciones estándar. Tengo dos campos adicionales _ a, _from , que almacenan el _id de los objetos, que conecta el objeto de borde
CRUD
AQL.
. , _key .
:
INSERT {key: value} INTO collection [RETURN NEW]
RETURN NEW
:
RETURN DOCUMENT(_id) – _id RETURN DOCUMENT(collection_name, [_key, ...]) –
:
UPDATE {_key: "value"} WITH {newVal: 1234} IN collection
:
REMOVE {_key: "value"} IN collection
FOR
: FOR variableName IN expression
Update :
FOR doc in ["key1", "key2"]:
UPDATE doc WITH {newVal: 1234} IN collection
. _key, _id, _to _from .
7 :
Primary – _key _id
Edge – _from _to
Hash –
Skiplist
Persistent
Geo
Fulltext
Selectivity,
: FILTER condition
.
, :
FOR flight IN flights
FILTER flight.type == "VIP"
RETURN flight
.
.
, .
FOR airport IN airports
FILTER airport.city == "Dallas"
FOR flight in flights
FILTER flight._to == airport._id
RETURN {"airport": airport.name, "flight": flight.FlightNum}
:
COLLECT variableName = expression options
, :
FOR airport IN airports COLLECT state = airport.state RETURN state
FOR airport IN airports
COLLECT state = airport.state WITH COUNT INTO total
SORT total DESC
RETURN {"state": state, "total":total}
(edge collections). _id, .
edge _to _from, _id , . json, , .
:
FOR vertex, edge, path IN 1..1 OUTBOUND _id GRAPH edge_collection RETURN path
FOR vertex, edge, path IN 1..1 OUTBOUND _id edge_collection RETURN path – , GRAPH. edge
vertex – ,
edge –
path – :
IN , min..max
OUTBOUND/INBOUND/ANY . _from, _to .
_id id .
GRAPH edge ,
, - :
FOR airport in airports
FILTER airport.city == "San Francisco"
FOR v, e, p IN 1..1 OUTBOUND airport flights
FILTER v._id == "airports/KOA"
RETURN p
- :
FOR airport in airports
FILTER airport.city == "San Francisco"
FOR v, e, p IN 2..3 OUTBOUND airport flights
FILTER v._id == "airports/KOA"
RETURN p
, .
ArangoSearch, .
, ,
ArangoSearch : .
– analyzers, views links
Analyzers , . . .
Views , /
Links views . .
Motor de integración : capa de provisión de datos.
La búsqueda es un preprocesador, funciona sobre vistas, solo puede ver campos indexados, es decir, los que describimos en los enlaces.
El rango le permite obtener el peso de los resultados, según la solicitud de búsqueda. También podemos establecer nuestros propios pesos para las piezas de búsqueda.
Un ejemplo de cómo encontrar la palabra "ninja" en la descripción de una película:
FOR doc in view
SEARCH ANALYZER(d.description == "ninja", "text_en")
RETURN doc