5,889 karma · joined November 8, 2014
Compatible with redis protocol
Full distributed transaction support
Strong consistency
High availability
This paper focuses on accelerating SELECT queries and describes the considerations in an efficient GPU implementation of the SQLite command processor.
Results on an NVIDIA Tesla C1060 achieve speedups of 20-70x depending on the size of the result set.
Small
Support Tracing-JIT compiling
Source is a wasm32 binary module. The application embedding the compiler decides what import functions it provides.
Supports x86-64. Support for 64-bit ARM is planned. (Support for non-64-bit or non-little-endian CPU architectures isn't planned.)
Single-pass, low-latency ahead-of-time compilation. Early functions can be executed while the latter functions are still being compiled, even while the source is still being downloaded.
Generated code requires minimal runtime support. It may be run e.g. in a strict seccomp sandbox. Note: calling standard library ABIs is not supported.
Supports snapshot-and-restore across compiler versions and CPU architectures.
So we can use any MySQL tools such as mysqldump or mydumper to backup the database consistently.
See the MVCC implementation here: https://pingcap.github.io/blog/2016/10/17/how-we-build-tidb/
Actually we are using RPC to call Rust from go, and it has nothing to do with Go or Rust, because either way we have to do RPC call(by encoding and decoding data), currently we depend on protocol buffer and customized RPC , and we are trying to migrate to gPRC. We know Go doesn't have pattern matching and generics, and it's kind of pain sometimes. But still we like Go very much because of simplicity and concurrency.