Keep a graph in a SQLite file, read and written by the object managers
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Python
- Étoiles
- 1
- Forks
- 0
- Merge moyen
- 1 h 19 min
- PR mergées (30 j)
- 122
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de liberation-data/drivine-python
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
liberation-data/drivine-python#252 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
liberation-data/drivine-python#250 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
liberation-data/drivine-python#209 ·
Les mainteneurs répondent en général sous 1 jour
-
CI: three Oracle-only tests in test_cypher_compiled.py never run, as -k oracle doesn't select themOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
liberation-data/drivine-python#178 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 58/100
liberation-data/drivine-python#243 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de liberation-data/drivine-python
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
microsoft/agent-lightning#661 ·
Les mainteneurs répondent en général sous 2 jours
-
area/profiles comp/cli P3 type/feature
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
NousResearch/hermes-agent#146372 ·
Les mainteneurs répondent en général sous 1 jour
-
[BUG] OpenAI-compatible embedding model alias breaks embedder constructionPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour
-
[oblt-aw][autodoc] Document obs-aw-automerge contract and fix automerge doc inconsistenciesPeut-être pris @github-actions l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
GeoSeries scale and skew tests fail with pytest 9.2.0Peut-être pris @jiayuasu l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour