https://github.com/vincentserpoul/playwithsql
implementing as immutable as possible data modelization and benchmarking it on different platforms
https://github.com/vincentserpoul/playwithsql
benchmarking cockroachdb container docker gcp golang kubernetes kubernetes-cluster mariadb mssql mysql percona postgres sql swarm-cluster
Last synced: 3 months ago
JSON representation
implementing as immutable as possible data modelization and benchmarking it on different platforms
- Host: GitHub
- URL: https://github.com/vincentserpoul/playwithsql
- Owner: vincentserpoul
- License: apache-2.0
- Created: 2016-11-03T18:19:21.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-08-25T05:19:55.000Z (over 8 years ago)
- Last Synced: 2025-10-18T22:48:50.374Z (6 months ago)
- Topics: benchmarking, cockroachdb, container, docker, gcp, golang, kubernetes, kubernetes-cluster, mariadb, mssql, mysql, percona, postgres, sql, swarm-cluster
- Language: Go
- Size: 555 KB
- Stars: 4
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# playwithsql [](https://goreportcard.com/report/github.com/vincentserpoul/playwithsql) [](https://www.codacy.com/app/vincent_11/playwithsql?utm_source=github.com&utm_medium=referral&utm_content=vincentserpoul/playwithsql&utm_campaign=Badge_Grade)
implementing as immutable as possible data modelization and benchmarking it on different platforms.
## Disclaimer
the benchmark comparison is for very specific use case:
* Golang 1.8.3
* Containerized DBs, latest versions
* Specific schemas
* Used configurations
* GCP as cloud provider (or local, until docker for GCP is allowing experimental)
* n1-standard-1 as machine type
Hence, they can't be used to affirm that this or this db is better.
*The context matters!*
## Results
Just check them [here](https://playwithsql-summary.surge.sh)!
# Tested dbs
- [x] MySQL
- [x] MariaDB
- [x] PerconaDB
- [x] Postgres
- [x] CockroachDB
- [x] SQLite
- [x] Microsoft SQL Server
- [x] Reference hosted MySQL on GCP
- [x] Reference hosted Postgres on GCP
- [ ] Vitess
- [ ] Cloud Spanner
# Tested setups
- [x] local swarm cluster - local solo db container
- [ ] swarm cluster - gcloud solo db container
- [x] kubernetes cluster - gcloud solo db container
- [ ] swarm cluster - gcloud cluster db containers
- [ ] kubernetes cluster - gcloud cluster db containers
# Rebuilding the docker image
```
./build-docker-cmd-status.sh
```
# Launch tests
```
./status/run-test.sh
```
# Launch local status benches
```
./bench/status/swarm/run-all.sh (islatest or lateststatus or history)
```
# Launch remote tests on kubernetes
```
./bench/status/kubernetes/run-all.sh (islatest or lateststatus or history)
```
# TODO list
- [ ] Bench 1000000 loops and get the best of 5 runs for each db
- [ ] Test different storage (mounted standard disk, mounted ssd, local ssd)
- [ ] Test High Availability
- [ ] Leverage new go 1.8 capabilities (named queries, remove sqlx?)
- [ ] Vendor deps (github.com/kardianos/govendor)