#rserv — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #rserv, aggregated by home.social.
-
rserv 0.5.3
This is both a bugfix release, and a major upgrade release for rserv, the graph-enhanced REST api prototyping server. After a year without updates, you get countless bugfixes that had been piling up and great concurrency improvements.
https://github.com/ha1tch/rservIt's a single, no-frills python script you can just drop and run.
Development work resumes in Olu, an identical api-compatible new project written in Go with better performance and safety features.
Olu still doesn't come with Sulpher (the small subset of Neo4js Cypher), but it will soon.
-
I'm thinking that regarding Doxstorr, granular control of ACID behaviour would make sense in the context of transaction execution and not so much on a per-query basis.
If anybody knows any document databases that let you have extremely granular control of ACID-ity, please let me know!
-
This approach also allows for future refinement, such as adding more granular levels or even allowing per-transaction ACID levels for extremely fine-tuned control in advanced use cases.
Take that, Mongo! 🤣
-
What's next in store for Doxstorr:
Making performance trade-offs a configurable setting with four levels of ACID compliance (or three! if relaxed compliance/non-compliance is not considered a level of ACID compliance :-)RELAXED (Level 0):
Minimal ACID guarantees
No forced disk writes
No transaction logging
READ_UNCOMMITTED isolation
No upfront lock acquisition
No rollback on failureBASIC (Level 1):
Basic ACID compliance
Transaction logging (but no forced flush)
READ_COMMITTED isolation
No upfront lock acquisition
Basic rollback on failureSTANDARD (Level 2):
Standard ACID compliance
Transaction logging with soft flush
REPEATABLE_READ isolation
Upfront lock acquisition
Full rollback on failureSTRICT (Level 3):
Full ACID compliance
Transaction logging with forced disk writes
SERIALIZABLE isolation
Upfront lock acquisition
Full rollback on failure -
This is also a very preliminary alpha, super early peek into what I hope will eventually become a pluggable document store for rserv. Fittingly called doxstorr.
With ACID!
-
Sulpher is the little subset of Cypher (Neo4j's query language) that I'm working on.
I added nore examples of queries that can be expressed in Sulpher:
https://github.com/ha1tch/rserv/blob/main/manual/rserv-manual_0.3.9-part3-basicgraph.mdHere are other graph features that can be accessed via the REST api without need of Sulpher (tSome of these endpoints translate your REST request to Sulpher under the hood)
https://github.com/ha1tch/rserv/blob/main/manual/rserv-manual_0.3.9-part4-graphoperations.mdIn the Misc section there's a bit more interesting code example on how to use these graph things from your own Python application, or from wherever you can hit a RESTful http api. It implements the basics to access the graph data of a group of bloggers, with blogs, posts, tags, and comments.
https://github.com/ha1tch/rserv/blob/main/manual/rserv-manual_0.3.9-part6-misc.md
Hope somebody finds it useful!
-
-
-
I'm expanding Sulpher (the little subset of Neo4j's Cypher I came up with) to be able to build more interesting graph queries.
Here's where it's at now:
https://github.com/ha1tch/rserv/blob/main/manual/rserv-manual_0.3.9-part3-basicgraph.mdWhat's next:
- Variable-length path expressions
- Advanced Relationship Handling (direction, multiple types)
- More comprehensive Property-Based Filtering
- Advanced Aggregation Functions and Clauses (WITH, ORDER BY)
- Parameterisation
#rserv #python #rest #graph #graphdb #cypher #sulpher #neo4j #FOSS
-
If you're interested in the earlier basic features, here's is an outdated manual of the 0.2.x pre-release
https://drive.google.com/file/d/1lMmGyDT4H07Q4KA-1Q4OZN5qG_qAtQFg/view
-
I'm working on rserv 0.3.8
https://github.com/ha1tch/rserv/blob/main/manual/rserv-manual-part5-graphs.md
Since 0.3.x rserv has incorporated certain graph-like features that allow you to query data from a property graph perspective.
Any document stored in rserv for any given entity can now be treated as a node from the graph-like perspective.
In order to perform graph queries, I added Sulpher, which is a funny name for a reduced subset of Cypher (the Neo4j query language).
Now I'm more happy with the general design (and keeping it RESTful! unlike GraphQL!) I think I will be ready to make the first public release soon.
#rserv #graphdb #graph #documentdb #cypher #python #REST #FOSS
-
I dedicated a little time to build rserv, a simple prototyping RESTful server, with some interesting features. Here's the feature set and potential use cases, compared to other options.
It's very beta at this time, let me know if you are interested. FOSS, obviously.