I-TiDB 3.0 isasaze ukukhutshwa kwe-DBMS

Iyafumaneka kusasazwa ukukhutshwa kweDBMS I-TiDB 3.0iphuhliswe phantsi kweempembelelo zetekhnoloji zikaGoogle Spanner ΠΈ F1. I-TiDB yeyodidi lwe-HTAP exutyiweyo (iHybrid Transactional/Analytical Processing) iinkqubo ezikwaziyo ukubonelela ngeentengiselwano zexesha langempela (OLTP) kunye nemibuzo yohlalutyo. Iprojekthi ibhalwe kwiGo kunye isasazwa ngu ilayisenisi phantsi kweApache 2.0.

Iimpawu zeTiDB:

  • Inkxaso ye-SQL kunye nokubonelela nge-interface yomxhasi ehambelana ne-MySQL protocol, eyenza kube lula ukulungelelanisa izicelo ezikhoyo ezibhaliweyo kwi-MySQL kwi-TiDB, kwaye ikuvumela ukuba usebenzise amathala eencwadi abaxhasi abaqhelekileyo. Ukongeza kwiprotocol ye-MySQL, ungasebenzisa i-API esekwe kwi-JSON kunye nekhonkco ye-Spark ukufikelela kwi-DBMS.
  • Kweempawu zeSQL, izalathiso, imisebenzi edityanisiweyo, IQELA NGOKU, UKUYALELA NGOKU, UKUZENZA OKUHLUKENEYO, ukudibanisa (UKU JOYINA NGENXELE / ELUNGELO JOIN / UMNQAPHISO JOIN), iimboniselo, imisebenzi yewindow kunye ne-subqueries zixhaswa. Amathuba anikezelweyo anele ukucwangcisa umsebenzi kunye ne-TiDB yezicelo zewebhu ezifana nePhpMyAdmin, IiGogs kunye neWordPress;
  • Ukulinganisa kunye nokuqina: Ugcino kunye namandla okusebenza anokunyuswa ngokulula ngokongeza iindawo ezintsha. Idatha isasazwa kuzo zonke iindawo kunye nokuphindaphinda ukuvumela imisebenzi ukuba iqhubeke ukuba iindawo zomntu ngamnye ziyasilela. Iintsilelo zisingathwa ngokuzenzekelayo.
  • Inkqubo iqinisekisa ukuhambelana kwaye ibukeka njenge-DBMS enye enkulu kwi-software yomxhasi, nangona ukuba, eqinisweni, idatha evela kwiinode ezininzi ibandakanyeka ukugqiba ukuthengiselana.
  • Для физичСского хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΡƒΠ·Π»Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ бэкСнды, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π²ΠΈΠΆΠΊΠΈ хранСния GoLevelDB ΠΈ BoltDB ΠΈΠ»ΠΈ собствСнный Π΄Π²ΠΈΠΆΠΎΠΊ распрСдСлённого Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° I-TiKV.
  • Ikhono lokutshintsha i-asynchronously isikimu sokugcina, ukuvumela ukuba ungeze iikholamu kunye nezalathisi kwi-fly ngaphandle kokuyeka ukuqhutyelwa kwemisebenzi eqhubekayo.

Siseko ezintsha:

  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ тСстС Sysbench выпуск 3.0 ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Π΅Ρ‚ Π²Π΅Ρ‚ΠΊΡƒ 2.1 Π² 1.5 Ρ€Π°Π·Π° ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ select ΠΈ update, Π° Π² тСстС TPC-C Π² 4.5 Ρ€Π°Π·Π°. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ запросов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ подзапросы Β«INΒ», Β«DOΒ» ΠΈ Β«NOT EXISTSΒ», ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слияния Ρ‚Π°Π±Π»ΠΈΡ† (JOIN), использованиС индСксов ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅;
    I-TiDB 3.0 isasaze ukukhutshwa kwe-DBMSI-TiDB 3.0 isasaze ukukhutshwa kwe-DBMS

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ хранСния TiFlash, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ аналитичСских Π·Π°Π΄Π°Ρ‡ (OLAP), благодаря Ρ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ Π² привязкС ΠΊ столбцам. TiFlash дополняСт собой Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ TiKV, хранящСС Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ строк Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ€ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ для Π·Π°Π΄Π°Ρ‡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ (OLTP). TiFlash Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±ΠΎΠΊ ΠΎ Π±ΠΎΠΊ с TiKV ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² TiKV с использоаниСм ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Raft для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ консСнсуса, Π½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ€Π΅ΠΏΠ»ΠΈΠΊ Raft создаётся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² TiFlash. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΡ…ΠΎΠ΄ позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ раздСлСния рСсурсов ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ OLTP ΠΈ OLAP, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ доступными для аналитичСских запросов;

    I-TiDB 3.0 isasaze ukukhutshwa kwe-DBMS

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ распрСдСлённый сборщик мусора, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ сущСствСнно ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ сборки мусора Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… кластСрах ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ рСализация систСмы разграничСния доступа Π½Π° основС Ρ€ΠΎΠ»Π΅ΠΉ (RBAC). Π’Π°ΠΊΠΆΠ΅ обСспСчСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задания ΠΏΡ€Π°Π² доступа для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ANALYZE, USE, SET GLOBAL ΠΈ SHOW PROCESSLIST;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ SQL для Π²Ρ‹Π±Π»Ρ€ΠΊΠΈ ΠΈΠ· Π»ΠΎΠ³Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… запросов;
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ быстрого восстановлСния ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ случайно ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅;
  • Π£Π½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ записываСмых Π»ΠΎΠ³ΠΎΠ²;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° пСссимистичСского Ρ€Π΅ΠΆΠΈΠΌΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ MySQL;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (window-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ аналитичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), совмСстимых с MySQL 8.0. ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки запроса Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ вычислСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ строки. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°ΡŽΡ‚ сгруппированный Π½Π°Π±ΠΎΡ€ строк Π² ΠΎΠ΄Π½Ρƒ строку, ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ производят Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° основС содСрТимого Β«ΠΎΠΊΠ½Π°Β», Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ строк ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π½Π°Π±ΠΎΡ€Π°. Π‘Ρ€Π΅Π΄ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE , LAST_VALUE, RANK, DENSE_RANK ΠΈ ROW_NUMBER;

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° прСдставлСний (VIEW);
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° систСма сСкционирования (партицирования), Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ распрСдСлСния Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎ сСкциям Π½Π° основании Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Ρ…ΡΡˆΠ΅ΠΉ;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для использования Π±Π΅Π»ΠΎΠ³ΠΎ списка IP ΠΈΠ»ΠΈ вСдСния Π»ΠΎΠ³Π° Π°ΡƒΠ΄ΠΈΡ‚Π°;
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Β«EXPLAIN ANALYZEΒ» для построСния ΠΏΠ»Π°Π½Π° выполнСния SQL-запроса (SQL Plan Management);
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° next_row_id для получСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK ,COALESCE ΠΈ NAME_CONST.

umthombo: opennet.ru

Yongeza izimvo