Versió distribuïda de SGBD TiDB 3.0

Disponible llançament de DBMS distribuït TiDB 3.0desenvolupat sota la influència de les tecnologies de Google Spanner и F1. TiDB pertany a la categoria de sistemes híbrids HTAP (Hybrid Transactional/Analytical Processing) capaços tant de proporcionar transaccions en temps real (OLTP) com de processar consultes analítiques. El projecte està escrit en Go i Distribuït per amb llicència d'Apache 2.0.

Característiques de TiDB:

  • Suport per a SQL i subministrament d'una interfície de client compatible amb el protocol MySQL, que facilita l'adaptació de les aplicacions existents escrites per MySQL a TiDB, i també us permet utilitzar biblioteques de client habituals. A més del protocol MySQL, podeu utilitzar l'API basada en JSON i el connector per a Spark per accedir al SGBD.
  • De les característiques d'SQL, s'admeten índexs, funcions d'agregació, expressions GROUP BY, ORDER BY, DISTINCT, fusions (LEFT JOIN / RIGHT JOIN / CROSS JOIN), vistes, funcions de finestra i subconsultes. Les oportunitats proporcionades són suficients per organitzar el treball amb TiDB d'aplicacions web com PhpMyAdmin, gogs i WordPress;
  • Ampliació i resiliència: la potència d'emmagatzematge i processament es pot augmentar simplement afegint nous nodes. Les dades es distribueixen entre nodes amb redundància per permetre que les operacions continuïn si els nodes individuals fallen. Els errors es gestionen automàticament.
  • El sistema garanteix la coherència i sembla un gran DBMS per al programari del client, malgrat que, de fet, hi ha dades de molts nodes implicades per completar la transacció.
  • Per emmagatzemar dades físicament als nodes, es poden utilitzar diferents backends, per exemple, els motors d'emmagatzematge locals GoLevelDB i BoltDB o el nostre propi motor d'emmagatzematge distribuït. TiKV.
  • La capacitat de canviar l'esquema d'emmagatzematge de manera asíncrona, la qual cosa us permet afegir columnes i índexs sobre la marxa sense aturar el processament de les operacions en curs.

El principal innovacions:

  • S'ha treballat per augmentar la productivitat. A la prova Sysbench, la versió 3.0 és 2.1 vegades més ràpida que la branca 1.5 quan es realitzen operacions de selecció i actualització, i a la prova TPC-C 4.5 vegades. Les optimitzacions han afectat diversos tipus de consultes, incloses les subconsultes IN, DO i NOT EXISTS, operacions de fusió de taules (JOIN), l'ús d'índexs i molt més;
    Versió distribuïda de SGBD TiDB 3.0Versió distribuïda de SGBD TiDB 3.0

  • S'ha afegit un nou motor d'emmagatzematge TiFlash que permet un major rendiment en la resolució de problemes analítics (OLAP) gràcies a l'emmagatzematge en columna. TiFlash complementa l'emmagatzematge TiKV que s'ofereix anteriorment, que emmagatzema dades per fila en un format clau/valor i és més ideal per a tasques de processament de transaccions (OLTP). TiFlash treballa colze a colze amb TiKV i les dades es continuen replicant a TiKV com abans utilitzant el protocol Raft per determinar el consens, però per a cada grup de rèpliques Raft es crea una rèplica addicional que s'utilitza a TiFlash. Aquest enfocament permet compartir millor els recursos entre les tasques OLTP i OLAP, i també fa que les dades de transaccions estiguin disponibles a l'instant per a consultes analítiques;

    Versió distribuïda de SGBD TiDB 3.0

  • S'ha implementat un col·lector d'escombraries distribuït, que pot augmentar significativament la velocitat de recollida d'escombraries en grans grups i millorar l'estabilitat;
  • S'ha afegit una implementació experimental del control d'accés basat en rols (RBAC). També és possible establir drets d'accés per a les operacions ANALITZAR, UTILITZAR, CONFIGURAR GLOBAL i MOSTRAR LLISTA DE PROCESSOS;
  • S'ha afegit la possibilitat d'utilitzar expressions SQL per extreure consultes lentes del registre;
  • S'ha implementat un mecanisme per restaurar ràpidament les taules suprimides, que us permet restaurar les dades esborrades accidentalment;
  • S'ha unificat el format dels registres enregistrats;
  • S'ha afegit suport per al mode de bloqueig pessimista, que fa que el processament de transaccions sigui més semblant a MySQL;
  • S'ha afegit suport per a funcions de finestra (funcions de finestra o funcions analítiques) compatibles amb MySQL 8.0. Les funcions de finestra us permeten realitzar càlculs per a cada fila de consulta mitjançant altres files. A diferència de les funcions agregades, que repleguen un conjunt agrupat de files en una sola fila, les funcions de finestra s'agreguen en funció del contingut d'una "finestra", que inclou una o més files del conjunt de resultats. Entre les funcions de finestra implementades:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK i ROW_NUMBER;

  • S'ha afegit suport experimental per a les vistes (VIEW);
  • S'ha millorat el sistema de particions, s'ha afegit la possibilitat de distribuir dades en seccions en funció d'un rang de valors o hash;
  • S'ha afegit un marc per desenvolupar connectors, per exemple, els connectors ja s'han preparat per utilitzar una llista blanca d'IP o mantenir un registre d'auditoria;
  • S'ha proporcionat suport experimental per a la funció "EXPLICAR ANÀLISI" per construir un pla d'execució per a una consulta SQL (Administració del pla SQL);
  • S'ha afegit l'ordre next_row_id per obtenir l'ID de la següent fila;
  • S'han afegit noves funcions integrades JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE i NAME_CONST.

Font: opennet.ru

Afegeix comentari