Saltearse al contenido

En memoria

memory://<ns> abre un namespace respaldado por object_store::memory::InMemory. Nada toca el disco ni ningún bucket. El grafo vive en el heap del proceso que abrió el cliente y desaparece cuando el proceso sale.

Cuándo usarlo

  • La prueba de 30 segundos. Probar una consulta sin configurar credenciales ni un bucket. Consulta Tu primera consulta.
  • Notebooks y exploración. Arrancas, consultas, descartas.
  • Fixtures de CI. Grafos determinísticos que se construyen frescos en cada corrida de tests.

No lo uses para nada que necesite sobrevivir a un reinicio del proceso.

Forma de la URI

memory://<namespace>

<namespace> es el identificador único dentro del store en memoria. Dos clientes en el mismo proceso apuntando al mismo memory://demo ven el mismo grafo; dos clientes en procesos distintos no.

Ejemplos

import namidb
client = namidb.Client("memory://demo")
client.cypher("CREATE (a:Person {name: 'Alice'})")
print(client.cypher("MATCH (p:Person) RETURN p.name").rows())
Ventana de terminal
# CLI: el mismo efecto cuando se omite --store.
namidb run "CREATE (a:Person {name: 'Alice'})"
namidb run --store "memory://demo" "MATCH (p:Person) RETURN p.name"
use std::sync::Arc;
use namidb::core::id::NamespaceId;
use namidb::storage::{NamespacePaths, WriterSession};
use object_store::{memory::InMemory, ObjectStore};
let store: Arc<dyn ObjectStore> = Arc::new(InMemory::new());
let paths = NamespacePaths::new("tenants", NamespaceId::new("demo")?);
let mut writer = WriterSession::open(store, paths).await?;

Lifetime

Los namespaces memory://:

  • Viven en el heap del proceso que abrió el primer cliente.
  • No se comparten entre procesos.
  • Se descartan cuando el último cliente que los referencia se descarta (en la práctica: cuando tu proceso sale).
  • No pagan ningún costo de I/O — útil cuando quieres medir trabajo puro del motor sin el bucket en el camino crítico.

Siguientes pasos