Drivine is a graph database client for Node.js and TypeScript. It was created with the following design goals:
With regards to the second point on scaleability, let’s break that down into component facets.
Follow the Quick Start section in our User Guide or clone the sample app and use it as a starter template.
Start creating repositories like the one below.
@Injectable()
export class RouteRepository {
constructor(
@InjectPersistenceManager() readonly persistenceManager: PersistenceManager,
@InjectCypher('@/traffic/routesBetween') readonly routesBetween: CypherStatement) {
}
@Transactional() // Has default Propagation.REQUIRED - partipicate in a current txn, or start one.
public async findFastestBetween(start: string, destination: string): Promise<Route> {
return this.persistenceManager.getOne(
new QuerySpecification<Route>()
.withStatement(this.routesBetween)
.bind([start, destination])
.limit(1)
.transform(Route)
);
}
}
If you use Drivine
and your code is public, feel free to make PR and add yourself to the list.
Clone the official sample app and start hacking.
Repository: github.com/liberation-data/drivine-inspiration
This sample is a basic starter template, with some tutorials. It has some endpoints for traffic routing, movies/films and other typical use-cases. Rather than start from scratch, choose the one that closely matches yours, and modify.
New version of slackmap.com is full rewrite with technology update. The OrientDB
was replaced with Neo4j
and we choose Drivine
as the way to work with the database.
Check out how Drivine
supports Neo4j
in Full Stack JavaScript App
using Angular
+ Nest
+ Nx Workspace Monorepo
.
Repository: github.com/SlackMap/slackmap
Best way to learn Drivine is with our User Guide.
New to graph databases? Read some tutorials.
Have a tutorial you’d like to share? Get in touch with me.
Drivine was created by Jasper Blues (that’s me), who is also the creator of a popular iOS library called Typhoon, a library that is included in thousands of iOS apps including Audible.com, AMEX, Etihad Airlines, Singapore Airlines and others.
This library is based on an architecture that was put in place for MSTS, after the company signed several Fortune 100 clients and needed to scale their payment service. The result was not only an improved architecture, but response times improved dramatically - from just under 2000ms seconds to around 63ms.
The ideas were ruminated upon while building Vampr - a growing social network for musicans that needs to serve hundreds of transactions per second. Clean architecture and performance are often competing concerns, so how would one go about getting the best of both worlds?
Experience as a past committer to the Spring Framework including on Spring Data Neo4j helped, as well as discussion and debate with colleagues, especially among those with experience applying OGM/ORM tools. Early experiements with such tools resulted in unsatisfactory performance. Subsequent endeavors resulted in satisfactory performance, but difficult to maintain code.
Finally, Drivine shows that it is not necessary to forego clean architecture in order to achieve scaleability goals.
If you can’t find what you need in the Quick Start or User Guides, please post a question on StackOverflow, using the Drivine tag.
Great! A contribution guide, along with detailed documentation will be published in the coming days.
Please raise a GitHub issue.
Are you using Drivine and would like to support free & open-source software? Send us an email or PR to add your logo here.
Drivine is a non-profit, community driven project. We only ask that if you’ve found it useful to star us on Github or send a tweet mentioning us (@doctor_cerulean). If you’ve written a Drivine related blog or tutorial, or published a new Drivine-powered app, we’d certainly be happy to hear about that too.
Drivine is sponsored and led by Liberation Data with contributions from around the world.
Author: liberation-data
Live Demo: https://drivine.org/
GitHub: https://github.com/liberation-data/drivine
#nodejs #javascript #node #typescript