Track and visualize changes in a Neo4j database schema
Project description
neo4j-meta-logger
A python module to log and track your neo4j graph schema transformations.
call db.schema.visualization
+ ⏲️ a time machine + some helpful 🔧 tools and 📈 statistics
Works fast with neo4j graphs of any size 💪
Maintainer: Tim Bleimehl
Status: Pre-alpha
Example
Lets create a sample graph with python and Neo4J
import py2neo
from NeoMetaTracker import NeoMetaTracker
g = py2neo.Graph(name="test_graph")
g.run(
"CREATE p = (:Human{name:'Amina Okujewa'})-[:LIVES_ON]->(:World {name: 'Earth'})"
)
g.run(
"CREATE p = (:Cat{name:'Grumpy Cat'})-[:LIVES_ON]->(:World {name: 'Internet'})"
)
g.run(
"MATCH (wI:World{name:'Internet'}),(wE:World{name:'Earth'}) CREATE (wI)-[:EXISTS_ON]->(wE)"
)
Our graph looks like this:
and the schema will look like this:
Lets capture the current status to analyse the changes later.
meta_logger = NeoMetaTracker(test_graph)
meta_logger.capture()
Now lets do some changes to our Graphs content
g.run(
"MATCH (wI:World{name:'Internet'}),(wE:World{name:'Earth'}) CREATE (as:Human{name:'Aaron Swartz'})-[:LIVES_ON]->(wI), (as)-[:LIVES_ON]->(wE)"
)
Our graph now looks like this
The schema still looks the same. We wont be able to recognize changes without any help:
call db.schema.visualization
Here come NeoMetaTracker
for the rescue
Lets do another capture to compare the changes we did:
meta_logger.capture()
Now we can analyze the changes in the graph:
meta_logger.get_numeric_last_changes()
This outputs:
{'labels': {'Human': 1}, 'relations': {'LIVES_ON': 2}}
We can see we created one new Node with the Label Human
and 2 new relations named LIVES_ON
.
This allready can be a valuable meta information, but wait there is more...
Lets visualize the schema changes in another graph.
changes_subgraph = meta_logger.get_schemagraph_last_changes()
schema_g = py2neo.Graph(name="test_graph")
schema_g.merge(changes_subgraph)
Now we only see the part of our schema that changed:
We can also recall any old state of our schema on any point in time where we did a capture
meta_logger.capture_points[0].schema
This will return a py2neo.Subgraph
of the schema from the beginning of our script. Same as call db.schema.visualization
but with a timemachine :)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file NeoMetaTracker-0.0.9.tar.gz
.
File metadata
- Download URL: NeoMetaTracker-0.0.9.tar.gz
- Upload date:
- Size: 138.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a98ca4cf40264aca15d2d7e169b70f957f38643d48b18e745ffb532de133d28 |
|
MD5 | 7a54217235dbef277d7a12bb617adbaf |
|
BLAKE2b-256 | 0f1172a0616ff95340f49f1d179977025f3bc06440f72a41b833785c110d0be0 |
File details
Details for the file NeoMetaTracker-0.0.9-py3-none-any.whl
.
File metadata
- Download URL: NeoMetaTracker-0.0.9-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6877f7c235e73be0600633d0d21eb661fc82ea9457ed461da0ac9df89a5e20e |
|
MD5 | 639584454091378b8b55e2836f99ea09 |
|
BLAKE2b-256 | c107a23732178629fa173dd16951f08f65d98c2369f64f3caf4043ff74f2f828 |