Vitess is a database clustering system for horizontal scaling of MySQL.
Перейти к файлу
Anthony Yeh cc21f69afd Rename table_cache -> table_open_cache.
This option was renamed in MySQL 5.5, so it has been silently ignored
since we moved to MariaDB 10.0. I found out it was wrong because MySQL
5.6 quits if it sees an unknown option.
2015-04-22 15:15:23 -07:00
Godeps Added influxdb to Godeps 2015-03-12 18:22:21 -07:00
config Rename table_cache -> table_open_cache. 2015-04-22 15:15:23 -07:00
data add tableacl unit test 2015-04-15 18:14:40 -07:00
doc Merge branch 'master' into resharding 2015-04-14 06:59:16 -07:00
docker Clean up mounted VTDATAROOT from inside Docker. 2015-04-22 15:06:07 -07:00
examples Merge branch 'master' into resharding 2015-04-14 16:45:54 -07:00
go Implement vio_socket_shutdown for MySQL 5.6. 2015-04-22 14:21:40 -07:00
java java: Use gson 2.3.1 to fix compilation for maven2 users. 2015-04-20 17:33:44 -07:00
misc Ignore third_party and Godeps in git precommit hooks. 2015-01-28 15:42:47 -08:00
php Add a minimal VTGateConnection class for PHP. 2015-01-20 01:02:53 -08:00
proto Re-organizing protos. 2015-02-27 20:40:55 -08:00
py Merge branch 'client_lib' of github.com:youtube/vitess into client_lib 2015-04-17 15:19:26 -07:00
test Change capitalization of MySQL56 flavor ID. 2015-04-22 13:02:10 -07:00
third_party Fix "invalid heap pointer" crash when built with Go 1.4. 2015-01-12 23:42:26 -08:00
travis The version I used didn't work, and there is no tagged version later. 2015-03-26 14:04:59 -07:00
vitess.io fix vitess.io layout glitch on mobile and clean up junk files 2015-03-11 10:35:40 -07:00
.dockerignore Add test-runner script for integration tests in Docker. 2015-04-21 20:12:20 -07:00
.gitignore Add test-runner script for integration tests in Docker. 2015-04-21 20:12:20 -07:00
.travis.yml Speeding up travis and docker, no need to get protoc as it's not used 2015-03-13 12:09:08 -07:00
CONTRIBUTING.md Simplify instructions for contributing and deprecate createcl. 2014-10-17 19:56:20 -07:00
Dockerfile Split off bootstrap into separate Docker image. 2015-04-20 15:09:26 -07:00
LICENSE Change the license notice to be shorter and refer to the license file. 2012-06-07 11:55:06 -07:00
Makefile Add test-runner script for integration tests in Docker. 2015-04-21 20:12:20 -07:00
README.md Merge pull request #526 from thompsonja/update_readme 2015-03-27 16:34:37 -07:00
bootstrap.sh Create bootstrap image for MySQL 5.6. 2015-04-22 14:21:18 -07:00
dev.env Change capitalization of MySQL56 flavor ID. 2015-04-22 13:02:10 -07:00
index.md Add content for vitess.io. 2015-03-04 15:49:10 -08:00
preview-site.sh publish index.md in root dir on vitess.io 2015-03-04 15:59:41 -08:00
publish-site.sh Let the user verify changes before publishing site. 2015-04-07 14:45:42 -07:00
replace_doc_link.py replace doc link script should use site.url 2015-02-17 11:18:53 -08:00
test.go test.go: Put logs in flavor subdir. 2015-04-22 14:18:45 -07:00

README.md

Vitess

Build Status Coverage Status

Introduction

Vitess is a set of servers and tools meant to facilitate scaling of MySQL databases for the web. It's been developed since 2011, and is currently used as a fundamental component of YouTube's MySQL infrastructure, serving thousands of QPS (per server). If you want to find out whether Vitess is a good fit for your project, please visit vitess.io.

There are a couple of videos from sougou that you can watch: a short intro prepared for Google I/O 2014 and a more detailed presentation from @Scale '14.

Overview

Overview

Vitess consists of a number servers, command line utilities, and a consistent metadata store. Taken together, they allow you to serve more database traffic, and add features like sharding, which normally you would have to implement in your application.

vttablet is a server that sits in front of a MySQL database, making it more robust and available in the face of high traffic. Among other things, it adds a connection pool, has a row based cache, and it rewrites SQL queries to be safer and nicer to the underlying database.

vtgate is a very light proxy that routes database traffic from your app to the right vttablet, basing on the sharding scheme, latency required, and health of the vttablets. This allows the client to be very simple, as all it needs to be concerned about is finding the closest vtgate.

The topology is a metadata store that contains information about running servers, the sharding scheme, and replication graph. It is backed by a consistent data store, like Apache ZooKeeper. The topology backends are plugin based, allowing you to write your own if ZooKeeper doesn't fit your needs. You can explore the topology through vtctld, a webserver (not shown in the diagram).

vtctl is a command line utility that allows a human or a script to easily interact with the system.

All components communicate using a lightweight RPC system based on BSON. The RPC system is plugin based, so you can easily write your own backend (at Google we use a Protocol Buffers based protocol). We provide a client implementation for three languages: Python, Go, and Java. Writing a client for your language should not be difficult, as it's a matter of implementing only a few API calls (please send us a pull request if you do!).

Trying it out

Vitess is not entirely ready for unsupervised use yet. Some functionality is still under development, APIs may change, and parts of the code are undocumented. However, if you feel adventurous, you're more than welcome to try it. We know that there are some rough edges, so please don't hesitate to reach out to us through our mailing list if you run into any issues. Warnings aside, please take a look at our Getting Started guide.

Documentation

Intro

Using Vitess

Reference

License

Unless otherwise noted, the vitess source files are distributed under the BSD-style license found in the LICENSE file.