Current location - Loan Platform Complete Network - Big data management - What database does World of Warcraft use?
What database does World of Warcraft use?
Quoted from cnblogs@Zealic:

The last few days, I revisited WOW, and combined with the database knowledge that I have recently learned and my own understanding, I analyzed the approximate system of WOW. Of course, I just see the spot, I hope that the WOW know something about the warrior can give me and to understand the WOW point of view; so that the world more understanding of WOW, so that China's game can learn (not plagiarism) and beyond the WOW.

I don't know where the idea came from, the idea of WOW's database structure as well as the program to achieve it, then, come to understand it.

First thought:Game Server uses what OS and Database

At first guess : Unix/BSD, database for Oracle

This is more suitable for WOW such a large network game, because of its storage and data is very large

Online to find some key information, you can prove that my guess is not far from reality

1.9C in a server failure, the following only list the key parts

08:29 Received EVA storage alarm email, contacted data center engineers, contacted HP engineers .

08:35 Failure contingency process initiated, people involved include THE9/HP/Blizzard US .

15:33 Oracle experts join the failure response process

15:50 Blizzard database engineers begin to continue analyzing the failure situation with Oracle experts.

17:15 Blizzard says they haven't heard anything new from their admins or DBAs yet, and they are still working on the outage.

2. Blizzard's Database Administrator job requirements

Oracle Database Administrator

The World of Warcraft development team is looking for a self-motivated The World of Warcraft development team is looking for a self-motivated and knowledgeable IT professional to help administer the WoW databases. As the person responsible for handling the database-side of WoW pushes and patches, our Live Team Oracle DBA's job duties would include designing, configuring, maintaining, monitoring, benchmarking and troubleshooting Oracle databases.

Blizzard offers a fun, creative, and technically challenging environment with excellent compensation and a full range of benefits.

Responsibilities:

Provide production on-call support.

Maintain and enhance existing databases.

Perform routine database maintenance.

Work with end users to ensure smooth production rollouts and pushes.

Assist in training other employees.

Require the production on-call support.

Requirements:

3+ years professional Oracle DBA experience, including Oracle 9i.

Extensive experience with database performance tuning.

Extensive experience with database performance tuning.

Experience working with large databases (>1TB).

Experience with Oracle RAC and Partitioning features.

Proficiency in Linux/Unix environments including shell scripting.

Plusses:

Strong knowledge of SQL & PL/SQL.

Familiarity with UNIX tools and shell scripting

Familiarity with HP EVA's and Data Protector.

Experience with Oracle RAC and Partitioning features. Data Protector.

Passion for video games, including MMORPG's

So WOW's servers should be : HPUNIX + ORACLE

So I'll make some guesses about WOW's database, whether it's correct or not, or to what extent. collection, there is no way to know

Mainly divided into the following pieces

-Game servers:

Here we are talking about the servers in the game, not the physical sense of the servers mentioned above, for example, Demon's Souls, Black Iron, and Gadgetsion in the seventh district are the game servers.

-Game Zones:

A game zone, a large zone is made up of many game servers. The reason why the zones are divided, I think, is entirely because of the physical reasons, each zone should be a cluster of servers, and on this cluster, there are many database instances, each database instance corresponds to a game server.

-Authentication system:

Logging in, queuing up, and verifying identity in the game should all be done in this section.

-Chat channel:

The chat channel is a separate server, this can be analyzed from the game characters, maps are very stuck while the chat is completely unaffected by the situation, the chat can not send messages offline, so I can arbitrarily think that the chat server basically does not operate the database, at most, in the case of the current can not be dealt with or the player can not be received for the time being, use some temporary table to save the message. At most, it uses some temporary tables to save the messages; or the server saves all the chat data into the database to facilitate the querying of the players' behavior.

In addition, the chat server is independent of all servers, and all game servers in each zone use the chat server corresponding to that zone. In this way, the system and database of the server can be optimized specifically for the characteristics of the chat server

-Copy & Battlefield:

Copy & Battlefield (hereinafter referred to as the copy) I think it should be the same as the chat server, it is an independent server, but he is different from the ordinary game server, and does not save other map data, only save the map data, but also save the map data. Only the data of the replica map is saved.

As for how to realize the cross-service battlefield, I think it should be to make a copy of the required character data to the replica server, and lock the data (tables or rows) in the original server, and update the original data with the data from the replica server when exiting the battlefield. We can think of the battleground as a temporary table in the database that is processed and then updated to where it needs to be saved.

Through the above explanation, you can also understand why you need to enter the battlefield loading screen, loading screen is not just as a transition screen, it also carries the loading client resources, and server-side communication processing; display loading screen, the replica server should be as described above the game server exchanges the role of data.

The difference between a large replica and a normal replica, I think, is simply that the reset time and replica strategy has changed.

-Map

The definition of the map is in the client's resources, in order to prevent users from tampering with it, BLZ uses obfuscated naming as well as checking checks on the resource files and DBCs defining the map; the reason why I think this is so is because when China's WOW was in public beta, there were some accelerated plug-ins that allowed the character to directly traverse through walls, surfaces, and other seemingly impossible objects. The reason for this is that during the WOW beta in China, there were some acceleration plug-ins that allowed characters to traverse walls, floors, and other seemingly impossible objects, which validated the fact that BLZ did most of the collision detection directly on the client side in order to reduce the burden on the server.

The actual map structure of WOW is not the same as what we see in the game; it's a continent divided into smaller pieces of map data, and the client just needs to load all the map blocks near the player's character's location. The technical details will not be analyzed in detail.

-East and West continents:

Each continent is supposed to be an independent database, the reason why there is a loading screen, I think it is because the two continents have very different terrain materials, the client needs to release all the resources of the departure continent, load the necessary resources of the destination continent, and at the same time, transfer the character's data to the destination continent.

- Characters:

Characters in the game are supposed to be separated into several tables, including player attributes, quests, parcels, mailboxes, banks, and so on. Some important ones, such as item parcels, mailboxes, and banks, are committed to the database by the server in a very short (relative to other data) time by writing the cached data in memory; while some data that is not very important compared to the above data takes a long time to be committed to the database. This also explains why when the server goes back up, the character's location and quests, etc. are back up, while the items are not, which causes the legendary two-handed pain in the ass.

-Monsters:

Monsters in the world should be generated using Prototype mode, so saving the monster's data is really just a matter of saving the values that will change.

-Other:

There are always some events in the game, such as: the visit of the Dark Moon Circus, Halloween activities, Valentine's Day activities, etc., these things should be scalable, it can be imagined that, in order to facilitate the management of the WOW since the BLZ and the expansion of the management of servers or server clusters in the management center, there should be the BLZ for their own and the agents to provide the tools or scripting guide. tools or scripting usage guides. As for what scripts WOW uses, this I can't guess, it may be Perl\Python\SH, anyway, it won't be LUA.

- Behavior and Skills:

Why does WOW play and feel so smooth, not as unresponsive as other MMO's seem to be or feel, WOW doesn't communicate with the client every moment; its The main working principle is that the client first processes the user's input and performs the corresponding start animation or processing, while the actual display results will only be visible after waiting for the server to process and return, which is why, after dropping out of the line, the player is still doing the operation of the character, but can not get the results of the operation.

Skills and behaviors are pretty much the same, and in fact a lot of in-game limitations are placed on the client side, which are caused by BLZ's efforts to lighten the load on the server side and reduce the amount of communication. Well, I'm going to take a wild guess here, as long as the memory address or corresponding code is analyzed, there are many places where WOW can be tampered with; because as far as I know, all the current WOW plug-ins are realized by violently modifying the client's memory, and the non-commonly seen modification of the network packets, BLZ encryption is still doing a pretty good job of it :).

Basically, that's all I've analyzed, I've tried to dig more out of my own head, but unfortunately, what I know is still too little, I can't help it, so here goes.

----------------------------------------------

PS: Big Mango standalone WOW uses MySQL