User

From ETM
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Storage system design needed.

Storage System Design

Userprofiles are generally split in to smaller parts. This helps with memory-management, load-times and in the end data-parsing within the backend.

For example: If we store everything inside a user.json this could easily get up to 200kb+ per File. Scanning for homepoints in general in a given area would require to load 100.000* 0,2MB => 20GB of data.

By splitting the data into chunks/containers we can decrease the filesize to probably <10kb per File. 100.000* 0,01MB => 1 GB. Factor 20 speed increase and this does not include better caching strategy by HDD/DB as most likely only a subset of the data will be queried regularly.

UserOptions

	// BooleanState
	FakeView			(0, BooleanState.class),		// View
	Tablist				(1, BooleanState.class),		// Tablist
	RocketBoots			(2, BooleanState.class),		// RocketBoots
	FlyBackwards		(3, BooleanState.class),		// RocketBoots
	FlyEffects			(4, BooleanState.class),		// RocketBoots
	HoverFly			(5, BooleanState.class),		// RocketBoots
	CreativeFly			(6, BooleanState.class),		// Essential
	Fakes				(7, BooleanState.class),		// FakeStuff
	DebugInfo			(8, BooleanState.class),		// Debug
	ShowDisabledPerm	(9, BooleanState.class),		// Perm
	God					(10, BooleanState.class),		// Essential
	ShopMessages		(11, BooleanState.class),		// Kshop
	ShopErrorMessages	(12, BooleanState.class),		// Kshop
	Admin				(13, BooleanState.class),		//
	Vanished			(14, BooleanState.class),		// 

	// Integer 50
	ViewDistance		(50, Integer.class),				// View
	FakeViewDistance	(51, Integer.class),				// View
	CreativeFlySpeed	(52, Integer.class),				// Essential

	MaxHomes			(53, Integer.class), 				// -------------- Admin/Plugin only typically
	MaxAccounts 		(54, Integer.class), 				// -------------- Admin/Plugin only typically
	
	// Long 100

	// Float 150
	
	// Double 200
	
	BootsFlySpeed		(200, Double.class),				// Essential
	BootsUplift			(201, Double.class),				// Essential
	
	// Enums 300
	
	GameMode			(300, GameMode.class),			// Essential
	OwnAccountView		(301, AccountVisibility.class),	// Account
	OtherAccountView	(302, AccountVisibility.class),	// Account
	FlyEffectsType		(303, ChunkliEffect.class),		// RocketBoots
	ShopDefaults		(304, new ArrayList<String>()),
	ActiveAccount		(305, AccountId.class),			// Account

UserPods

	Home			(0, HomePod.class),
	Backpack		(1, BackpackPod.class),
	Chat			(2, ChatPod.class),


We need to (possibly) store:

  • ModelProfile -> ALWAYS LOADED
  • accounts -> ALWAYS LOADED
  • UserProfile -> loaded when online (?)
  • userstats profile -> loaded when online (?)
  • Mails (UUID <> MailProfile ?)
  • Homes (UUID <> MailProfile ?) vs stored in User (Component)