←back to thread

320 points benocodes | 1 comments | | HN request time: 0.192s | source
Show context
CharlieDigital ◴[] No.41896683[source]
Very interesting choice of using Cypher[0]

In 2014, we built a similar type event-driven system (but specifically for document distribution (a document can be distributed to a target set of entities; if a new entity is added, we need to resolve which distributions match)) and also ended up using Cypher via Neo4j (because of the complex taxonomical structure of how we mapped entities).

It is a super underrated query language and while most of the queries could also be translated to relational SQL, Cypher's linear construction using WITH clauses is far, far easier to reason about, IMO.

EDIT: feel like the devs went overboard with the mix of languages. Shoehorned in C# Blazor? Using JS and Jest for e2e testing?

[0] https://drasi.io/reference/query-language/

replies(3): >>41896809 #>>41896856 #>>41896904 #
robertlagrant ◴[] No.41896904[source]
We made a health backend partly using Cypher and the only thing I found was the simple queries looked amazing, but as soon as you need to join non-linearly it started looking a lot like SQL again. And when you're using an ORM it stops mattering. And when you need migrations it gets painful!
replies(2): >>41896929 #>>41896952 #
CharlieDigital ◴[] No.41896929[source]

    > but as soon as you need to join non-linearly
At least in our use case, even with some very gnarly 20+ line Cypher queries, it never got to the point where it felt like SQL and certainly, those same queries would be even gnarlier as nested sub-selects, CTEs, or recursive selects, IMO.

Perhaps a characteristic of our model (a taxonomy of Region, Country, Sponsor, Program, Trial, Site, Staff for global clinical trials and documents required by Region/Country/Program/Trial).

replies(1): >>41896956 #
1. UltraSane ◴[] No.41896956[source]
Cypher works really well with a well defined taxonomy.