Ash FrameworkAF
Ash Framework8mo ago
8 replies
Matt Beanland

AshNeo4j Datalayer

Ash Neo4j is a Datalayer for Neo4j

https://github.com/diffo-dev/ash_neo4j/

'Why have an Ash Neo4j DataLayer?

I've been using developing systems for about 30 years, often working with relational databases. I've been developing with graph databases for the last four years. I've found graph aligns naturally with the way I think about things and how they are related. Graphistas see graphs everywhere, because they are everywhere. Graph is similar to Elixir, in that once you start you don't want to go back. In fact life is too short, I won't go back...

Similarly I've found Ash to be an exceptional framework for declarative application development. It has a learning curve, however the Ash way is to use and build abstractions for exceptional maintainability.

The Ash Framework contains some basic datalayers and the ecosystem already offers a choice of datalayer extensions, including the popular and feature rich AshPostgres above the open source Postgres.

I hitched my wagon to Ash Framework aware of the lack of graph datalayers, knowing that they could be built using an Ash Extension. Indeed Ash does a good job of abstracting SQL databases away and making refactorings easier, so arguably there is less demand for such a thing. However as you refactor your resources you still need to migrate database schemas - so the complexity doesn't go away, it is just better hidden.

Neo4j is defacto in data science and well entrenched in security, fraud, logistics, network management and recommendation applications. Increasingly our applications need to work with both facts and knowledge and these are best represented using graphs.

So here we both are with Ash and graph. Enjoy the combination.'

There is a livebook of course you'll need Neo4j too.

Let me know how you find it/what issues you encounter.
GitHub
Ash Neo4j datalayer. Contribute to diffo-dev/ash_neo4j development by creating an account on GitHub.
GitHub - diffo-dev/ash_neo4j: Ash Neo4j datalayer
Was this page helpful?