Database highload solutionsObserving. Comparing. Conclusing.Only free products.
IntroWhat we need?
DemandsHigh performance ScalabilityDurabilityComplex analytic/statistics queries
Products typesNonSql DatabasesPro:High performance
High scalability
Document orientedContra:Impossibility to perform typical web queriesSQL DatabasesPro:Sql language
Well known
Any complex queriesContra:Not enough performance
Scalability**For observed database
CompetitorsNON Sql DatabasesMongoDBRedis, Memcache*SQL DatabasesMySql and Clones
Postgres* Key-value storage like memcacheDB
Scaling strategyTheory
 Scaling StrategyScale back and Scale up.Partitioning : split your tables.Replications: Extend your servers farm and split ‘Insert/update/delete’  and ‘select ’  queries  to Master/Slave(s) .Sharding : split your databases.
Scale Back and Scale UpWhat?Scale Back – remove/archive unused data.Scale Up – add more power(RAM,CPU) , disks.When?When you can.Your database get benefits from that.Changes in application:No
PartitioningWhat?Partitioning – split tables to logical parts by same criteria's.  When?You have big table(s) which utilize the biggest part of traffic.Your queries ask only parts of information.How?Database do it work for you clearly for your appplication.Changes in application:NoExample:You can have millions commentaries but in 99% you show only latest of them.
ReplicationsWhat?Copying(sync or async) data from “master” server – to “slaves”(or other Master). The idea – read from slave, write to master.When?You much more “read” traffic then “write”.How?Databases have tools/solutions for replication.Changes in application:Not big
ShardingWhat?Split database into many smaller databases.There are:Vertical shardingHorizontal sharding
Vertical shardingWhat?Split database into many database(servers) by functionalityWhen?You have tables which functionalities do not cross.How?You will split them manually.Changes in application:Not so bigLacksNo more “JOINS” between these tablesExample:Commentaries table utilize 90% traffics. Shard it vertically and move the tables to separate server.
Horizontal shardingWhat?Split big table into many serversWhen?You have huge table and it too big for one server.How?You will split them manually.Changes in application:A lotLacksNo more “JOINS” between this table and other. No more ‘dumb’ queries for the table.Example:You have billions users. Split the table into few servers. Each server will contains same table but with different data.
SolutionsPropositions
Mysql
Mysql Clone: PerconaBackground: Pecona company.

Database highload solutions