ID:824134
 
(See the best response by Pirion.)
I'm curious to hear what people think about how I could design this. Perhaps this would fit better in the Design Philosophy section, but for now it is a how-to.

First let me provide some context by stating the following: I have one main server which will contain a database of client save data. There can be any number of remotely hosted servers which will retrieve client data from the main server for each of the clients the remote server is servicing. I need an interface for that "remote server"-"main server" data transfer.

I am aware that I can do this with BYOND's Topic and Export procs by hosting a BYOND server to act as an intermediary between the remote and main servers, but I would like to look into alternatives. My reasoning for this is that Export and Topic aren't terribly fast and when using those procs you notice a significant delay. However, I am open to counterarguments for this. If you can reasonably argue that the above would be the most viable solution for the problem at hand then I will most certainly accept it.

tl;dr: How would you suggest I transfer data from a central database to remote BYOND servers without using Export or Topic? Alternatively, suggest why Export and Topic would be sufficiently fast and reliable for this.

Thanks.
afaik, there is no way to do interworld communication, without the usage of world.Topic(), and world.Export()
...unless you can and want to do some kind of DLL haxery or something, but I know nothing about that.
Best response
If you want to go the extra, then I would say mysql, using the dantom.db. Easy update just pieces at a time but pull back as much as needed if you need a little more.

Otherwise world.export is your only "server" side option without including a custom dll.
In response to Pirion
Pirion wrote:
If you want to go the extra, then I would say mysql, using the dantom.db. Easy update just pieces at a time but pull back as much as needed if you need a little more.

Otherwise world.export is your only "server" side option without including a custom dll.

Oh no, I was already aware of BYOND's MySQL integration, but because the servers accessing the database will be remote they will not be directly accessing the database. Allowing remote database access would require configuring the database for remote connections as well as distributing the credentials for the database in the remote server distribution which is a security risk. That's why there's a need for an intermediary service hosted on the same server as the database to provide that interface for querying. This intermediary could be a BYOND server utilizing Dantom.db or it could be some other service running on my server that an external library contacts.

I had completely forgotten about using external libraries, but I may end up using one of those. Unfortunately, unmanaged languages are not my forte so I may just do a POC for Export/Topic to determine if it's viable for me or if I should look into modifying my project's requirements.

Welp, I guess that's that then. Thanks for reminding me of DLL's guys.