Skip to content

Database and connectivity #7

@bopke

Description

@bopke

I believe that one of the most important things are good choices of database and methods of communication between instances and proxies. For start it could be enough to just assume that there is only one proxy server and number of minecraft server instances that is declared once and never changes, but we can do better than this. It would be perfect to make it possible for server owners to add more sectors if they feel like it, so we shouldn't just trust spigot server with what it believes is player equipment, coordinates etc., we should store it in separate database that will be the single source of truth. We need to pick good database engine for it and it should be great to have only one database engine required for the project to run, so we wouldn't one day wake up with 3 different databases for different purposes, and some other software that we depend on. I think about 3 options, but I'll be happy for other sugestions in this thread:

  1. MongoDB - I think that we wouldn't crave for lots of relations in database for such project, and not so strictly structurized documents nature compared to super strict nature of sql databases that would force us to maintain migrations will speed up development process, especially at the start of the project.
  2. PostgreSQL - It is probably the best free SQL database we can get. Stricter nature of tables with relations will probably make it easier to maintain project at later stages of developemnt.
  3. MySQL - I believe it is most common database engine used my minecraft plugins. It has the same upsides as PostgreSQL, but is a little bit slower and has less functionality than PostgreSQL, but it will be easier for server owner to maintain only one database for most of the plugins.

Also, another thing to consider, a bit related to databases (so its in the same discussion issue), is communication method for plugins to exchange data and notify other nodes about events that they should be aware about. I'm not 100% sure, but it may be achievable by usage of Plugin channels, but this looks very primitive and I believe that use of pub-sub solution may be the better idea. One of such solutions may be redis pub/sub, but if you know something that may suit better - let us know in this issue!

Metadata

Metadata

Assignees

No one assigned

    Labels

    DiscussionThis issue is discussion. It will be closed when decission is made

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions