How can I change rasa x default databases to custom databases?

I am running rasa x for bot development but this creates two db files called tracker.db and rasa.db in the same directory. What do these two different dbs do?

How can I use different (remote) dbs for storing data when running rasa x? How can I used remote SQL databases to power rasa x?

Hi @psds01, the two different dbs are used to store the trackers for all conversations (tracker.db), as well as training data and other information required for to run the rasa X web interface.

Rasa X only supports sqlite when run from the command line. You can connect to remote database if you run rasa X on docker: Deploy to a Server

By default, this uses a containerised PostgreSQL database, but you could in principle connect to remote instances as well. You’d need to modify the tracker_store entry in endpoints.yml:

tracker_store:
   type: sql
   dialect: "postgresql"
   url: ${DB_HOST}
   port: ${DB_PORT}
   username: ${DB_USER}
   password: ${DB_PASSWORD}
   db: ${DB_DATABASE}
   login_db: ${DB_LOGIN_DB}

I hope that helps!

@ricwo, say i run two containers, one for rasa-x and one for rasa-production, can i use two different endpoints.yml?

because i would like the rasa-x tracker store to be postgresql and for rasa-production be able to use redis as a tracker-store ? or can i use redis for both?

You can definitely use Redis for your tracker database by changing the tracker_store section of the yaml config. Check out our docs on Tracker Stores for details on how to configure a Redis tracker store.

Rasa X only works with SQL databases.

Yeah but can I use two tracker store, one for Rasa production running in one container and another endpoints.yml for running on Rasa x and then how do I make Tracker store migrations

I’m not sure I follow - Rasa X doesn’t keep a tracker store, only the Rasa production service does. Would you mind clarifying what you mean?

the Rasa X, does require a database to store conversations? I understood that the postgres for rasa X is used to store conversations because when i run rasa X in local, it creates rasa.db and tracker.db, i am assuming it is SQLite and rasa.db contains login information/rasa x data

In this case, I would like to replace the SQLite with postgres as done in the docker-compose but i would like that the rasa-production container uses Redis as it’s tracker store

Hi again, as you said by default the docker-compose setup already uses PostgreSQL for the rasa X data, so you don’t have to change anything there. You’ll only have to to update the tracker_store section in your endpoints.yml to use Redis as described here. That section does not affect the rasa X database. I hope that helps

okay. got it. I will try that. thanks

Is that possible to connect Rasa X to a mongoDb database to store its conversations? If so, where should I change the database which it uses?

No, Rasa X only support SQL-based databases. You can still use MongoDB for the tracker database in Rasa.