The TIDB targets rapidly growing companies, including payment and e-commerce services that need to process more and more data. PingCAP says the TIDB has been adopted by around 1500 companies worldwide. These companies include names such as Square, PayPay, Shopee, Dailymotion, BookMyShow. TIDB manages online transactional processing (OLTP) and online analytical processing (OLAP) in the same database. PingCAP delivers real-time analytical results faster than other distributed databases.
TIDB is an open source NewSQL database that supports Hybrid Transaction and Analytical Processing workloads (htap) can perform those real-time transactions (OLTP) and process analytical requests.
Compatible with MySQL and can provide horizontal scalability, strong consistency and high availability. Developed under the pressure of Google Spanner and F1 technologies. The project is written in Go and distributed under an Apache 2.0 license.
TIDB has SQL support and a client interface that is compatible with the MySQL protocol that 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 Spark connector to access the DBMS.
SQL Properties support directories, collection functions, GROUP GROUP statements, ORDER BY, disc, combinations, views, window functions, and sub-queries. The opportunities offered are sufficient to organize work with the TIDB of web applications such as PhpMyAdmin, Gogs, and WordPress.
The possibility of horizontal scaling and fault tolerance: Storage size and compute power can be simply increased by connecting new nodes. The data is distributed to redundant nodes and allows you to continue working in the event of individual node failure. Interlocks are handled automatically.
It ensures system consistency and for client software, it looks like a great DBMS even though data from multiple nodes is used to perform a transaction.
Different backends are available for physical data storage at nodes example, GoLevelDB and BoltDB local storage engines or your own TiKV distributed storage engine.
The ability to change the storage scheme to synchronous allows you to instantly add columns and directories without stopping processing existing operations.
Main New features TIDB 3.0
As we mentioned, the TIDB 3.0 is available, with new enhancements to work in revenue and improve productivity.
In the Sysbench test, version 3.0 is 1.5 times further than branch 2.1 when selecting and updating and 4.5 times in the TPC-C test. Optimizations have affected various types of queries, including sub-queries “IN”, “do” and “NOT EXISTS”, JOIN operations, the use of directories, and more.
In this new release, developers underline the addition of a new TiFlash storage engine, providing better performance in solving analytical tasks (OLAP) thanks to column-based storage.
The TiFlash completes pre-recommended TiKV storage, stores data in the context of strings in a key/value format and more appropriately for processing (OLTP) tasks.
The TiFlash works with the TiKV and the data continues to replicate with the TiKV as it was before using the Raft protocol. To determine the consented, but for each Raft copy group, an additional copy is created that is used in TiFlash.
This approach allows you to achieve a better resource division between OLTP and OLAP tasks, and also makes transaction data available instantly for analytical queries;
In addition, a distributed refuse collector has been implemented in large groups, allowing a significant increase in refuse collection speed and increased 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 make calculations using the other lines.
Unlike the grouped row set-down to a row collection functions, the window functions are collected based on a “window” content that contains one or more rows from the result set. Window functions applied include: NTILE, lead, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK, AND ROW_NUMBER.