Data storage solutions for SNS game

30
Data Storage Solutions for SNS game Dinh Nguyen Anh Dung – P2S – G6 – VNG

Transcript of Data storage solutions for SNS game

Page 1: Data storage solutions for SNS game

Data Storage Solutions for SNS game

Dinh Nguyen Anh Dung – P2S – G6 – VNG

Page 2: Data storage solutions for SNS game

CONTENT

• SNS games and SQL-based databases

• NoSQL technology and Couchbase

• NoSQL does not come without

challenges

• SNS Storage Engine (SSE)

Page 3: Data storage solutions for SNS game

SNS games AND SQL-based databases

Page 4: Data storage solutions for SNS game

SNS games characteristics

• Huge amount of concurrent requests

but require low response time

• Accounts can be stored separately

– No need for centralized storage

– In most cases, no need to put strict

constrains on data relationship

Page 5: Data storage solutions for SNS game

Native limitations of SQL-based DBMS• Centralized fundamentally

– Vertical scale up issue

• Schema

– High risk (and cost) for updates

• Normalized data

– Unnecessary overhead: join tables, locking,

data constrain check,…

Page 6: Data storage solutions for SNS game

Native limitations of SQL-based DBMS

Source : NoSQL - WhitePaper

Page 7: Data storage solutions for SNS game

Native limitations of SQL-based DBMS• SQL processing overhead at both DBMS

and client side.

• Most data accesses end up at hard-disk

– Very challenging to meet low response time

– Internal caching does not help much

• Hard to distributed data across

multiple-servers

Page 8: Data storage solutions for SNS game

NoSQL technology and Couchbase

Page 9: Data storage solutions for SNS game

NoSQL technology

• Persistent distributed hash-table

• Active set resides on RAM

– Extremely fast response time

• Horizontal scale up

• Raw and direct data access

– set, get, add, inc, dec : no overhead

Page 10: Data storage solutions for SNS game

NoSQL technologyKey Value

Jack.Gold 50123

Jack.Exp 4670

Jack.Coin 700

Peter.Gold 7050

Peter.Exp 20005

Peter.Coin 1

Key Value

Peter.Gold 7050

Jack.Exp 4670

Peter.Exp 20005

Key Value

Jack.Gold

50123

Key Value

Peter.Coin

1

Jack.Coin 700

Page 11: Data storage solutions for SNS game

Active set on RAM

HDD

ACTIVE SET ON RAM

CLIENT

Lazy write

Page 12: Data storage solutions for SNS game

Couchbase server

• Based on membase technology

• Distributed

• Replica

• Since 1.8, have native client for PHP

• Bucket types

– Couchbase (persistent)

–Memcache (memory only)

Page 13: Data storage solutions for SNS game

NoSQL does not come without challenges

Page 14: Data storage solutions for SNS game

Our first SNS game with Couchbase

Page 15: Data storage solutions for SNS game

Architecture and design issues

• Transition from relational database

design to key-value design

– Account data => keys : how ?

• Only minimum support for locking,

concurrency control

– add : failed if exists - mutex

– cas : read get cas, write failed if cas is out-

dated

Page 16: Data storage solutions for SNS game

Architecture and design issues

• No transaction support

– Data corruption becomes so easy!

• No high-level data support (e.g.

list,queue,…)

• No tools for raw data viewing / editing

Page 17: Data storage solutions for SNS game

Pitfalls

• Too much freedom for developers

– Anyone can add / modify any key any time

• Epic key design mindset

– One key for all : bad performance,

concurrency control is a true night mare

• Abuse the power of set

– Never fail ! Developer LOVE it !

Page 18: Data storage solutions for SNS game

SSE – SNS Storage Engine

Page 19: Data storage solutions for SNS game

Our second SNS game with Couchbase

Page 20: Data storage solutions for SNS game

What is SSE ? • A thin “layer” between developers and

the all-mighty Couchbase– SSE is simply a PHP library

• Provide better support for locking and concurrency control– Basic support for : Begin – update - commit

• Provide high-level data structures– Collection, queue, stack, integer (gold), inc-

only integer (exp), binary flags (quest)…

Page 21: Data storage solutions for SNS game

What is SSE ? • Minimize the risk of weak concurrency

support– Ability to rollback pending writes

• Schema– Limit freedom of developers!

– No more nightmare for backup and raw data view/editing

• Buffers to eliminate repeated read / writes

Page 22: Data storage solutions for SNS game

Raw account view / editing tool

Page 23: Data storage solutions for SNS game

What is SSE ?

Page 24: Data storage solutions for SNS game

What is SSE ?

Page 25: Data storage solutions for SNS game

Multi-instance architecture• Replica is too costly to performance

• One node failed means cluster failed

• Adding nodes requires rebalance– Only good when having clusters with large

number of nodes (more than 20 nodes)

Page 26: Data storage solutions for SNS game

Multi-instance architecture• One instance for index (user-to-instance

mapping)– Use APC on logic servers to cache / reduce

load to index instance

• Many instances of data– Dynamically adjust weight on each

instance base on average load of instance

– Node failure only affects part of the user-base

Page 27: Data storage solutions for SNS game

Multi-instance architecture

Data Instance 1

Data Instance 2

DataInstance 3

Index Instance

Game Logic

Game Logic

Game Logic

APC APC APC

Game Logic

APC

Page 28: Data storage solutions for SNS game

Disavantages• Lower performance of multi-get

• Not well balance between instances in terms of accesses

Page 29: Data storage solutions for SNS game

How good is SSE for us ?• No more data loss due to concurrency

• No more data corruption

• No mysterious bugs due to un-intended writes

• Reduce more than 3 times workload of server developers

Page 30: Data storage solutions for SNS game