Saltearse al contenido

Tu primera consulta

Prerrequisitos

Solo necesitas el paquete de Python — ver Instalación.

Ventana de terminal
pip install namidb

Abre un namespace, escribe, lee

Abre un REPL de Python (python -i, una celda de Jupyter o cualquier script .py):

import namidb
# Abre un namespace en memoria. Sin bucket, sin credenciales, sin disco.
# Vive mientras este proceso de Python esté vivo.
client = namidb.Client("memory://demo")
# Escribe algunos datos.
client.cypher("CREATE (a:Person {name: 'Alice', age: 30})")
client.cypher("CREATE (b:Person {name: 'Bob', age: 25})")
client.cypher(
"MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}) "
"CREATE (a)-[:KNOWS {since: 2020}]->(b)"
)
# Lee de vuelta, con un parámetro.
result = client.cypher(
"MATCH (p:Person) WHERE p.age >= $min RETURN p.name AS name, p.age AS age",
params={"min": 18},
)
print(result.rows())

Eso es todo. Tienes una base de datos de grafos funcionando, con su lenguaje de consulta, parser, optimizador, executor y capa de almacenamiento, todo dentro de un solo proceso de Python — y escribiste tres sentencias Cypher contra ella.

Qué acaba de pasar

  • memory://demo — abriste un namespace de grafo efímero llamado demo. No se escribió nada al disco ni a un bucket. Al cerrar el proceso de Python se pierde todo.
  • CREATE — escribiste dos nodos Person y una relación KNOWS. El mismo motor que potencia el cluster de Cloud ejecutó esas escrituras a través del parser, planificador, executor, WAL y memtable dentro de tu proceso.
  • MATCH … WHERE … RETURN — lo leíste de vuelta. El parámetro $min se bindeó en tiempo de ejecución, el predicado p.age >= 18 se hizo pushdown, y la proyección devolvió solo las columnas name y age.

Hazlo persistente

Cuando quieras que el grafo sobreviva al proceso de Python, solo cambia la URI — el código Python queda igual:

Dónde viveURI
Disco localfile:///var/lib/namidb?ns=demo
MinIO (S3-compatible, local)s3://my-bucket?ns=demo&endpoint=http://localhost:9000&allow_http=true
AWS S3s3://my-bucket?ns=demo&region=us-east-1
Cloudflare R2s3://my-bucket?ns=demo&endpoint=https://<id>.r2.cloudflarestorage.com&region=auto
Google Cloud Storagegs://my-bucket?ns=demo
Azure Blobaz://my-account/my-container?ns=demo

Las credenciales vienen de las variables de entorno estándar (AWS_ACCESS_KEY_ID, GOOGLE_APPLICATION_CREDENTIALS, etc.). Consulta Backends de almacenamiento para la referencia por backend.

Siguientes pasos

  • Embedded (Python) — la superficie Python completa (parámetros, async con acypher, salida Arrow / pandas / polars).
  • Leer datos — cada cláusula de lectura.
  • Escribir datosCREATE, MERGE, SET, DELETE.