Keep a graph in a SQLite file, read and written by the object managers
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start by tracing the existing object manager read and write paths and the PostgreSQL write plan, then compare the current SQL store schema with the listed SQLite table layout. Check the SQLite driver’s function registration, transaction, and version support before mapping the required graph operations. Done means object managers can read and write interoperable SQLite graph files while meeting the layout contract, including JSON text, stamps, and nanosecond moment comparisons.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Port of liberation-data/drivine4j#194.
drivine4j can now keep a graph in a SQLite file, and its object managers read and write it. The file has the same tables as Oracle and Postgres, so each library can read a file another wrote:
<graph>_node (nid INTEGER PRIMARY KEY, labels TEXT, props TEXT, stamp TEXT)<graph>_edge (eid INTEGER PRIMARY KEY, src, dst REFERENCES node ON DELETE CASCADE, type, props TEXT)<graph>_schema
Layout contract. These are what make one library's file readable by another:
- Labels and properties are JSON text, not SQLite's binary
jsonb. Labels are written sorted and unescaped (no\uXXXX: in Python,json.dumps(..., ensure_ascii=False)), because a label is found by the text"Label"withinlabels. - The stamp is a column, as on the other SQL stores.
- Moments are ISO text, compared to the nanosecond.
How drivine4j does it. These can be followed or done another way:
- Writes: the same write plan Postgres's function carries out, carried out by a function registered on each connection (
drivine_write) under a savepoint. better-sqlite3'sdb.functionand Python'screate_functioncan do the same. - Deletes that count select their nodes and hand them to
drivine_delete. - Other registered functions:
drivine_epoch(text): epoch nanoseconds, for comparing moments;REGEXP;- a Unicode
lower; - cosine and Euclidean similarity, for vector search by scanning.
- Connections: WAL,
foreign_keys=ON, a busy timeout, andBEGIN IMMEDIATEfor writing transactions. A save or delete turned away withSQLITE_BUSYis run again. - Minimum SQLite: 3.45. Python's bundled
sqlite3can be older;pysqlite3-binaryis one way round that.
Cypher on SQLite (the compiler's third target) follows in a later drivine4j PR, with its own port issue.
- Lingua principale
- Python
- Stelle
- 1
- Fork
- 0
- Merge medio
- 1h 13m
- PR unite (30g)
- 109
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di liberation-data/drivine-python
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
liberation-data/drivine-python#209 ·
I maintainer di solito rispondono entro 1 giorno
-
CI: three Oracle-only tests in test_cypher_compiled.py never run, as -k oracle doesn't select themAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
liberation-data/drivine-python#178 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
liberation-data/drivine-python#219 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 57/100
liberation-data/drivine-python#218 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
liberation-data/drivine-python#215 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di liberation-data/drivine-python
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
521xueweihan/HelloGitHub#4150 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
aws-samples/sample-per-model-bedrock#595 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
bug connectors
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 67/100
pyinfra-dev/pyinfra#2036 ·
I maintainer di solito rispondono entro 9 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno