TiDB is an open source NewSQL database that supports Hybrid Transactional and Analytical Processing workloads (htap) what can perform real-time transactions (OLTP) and process analytical requests.
It is compatible with MySQL and can provide horizontal scalability, strong consistency and high availability. Developed under the imprint of Google Spanner and F1 technologies. The project is written in Go and distributed under the Apache 2.0 license.
Table of Contents
TiDB has SQL support and the provision of a client interface compatible with the MySQL protocol, which simplifies the adaptation of existing applications written for MySQL to TiDB and also allows you to use common client libraries. In addition to the MySQL protocol, you can use the JSON-based API and the Spark connector to access the DBMS.
SQL Features support indexes, aggregate functions, GROUP GROUP expressions, ORDER BY, DISTINCT, joins, views, window functions, and subqueries. The opportunities provided are sufficient to organize work with TiDB of web applications such as PhpMyAdmin, Gogs and WordPress.
The possibility of horizontal scaling and fault tolerance: Storage size and computing power can be increased simply by connecting new nodes. Data is distributed to nodes with redundancy, allowing you to continue working in the event of individual node failure. Crashes are handled automatically.
The system ensures consistency and to the client software it looks like a great DBMS, despite the fact that data from multiple nodes is used to execute a transaction.
Different backends can be used for physical data storage in nodesFor example, the GoLevelDB and BoltDB local storage engines or your own TiKV distributed storage engine.
The ability to asynchronously change the storage schema, allowing you to add columns and indexes on the fly without stopping the processing of current operations.
TiDB 3.0 Main New Features
As we mentioned, TiDB 3.0 is available and with it comes new improvements to work and increase productivity.
In the Sysbench test, version 3.0 is ahead of branch 2.1 1.5 times when doing select and update operations and in the TPC-C test 4.5 times. The optimizations affected various types of queries, including "IN", "DO", and "NOT EXISTS" subqueries, JOIN operations, use of indexes, and more.
In this new version the developers highlight the addition of a new TiFlash storage engine, which enables better performance in solving analytical tasks (OLAP), thanks to column-based storage.
TiFlash complements the previously proposed TiKV storage, storing data in the context of strings in a key / value format and more optimal for transaction processing (OLTP) tasks.
TiFlash works hand in hand with TiKV and the data continues to be replicated as before with TiKV using the Raft protocol to determine consensus, but for each group of Raft replicas an additional replica is created, which is used in TiFlash.
This approach enables you to achieve a better division of resources between OLTP and OLAP tasks, and also makes transaction data instantly available for analytical queries;
In addition, a distributed garbage collector was implemented, which allows to significantly increase the speed of garbage collection in large groups and increase stability.
Added support for window functions (window functions or analytical functions) compatible with MySQL 8.0. The functions in the window allow each line of the query to perform calculations using other lines.
Unlike aggregate functions that collapse a grouped set of lines to one line, window functions aggregate based on the content of a "window" that includes one or more lines from the result set. Among the implemented window functions: NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK and ROW_NUMBER.
If you want to know more about this launch, you can check the note of the changes, and for download, you can get the links in this same link.
Be the first to comment