Sponge-wide Database

I got an idea!! :3 Some Bukkit plugins (and mods) already had similair systems, but most of them only have very specific features. This is supposed to be an attempt to unite all of them.
Explaining what this database is, would probably be far more difficult than simply telling you what i does:
synchronised list of banned players(like mcbans)
synchronised list of trusted players(for special whitelisted projects)
player account list(premium and cracked players) #a sponge client could use this for authentification
database with playernames,skins and models for each account
sync’d player money and item prices to unify enonomy on multiple servers(per default off)
player records and points database(eg: for minigames)
music stream with multiple channels(for vanilla clients=noteblock-api-like)
friend and foe list
auto ANONYMOUS crash reporting for server and client(by default off)
central server mesh network database, for servers that share one(or more) distributed worlds[ [Link]][1]
…
I think you get what this is about…Uses for a database like this might be:
identifying griefers,spammers,etc before they even visit your server
running a build project, and want to open it to others, but fear griefers? set your server to allow all who are known to this server already, and all trusted players in the database, and you don’t need to worry anymore
allow cracked players to join your server
is mojangs auth or skins server down again ? don’t worry, we got this! #could also allow modded servers to change your model to your globally prefered one
ever wondered what it would be like to have a “global” economy that influences all servers(that have this enabled)?
NoteblockAPI and MidiPlayers are awesome, but finding lots of good midi files can be a pain sometimes, how about a radio with multiple stations that streams 24/7?
…
Any thoughts on this?
[1]: MMMinecraft: A Multiserver/Multiplayer plugin and mod

2 Likes

Sponge will be a massive project (even bigger than what it is now). Can you image what load the database server would take on, if all the servers, with all their plugins that use this database, keep updating it and querying it hundreds of times per second?

You can use http://hadoop.apache.org/ for massively store all the data.
I think it is really necessary, for an project in this scale!
If you start the project, please tell me! I’am interested.
I also can help with developing the hole system… i do java over 2 years!

Sounds like a good idea but as @Maulss says, it is probably to big to be handled with a server (maybe if you can split it up it might get a chance to work)

It sounds really good but also not compleatly clean (not what i meant but cant find another word) because you could just create a server and give yourself a unfair advantage.
Maybe if you can work it out more it will be a great idea :smiley:
I would love ot help plan this project, i can’t code pitty enough (not atm :stuck_out_tongue:) but i love to help where i can :smiley:

The problem isn’t that multiple connections will be accessing the database as much as multiple queries and updates will be interacting with the database. Should this idea become a real thing, of course there will have to be some sort of a hook. But that isn’t the issue here. If you’ve worked with a database via Java before you will likely know what I’m talking about - The amount of plugins on servers that hook into the official database and query it is like someone taking a machine gun and shooting it at the database server physically.

A database like this would be very convenient and useful. However, there’s many major issues to cover. A couple being the following:

  • Maintenance - It would be very difficult to maintain and financially support a database of this scale. The person or persons behind it would have to put a lot of time, effort and money into it.
  • Security - Who defines a griefer and a trusted player? What happens to players who are banned for whatever reason? A fair set of guidelines would have to be put in place, or limitations to prevent unfair use. Maybe have each server register to prevent people creating servers and banning usernames? Players would have to have statistics stored about them, for example a ban count, ban reasons, kick counts, etc.

This would be a difficult project but it is not impossible.
Good luck to whoever may attempt it.

1 Like

Good luck with this…

The problem is there’s no absolute defense against network attacks - people take down XBL if they feel like it.

1 Like

I can see someone getting mad if they get banned.
A decent firewall, cloudflare and some standard DDoS protection should help against basic booters. I doubt anyone with something more capable would waste it on something like this.

It’s a nice alternative solution, but I think that would waste more server resources than actually using your own database…

1 Like

I haven’t looked into MCBans and the like enough to comment on that. Providing the source behind a project like this has enough financial backing, it should be a fairly simple project with help from developers in the community.
Vote. That is the word I was looking for, but it would not come to mind.

A peer2peer network isn’t really an option for something like this.

But then again, servers would have to connect to other servers, slowing down the performance while they attempt to interact with each other.

Define “normal” server.

Also, what is the point of having a P2P system for databases if you can’t even request data from them yourself?

Simply put…this would be aweeesooooome!!!

I have 0 coding experience, but I would looove to help with this project when you start it

A central server would be a more secure and better choice. It would lighten the work load and make process faster. Bitcoins and cryptocurrency in general is a completely different thing from this. I don’t know too much about cryptocurrency, but if what I believe is true, you would have to develop a fairly complex and difficult system for a project like this to be securely P2P.

The point of something like this would be to have a central location to store information about players, right?
If that’s so, a P2P network is pointless and extremely inefficient. It would be hard to implement and a waste of time. As I’ve said before, a server hosting all of this information, with an API for updating player records is what you would need.

To get out of this debate, it’s more productive if we discuss issues that would arise with the system itself.

No, that can be done with plugins. There should be no central one:

  • who decides who gets banned?
  • servers giving players money for nothing
  • servers spamming messages to random players

It’s just not cheat-safe.

I wasn’t really supporting the multi-server money, it was more other things.

It’s just not cheat-safe.

This is true. There are ways to ensure some level of security, such as verification systems and such.

Guys…HeisenBugDev…

EDIT: Whoops, totally misunderstood what this topic was about.

I like the idea of creating a central service that’ll combine essential components of each server. Saying that, it’s crucial that the following are considered and are extremely well executed:

  • Security - It’s essential that contributors to this project consider security. If this were to be the access point for hundreds of thousands of servers, the access point in which servers were able to differentiate premiums from cracked accounts, or to find trusted users vs. untrusted, the overall system needs to be solid in security. One backdoor or exploit could potentially have a huge damaging effect.

  • Scalability - If this turns out to be a good tool, everyone is going to want to use it, therefore resulting in the core handlers being overloaded with thousands of requests a minute. Cloud services such as App Engine or AWS should seriously be considered for this project.

  • Permissions - It can take one user to pass fake information, such as manipulated points, incorrect bans etc. This can have a damaging effect on people’s reputations over time.

It is a very nice idea, some of the features though do seem a bit too impossible to achieve (such as replicating Mojang’s auth server), but if it’s well thought and planned out, it can really hit the nail on the head.

I see a few problems with this. What if for example that a server owner grants himself 1 million dollars in money, then goes on a different server to be the richest person there is. Second of all the server needed to host something of this scale would be of considerable price.

I suppose this could be alleviated with a torrent like program (keep in mind torrents are not bad, they just have a bad rap for the people who abuse it), instead of a central server, the information is stored among the servers that are willing to participate. Servers cannot access the information such as that proposed in the article. To be granted access to the information, the server would agree to store a certain amount of player data (this can include any player, even players that never logged on), say 5 GB. All that would be required for the server is a separate plugin. Of course this information would be encrypted so server owners could not tamper with player data, and possibly one players data could be stored over many servers so one tamper could not entirely affect the players information.

To avoid this, money must be controlled by in-game features. Of course, every server has different plugins and a different atmosphere. It wouldn’t work unless every server was practically the same.

In all honesty, a project like this is not suited for something as abstract as Minecraft. There are features mentioned here that can work, but some simply can’t.

1 Like