🌿 Branches & Namespaces
Schema branches for "what-if" analysis; namespace handles for the search-developer shape.
Schema branches (copy-on-write forks)
client.create_schema_branch("hypothesis-bribery", from_branch="main")
# {"created": True, "branch": "hypothesis-bribery", "source": "main"}
# Ingest alternative theories into the branch, run queries, compare.
# Then either merge or delete:
client.delete_schema_branch("hypothesis-bribery")
# {"deleted": True}Namespace handle — schemaless write + typed search
docs = client.namespace("CaseDoc")
# Schemaless upsert (POST /ingest/auto — auto-creates the type if absent).
docs.write([
{"id": "memo1", "title": "Bribery hypothesis",
"body": "Pacific Trust may be a kickback conduit.", "status": "draft"},
], schema={"title": "text", "body": "text"})
# Typed ranked search — text compiles to BM25; filters narrow server-side.
res = docs.query(
text="bribery kickback",
match_column="title",
filters=[{"field": "status", "op": "eq", "value": "draft"}],
limit=5,
)
for row in res:
print(row["title"])
docs.get("memo1") # point lookup
docs.delete_all() # governed bi-temporal tombstone every row
docs.branch_from("CaseDoc") # T10 copy-on-write namespace branchOne client, one connection pool, reused across every namespace. Governance (auth, tenant, purpose) travels in the substrate.
Next: System & Cluster Ops — cluster topology/rebalance, SSE observe stream, webhooks, Arrow Flight, gRPC.