NO NO NO!
You don't need to send ALL the information after split
JUST the differences
each hub server saves the splittime timestamp, so only records after that timestamp need to be synced


This means you need a caching system. You need to keep track of which records have been sent to which server. This means increased memory usage and processor time. A linked list would need to be kept as a member of each record. This linked list would then have to contain a string to all server's it as been sent to (need a string, not a pointer because if the server is split presumably no server record exists). This means that each database entry (memo, nickname, channel) has to have the additional memory usage of (8+name_len)*N

where name_len is the length of the name of the server, and N is the number of servers. So lets take an average servername, say name.mynet.com. Length is 15 (14 letters + the NULL byte). Average network has about 10 servers. This means that approximately 230bytes of memory would have to be allocated for each record. Now like I said on my network we have 5000 registered users, and 1400 channels. So doing the math, 230*5000 + 230*1400 = 1472000 bytes of memory. Thats 1.4MB of memory being used. Now keep in mind though, this is on my 1500 user network. Assuming those numbers are proportional to the size, if I had say 15000 users, that would mean I'd have 50000 registered nicks and 14000 channels. So doing the math again, 230*50000 + 230*14000 = 14.04MB. Now lets go on the scale of the "top 3" since the original posts were talking about that. If we have 150000 users, we'd have 500000 nicks and 140000 channels. So 230*500000 + 230*140000 = 140.38MB. And that isn't even taking into account the fact that there are other things services keeps track of such as memos, (possibly bots), akills, etc. So on a network the size of Quakenet, each server would be using approximately 200MB of ram just to store the services information, then you have to remember it also has to store regular user info. Yes running services on a single server will use about 200MB as well, but that can be taken into account. In that setup you need 1 machine with a lot of ram, in a distributed situation, all systems need it.