There are many question & answers out there covering the similar concepts, but none were came close to our concept.
We have our application built on Java (APIs), AngularJs (Front End) using MySql as database. Till now, there is no concept of storing user's activity in our application.
But now, we have to capture all the users activities (this consists of pretty much everything). Some of these activities are "User has viewed the appointment #", "User has updated the event information", "User has activated / deactivated other user", etc...
Below are the things that we need to consider:
- We will have pretty much of less data initially (may be 100 thousand records per day).
- All of these user activities are pretty much of write heavy and very very low on read part.
- We have designed the audit tables (MySql) in such a way that, they will hold the key information required to track each and every activity of the user.
Confused of below aspects:
- Some of our colleagues and boss are not comfortable with MySql as they are expecting a sudden surge of activity in our application as it is getting traction.
- Also there is suggestion of using Graph DB for it, which I think absolutely unnecessary. Because by design it is a triple store DB used for storing relational data using the nodes and edges.
Little Background for the suggestion: There is a proposal of migrating the entire application data from MySql to GraphDB as a future implementation (Which will be a while before we start off with the migration part and also none of our employees are acquainted with Graph DB knowledge). So our boss insisting us to start of with this.
Questions I have and on which I need your views are:
- Using Graph DB only for user activity is a good idea?
- If we are ever to use a Graph DB, which is the best free Graph DB?
- Alternatively can we use a NoSQL DB such as mongoDB for this purpose?