Тестирование производительности
NoSQL БД
Денис Нелюбин
Thumbtack Technology Inc.
A.K.A.: | Citrusleaf |
Creator: | Aerospike, August 2012 |
License: | Proprietary, Community edition |
Category: | Key-value, Complex data types + Secondary indexes (from v.3.0) |
A.K.A.: | CouchDB + Membase |
Creator: | Couchbase, Inc. (CouchOne + Membase), January 2012 |
License: | Apache 2.0, Proprietary (Enterprise edition) |
Category: | Key-value, Document + Secondary indexes (from v.2.0) |
A.K.A.: | Apache Cassandra |
Creator: | Facebook, July 2008 |
License: | Apache 2.0 |
Category: | Key-value, BigTable, Column-oriented |
A.K.A.: | Mongo |
Creator: | 10gen (MongoDB, Inc.), March 2010 |
License: | AGPL, Commercial license |
Category: | Document-oriented |
A.K.A.: | Yahoo! Cloud Serving Benchmark |
Creator: | Yahoo! Research, June 2010 |
License: | Apache 2.0 |
Category: | NoSQL benchmark |
YCSB
YCSB
Data set
Load
Run
YCSB
YCSB
Does NOT do, does NOT check:
Why YCSB?
Hardware
Servers:
4 * (8 * Xeon + 32GB RAM + 4 * 120GB SSD)
Clients:
8 * (4 * i5 + 4GB RAM)
Single client is not enough
Hardware: CPU
8 cores Xeon ≈ 4 cores i5 *
*(unproved)
Hardware: Network
1 Gbps is not enough
1 Gbit/sec / 1 KB of data ≈ 100 000 ops/sec
Single IO queue on single CPU is not enough
# cat /proc/interrupts | grep eth
90: 0 0 0 0 IR-PCI-MSI-edge eth0
91: 275107859 0 0 0 IR-PCI-MSI-edge eth0-TxRx-0
92: 227858040 0 0 0 IR-PCI-MSI-edge eth0-TxRx-1
93: 242082684 0 0 0 IR-PCI-MSI-edge eth0-TxRx-2
94: 230651008 0 0 0 IR-PCI-MSI-edge eth0-TxRx-3
95: 217273950 0 0 0 IR-PCI-MSI-edge eth0-TxRx-4
96: 240149262 0 0 0 IR-PCI-MSI-edge eth0-TxRx-5
97: 194736879 0 0 0 IR-PCI-MSI-edge eth0-TxRx-6
98: 270089080 0 0 0 IR-PCI-MSI-edge eth0-TxRx-7
Hardware: SSD
Overprovisioning
OS (GNU/Linux)
ulimit
RAID (RAID 0?)
Read-ahead
Test
Data sets:
Workloads:
Consistency:
Insert, RAM
Insert, SSD
Heavy Update, RAM
Heavy Update, SSD
Heavy Update, Latency
Mostly Read, RAM
Mostly Read, SSD
Speed
Insert
Couchbase*
Aerospike
Cassandra
MongoDB
Update
Couchbase*
Aerospike
Cassandra
MongoDB
Read
Aerospike
Couchbase*
MongoDB
Cassandra
* in memory or on smaller data set
Failover test
Aerospike, Sync, SSD, 50%
Cassandra, Async, SSD, 50%
Couchbase, Async, RAM, 100%
MongoDB, Async, SSD, 50%
Replication
MongoDB
Cassandra
Couchbase/Aerospike
Data storing reliability
Cassandra
MongoDB
Aerospike
Couchbase
archive
live data
fast cache, eviction
cache (async only)
Capacity
Cassandra
MongoDB
Aerospike
Couchbase*
packed archive
unpacked live data
indexes in RAM + SSD
metadata and cache in RAM
* was able to take only 200M records
Deployment
Couchbase
Aerospike
Cassandra
MongoDB
four clicks
powerful config
config+config+calculator
shards of replica-sets
Managing
Couchbase
MongoDB
Cassandra
Aerospike
superduperwebconsole
commands and docs *
exists **
raw ***
* ** *** | use MMS (MongoDB Management Service) use DataStax products try AMC (Aerospike Monitoring Console) |
Unique features
Aerospike
Couchbase
Cassandra
MongoDB
Troublesomes
Aerospike
Couchbase
Troublesomes
Cassandra
MongoDB
When to use: Aerospike
Big Fast Cache
When to use: Couchbase
In-memory Cache with Persistence
When to use: Cassandra
Big-Data Archive
When to use: MongoDB
Universal DB for Web
Not only YCSB