This PR adds support for ingesting the wine reviews dataset into Neo4j, a graph database, in an async fashion. In addition, it also provides a query API written in FastAPI that allows the user to send queries via available endpoints. As usual in FastAPI, the API is documented via OpenAPI specs.
All code (wherever possible) is async
Pydantic is used for schema validation, both prior to data ingestion and during API request handling
The same schema is used for data ingestion and for the API, so there is only one source of truth regarding how the data is handled
The whole setup is orchestrated and deployed via docker, and gunicorn is the process manager for the API -- so there is a semblance of scalability. However, for a true production setup, the given compose file may not be sufficient (look into K8s and other such tools for deploying the API more scalably behind a reverse proxy)
Neo4j
This PR adds support for ingesting the wine reviews dataset into Neo4j, a graph database, in an async fashion. In addition, it also provides a query API written in FastAPI that allows the user to send queries via available endpoints. As usual in FastAPI, the API is documented via OpenAPI specs.