home.social

#rserv — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #rserv, aggregated by home.social.

fetched live
  1. 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.
    github.com/ha1tch/rserv

    It'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.

    #rserv #python #webdev

  2. 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!

    #rserv #doxstorr #python #foss #documentdb #database

  3. 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! 🤣

    #doxstorr #rserv #python #foss

  4. 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 failure

    BASIC (Level 1):
    Basic ACID compliance
    Transaction logging (but no forced flush)
    READ_COMMITTED isolation
    No upfront lock acquisition
    Basic rollback on failure

    STANDARD (Level 2):
    Standard ACID compliance
    Transaction logging with soft flush
    REPEATABLE_READ isolation
    Upfront lock acquisition
    Full rollback on failure

    STRICT (Level 3):
    Full ACID compliance
    Transaction logging with forced disk writes
    SERIALIZABLE isolation
    Upfront lock acquisition
    Full rollback on failure

    #rserv #doxstorr #python #graphdb #foss

  5. 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!

    github.com/ha1tch/doxstorr

    #rserv #doxstorr #python #foss

  6. 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:
    github.com/ha1tch/rserv/blob/m

    Here 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)
    github.com/ha1tch/rserv/blob/m

    In 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.

    github.com/ha1tch/rserv/blob/m

    Hope somebody finds it useful!

    #rserv #python #graphdb #foss #sulpher #cypher #neo4j

  7. .2. Advanced Relationship Handling (direction, multiple types):

    MATCH (alice:User {name: "Alice"})-[r:FRIENDS|COLLEAGUES]->(user:User)
    RETURN user.name, type(r)

    Finding users who are both friends and colleagues of Alice.

    #rserv #python #rest #graph #graphdb #cypher #sulpher #neo4j

    1. Variable-length path expressions:

    like, for example:

    MATCH p=(alice:User {name: "Alice"})-[*..]->(user:User)
    RETURN user.name

    Finding all users connected to Alice, regardless of the path length.

    #rserv #python #rest #graph #graphdb #cypher #sulpher #neo4j

  8. 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:
    github.com/ha1tch/rserv/blob/m

    What's next:

    1. Variable-length path expressions
    2. Advanced Relationship Handling (direction, multiple types)
    3. More comprehensive Property-Based Filtering
    4. Advanced Aggregation Functions and Clauses (WITH, ORDER BY)
    5. Parameterisation

    #rserv #python #rest #graph #graphdb #cypher #sulpher #neo4j #FOSS

  9. If you're interested in the earlier basic features, here's is an outdated manual of the 0.2.x pre-release

    drive.google.com/file/d/1lMmGy

    #rserv #python #REST #FOSS

  10. I'm working on rserv 0.3.8

    github.com/ha1tch/rserv/blob/m

    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

  11. 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.

    #rserv #REST #dev #webdev #python #FOSS