New sample project for MySQL integration 🎲


#1

At the Jovo HQ we recently talked about how useful ‘classic’ relational databases like MySQL are, especially for use cases like highscores and leaderboards (in fact, both @AlexSwe and I use them in our respective :movie_camera: voice games :spades:).
Jovo already offers a MySQL integration for storing user data. In order to provide voice devs with an easy start to extending this powerful tool for additional tables, we created this sample project:

The game itself isn’t much fun, but it contains elements that can be used for far more engaging and interesting effects:

  • How to set up and integrate a MySQL database instance with AWS RDS
  • How to set up additional tables in your existing database
  • How to store your custom database config
  • How to insert new items to your table
  • How to query your table to get the user’s rank

Let us know if this has been helpful to you, what cool features you have built with relational databases, and where you would like for us to provide more resources! :smiley:


Looking for MySQL Examples
pinned globally #2

#3

I have been using MySql in many of my skills. For leaderboards/high scores, for event tracking, and for creating real-time multiplayer games. I just implemented it on my own without the jovo adapters as I don’t think they existed at the time.


#4

Hi @gshenar, thanks for sharing! :smiley:

I have so many follow-up questions on your post… I absolutely respect that there are some details you won’t be willing to share because they are equivalent to trade secrets. Maybe I’ll just post some questions here, and you pick those that you’re comfortable to answer?

  • Which granularity do you use for DB-based event tracking? I’ve seen, implemented or discussed solutions based on requests, events (such as ISP transactions), sessions and users. But that topic is probably worth its own thread.
  • Which DB provider did you find optimal, among options like AWS RDS / Aurora, a self-hosted DB and those of other cloud service providers (Google Cloud, Azure)?
  • Do you also host your user data in relational DBs, or do you use only a single DB instance for both user data, leaderboards, tracking and maybe real-time interactions?

#5

@Florian first off, the template is a fantastic example and I appreciate you taking the time to put it together and share it. I think one thing that could be improved in it is the RDS instructions which are fine just for testing but maybe a link to more resources and some text saying “your production db shouldn’t be publicly accessible” would be helpful for those who aren’t already familiar with AWS architecture.

So, we just recently switched to MySQL RDS and I’d be willing to answer some of those questions.

We now keep track of more session information like how long the sessions were but also length of time in each state as our app is very much state-oriented. We are going to monitor performance as the app grows but I believe that’s probably as granular as we want it to be to keep it’s performance high and efficient. So any data that we want to track is created and saved as a session variable and then is sent to the database at the end of each session.

Our user data, leaderboard, and other session information is held in a single DB instance and at some point in the future we would create a data warehouse for analytics if performance becomes an issue.

I was wondering, is there a reason you guys chose MySQL over other open-source databases available such as Postgres?