How bad would it be to use my own database for a popular game

Is that even possible in Lua?

I feel like RBXLua can’t open a webhook connection, but I presume it would be easier for data recovery and resetting stats [plus, prevents the outage issue].

As of recommendation, personally I’d stay for Datastores. If it is possible then it might annoy other companies [i.e when Roblox’s useragent got blocked from Discord]

It is possible to use an external database for your games. It’s just at your own expense as opposed to roblox’s free servers. External databases require HTTPService

I used luvit for my Discord proxy, but I’m somewhat good with js.

Rethink-luvit by nameless allows you to access a RethinkDB database, so if you create a server and add endpoints and whatnot, you can accomplish this, but the issue here is player data. I think RethinkDB offers more features than Roblox’s DSS and is why I want to use it, but I’m not sure if 999999 requests a minute or whatnot will cause my server to, well, commit suicide with a note saying for every request to screw off.

yes i agree it could be possible, but would it impact performance? With Roblox’s major traffic, I’m mainly wondering if it’d be a bad idea

(insert joke about roblox’s outage)

Jokes aside - prob best to ratelimit it

[also learn something new everyday]

If I were to rate how bad it would be on a scale of 10, it would be: 10000/10. How would you even do that? What’s saying that what you use wont become deprecated(the thing you make that stops being supported. So if that type of function breaks Roblox won’t fix it). It would be better just to use datastore service. Plus im pretty sure roblox has a way to recover data. But if you do the custom way im pretty sure wont have a recover data option.

this would be private so i’d be the one handling rates and whatnot, the one thing id want to do is AVOID ratelimiting

Here’s a tutorial explaining how to use an external database. It comes down to personal preference in most cases. Seeing performance impact would take testing and probably depend on how much data you’re trying to move around.

iirc Rethink has at least a ratelimite queue [might be mongoDB, i get the two mixed up], but its really best to either queue requests to obey to the ratelimit (i.e Roblox datastore)

I too use RethinkDB. I run it on my own server, so all the data is under my control. I use it for a web server rather than holding user data from games.
Using a self-hosted solution obviously has the standard drawbacks of data backup, recovery, outages, etc.
I believe that it would be safer to go with JavaScript if you’re going to use an external database. Have an API between the database to handle all the requests. From my experience with using Luvit, there’s not much out there in terms of using third-party packages, where in Node.js there’s millions of options.

thats a good explanation imo, but my main concern is the drawbacks it could have on a popular game. from your experience, do you think rethinkdb could commit suicide if a popular game used it constantly under the same database?

You would definitely want to have multiple database servers. I would not recommend having all of the requests file into a single one. Bandwidth is a pretty large concern with requests as they pile up. You’ll start getting slower connections to where they pile up and time out.

well then

do you have any resources on how to make multiple servers because im somewhat new to sharding and whatnot and itd be greatly appreciated

https://rethinkdb.com/docs/sharding-and-replication/
You can probably find plenty of tutorials online. RethinkDB also has a slack workspace that you can find on their website somewhere.

alright thanks man, youve helped a lot

RethinkDB can handle a lot of requests at once, so it’s up to how much you think the server running your database can handle. On first load, the web panel shows a graph up to 20k queries per second (when blank).
Processing power + bandwidth = More queries that can be handled

I saw Pokemon games on ROBLOX used third party saving program. I am not sure how they do it though.

For my projects which aren’t that big, I have been using Firestore from the Google Firebase series. I wrote a simple express app that makes an API that I can use from Roblox. Then it’s all about optimizing. There’s a lot of positive things about it.

The reason I choose Firestore is that:

  1. It handles scaling very well if my game gets big
  2. It gets hosted by Google, which means it has a lot of uptime and I don’t need to spend time or resources on maintaining it
  3. it is one of the cheaper databases and offers a free tier, which means I don’t pay anything unless my game grows, and if it does, then I probably earn enough to cover those costs

What’s optimistic about using an external database:

  • You get more control of your data, giving you more possibilities
  • It might be easier to handle requests to delete data
  • You can connect it to stuff such as a discord bot allowing someone to retrieve their in-game stats
  • You can make a website where users can receive support for the game and where you can easily change data if needed
  • You can make dashboards showing you statistics of the game, and you can make yourself an online admin panel to add, edit or delete data

What’s negative about using an external database:

  • You have some extra cost
  • If something goes wrong, it’s on you, and Roblox can’t fix it
  • You have to work with the limits of HTTP requests which means you need to optimize your API calls
  • It’s more work but also more flexible
2 Likes

alright this is pretty detailed

i think im going to stick with datastore for now but probably store SOME data in an external database such as analytics or achievements and whatnot

ty

I created a similar topic, I personally think dropping datastore for more secure, overall better downtime, I recommend firebase because there are already a ton of modules and the longest downtime was 2 mins in one datacenter (there are a ton of datacenters)