Download - NoSQL Games
![Page 1: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/1.jpg)
NOSQL GAMESPatrick Hueslerwooga GmbH
![Page 2: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/2.jpg)
play?D! "!# $%&' (!
![Page 3: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/3.jpg)
![Page 4: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/4.jpg)
![Page 5: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/5.jpg)
![Page 6: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/6.jpg)
![Page 7: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/7.jpg)
![Page 8: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/8.jpg)
challengestechnical
![Page 9: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/9.jpg)
for Diamond Dash20,543,500monthly active users
http://www.appdata.com/apps/facebook/127995567256931-diamond-dash (03/10/2012)
![Page 10: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/10.jpg)
for Diamond Dash3,871,133daily active users
http://www.appdata.com/apps/facebook/127995567256931-diamond-dash (03/10/2012)
![Page 11: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/11.jpg)
for Monster World6,500 RPS
backend traffic up to
![Page 12: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/12.jpg)
Database?what does mean that for a
![Page 13: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/13.jpg)
write heavyread/write ratio?
![Page 14: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/14.jpg)
of architectureEVOLUTION
Wooga’s
![Page 15: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/15.jpg)
Game backend
iOS
Flash
Reporting
![Page 16: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/16.jpg)
![Page 17: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/17.jpg)
... well, nginx instead of apache
LAMPBuilt with
![Page 18: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/18.jpg)
scalemysql does
![Page 19: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/19.jpg)
use casesfor certain
![Page 20: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/20.jpg)
peoplewith the right
![Page 21: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/21.jpg)
![Page 22: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/22.jpg)
cloudTo the
![Page 23: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/23.jpg)
instead of PHPRailsLet’s use
![Page 24: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/24.jpg)
load balancer
app server app server app server
master shard 1 master shard 2
slave shard 2 slave shard 2
![Page 25: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/25.jpg)
shortstory
long
![Page 26: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/26.jpg)
![Page 27: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/27.jpg)
load balancer
app app app app app app app app
db db db db db db db db
db db db db db db db db
app app app app app app app app
app app app app app app app app
![Page 28: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/28.jpg)
use casedifferent
![Page 29: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/29.jpg)
Are NOTarcade games
farming games
![Page 30: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/30.jpg)
going to workNOT
5is is
![Page 31: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/31.jpg)
at the end of the tunnelLight
but there is
![Page 32: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/32.jpg)
![Page 33: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/33.jpg)
to redisSLOW PARTS
Move
![Page 34: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/34.jpg)
rinsE and REPEAT
![Page 35: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/35.jpg)
![Page 36: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/36.jpg)
![Page 37: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/37.jpg)
dedicatedback to
![Page 38: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/38.jpg)
for the buckbangMore
![Page 39: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/39.jpg)
MachinesFaster
![Page 40: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/40.jpg)
networkfaster
![Page 41: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/41.jpg)
all the wayREdisLet’s use
![Page 42: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/42.jpg)
load balancer
app server app server app server
redis
redis slave
![Page 43: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/43.jpg)
REDIS HASH
![Page 44: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/44.jpg)
Redis Landall is well in
![Page 45: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/45.jpg)
![Page 46: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/46.jpg)
![Page 47: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/47.jpg)
Memory Leaks
![Page 48: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/48.jpg)
work again?BGSAVEhow does
![Page 49: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/49.jpg)
workingno longerdumps are
![Page 50: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/50.jpg)
![Page 51: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/51.jpg)
going to workNOT
5is is
![Page 52: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/52.jpg)
![Page 53: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/53.jpg)
Restore on Demand
6x it with
![Page 54: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/54.jpg)
(never really supported)Disk Store
Redis
![Page 55: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/55.jpg)
![Page 56: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/56.jpg)
StatefulLet’s go
![Page 57: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/57.jpg)
is faster than no databasedatabase
no
![Page 58: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/58.jpg)
all the wayS3
Let’s use
![Page 59: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/59.jpg)
erlangLet’s use
![Page 60: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/60.jpg)
http://www.slideshare.net/wooga/from-0-to-1000000-daily-users-with-erlang
![Page 61: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/61.jpg)
http://www.slideshare.net/wooga/from-0-to-1000000-daily-users-with-erlang
![Page 62: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/62.jpg)
![Page 63: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/63.jpg)
SPARTANproject
![Page 64: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/64.jpg)
![Page 65: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/65.jpg)
![Page 66: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/66.jpg)
yesterdayready
it has to be
![Page 67: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/67.jpg)
enormouslyscale
It has to
![Page 68: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/68.jpg)
![Page 69: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/69.jpg)
node.js
![Page 70: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/70.jpg)
without sharding?Scales
What DB
![Page 71: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/71.jpg)
masterless replication?
what DB has
![Page 72: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/72.jpg)
Async Saving
![Page 73: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/73.jpg)
Riak
![Page 74: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/74.jpg)
for nowgood enough
![Page 75: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/75.jpg)
for goodgood enough
![Page 76: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/76.jpg)
![Page 77: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/77.jpg)
Riaklife with
![Page 78: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/78.jpg)
1 { 2 "userId" : 1000000011100, 3 "xp" : 20, 4 "coins" : 400, 5 "cash" : 300, 6 "rooms" : [ 7 { 8 "id" : 1, 9 "type" : "x-ray", 10 "status" : "busy" 11 } 12 ] 13 } 14
![Page 79: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/79.jpg)
![Page 80: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/80.jpg)
is plain awesomeSPoF
no
![Page 81: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/81.jpg)
for our use casesuboptimal
bitcask was
![Page 82: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/82.jpg)
over all keys!map/reduce
Do not
![Page 83: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/83.jpg)
ulimitdread8l
![Page 84: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/84.jpg)
riak Attachthe tale of
![Page 85: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/85.jpg)
![Page 86: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/86.jpg)
MobileMonsters go
![Page 87: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/87.jpg)
![Page 88: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/88.jpg)
a flash clientNOT
An iOS client is
![Page 89: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/89.jpg)
at all?databasedo we need a
![Page 90: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/90.jpg)
in a stateless architecture?s3
Could we just use
![Page 91: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/91.jpg)
at all?backenddo we need a
![Page 92: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/92.jpg)
writes toclientwhat if the
S3?
![Page 93: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/93.jpg)
wooga.com/jobs
![Page 94: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/94.jpg)
Referenced Presentationshttp://www.slideshare.net/wooga/how-to-handle-1000000-daily-users-without-using-a-cache-railswaycon-2012
http://www.slideshare.net/wooga/event-stream-processing-with-kafka-berlin-buzzwords-2012
http://www.slideshare.net/wooga/from-0-to-1000000-daily-users-with-erlang
![Page 95: NoSQL Games](https://reader033.vdocument.in/reader033/viewer/2022051312/5478e9cab37959652b8b4603/html5/thumbnails/95.jpg)
CreditsPolar bear: http://www.flickr.com/photos/bestrated1/167630455/sizes/o/Family: http://www.flickr.com/photos/adwriter/212098009/sizes/o/cart: http://www.flickr.com/photos/41304880@N05/6187541490/cow closeup: http://www.flickr.com/photos/sovietuk/227465632/sizes/o/sparta: http://www.flickr.com/photos/legofenris/5008721616/sizes/l/tank: http://www.flickr.com/photos/markkelley/1581559810/sizes/l/bomb: http://www.flickr.com/photos/7969902@N07/511234695/