Ipinamahagi ng TiDB 3.0 ang paglabas ng DBMS

Magagamit ipinamahagi ang paglabas ng DBMS TiDB 3.0binuo sa ilalim ng impluwensya ng mga teknolohiya ng Google Spanner и F1. Ang TiDB ay kabilang sa kategorya ng mga hybrid na HTAP (Hybrid Transactional/Analytical Processing) na mga system na parehong may kakayahang magbigay ng mga real-time na transaksyon (OLTP) at pagproseso ng mga analytical na query. Ang proyekto ay nakasulat sa Go at ipinamahagi ni lisensyado sa ilalim ng Apache 2.0.

Mga Tampok ng TiDB:

  • Suporta para sa SQL at ang probisyon ng isang client interface na tugma sa MySQL protocol, na ginagawang madaling iakma ang mga umiiral nang application na isinulat para sa MySQL sa TiDB, at nagbibigay-daan din sa iyo na gumamit ng mga karaniwang library ng kliyente. Bilang karagdagan sa MySQL protocol, maaari mong gamitin ang JSON-based na API at ang connector para sa Spark upang ma-access ang DBMS.
  • Sa mga feature ng SQL, mga index, pinagsama-samang function, GROUP BY, ORDER BY, DISTINCT expressions, merges (LEFT JOIN / RIGHT JOIN / CROSS JOIN), view, window functions at subquery ay sinusuportahan. Ang mga ibinigay na pagkakataon ay sapat na upang ayusin ang trabaho sa TiDB ng mga web application tulad ng PhpMyAdmin, salaming pandagat at WordPress;
  • Scale-out at resiliency: Ang storage at processing power ay maaaring palakihin sa pamamagitan lamang ng pagdaragdag ng mga bagong node. Ang data ay ipinamamahagi sa mga node na may redundancy upang payagan ang mga operasyon na magpatuloy kung ang mga indibidwal na node ay nabigo. Awtomatikong hinahawakan ang mga pagkabigo.
  • Ginagarantiyahan ng system ang pare-pareho at mukhang isang malaking DBMS sa software ng kliyente, sa kabila ng katotohanan na ang data mula sa maraming node ay aktwal na ginagamit upang makumpleto ang transaksyon.
  • Upang pisikal na mag-imbak ng data sa mga node, maaaring gumamit ng iba't ibang backend, halimbawa, mga lokal na storage engine na GoLevelDB at BoltDB o ang aming sariling distributed storage engine TiKV.
  • Ang kakayahang asynchronously baguhin ang storage scheme, na nagbibigay-daan sa iyo upang magdagdag ng mga column at index sa mabilisang nang hindi humihinto sa pagproseso ng mga patuloy na operasyon.

Ang pangunahing mga inobasyon:

  • Ang trabaho ay isinagawa upang madagdagan ang pagiging produktibo. Sa pagsubok ng Sysbench, ang paglabas ng 3.0 ay 2.1 beses na mas mabilis kaysa sa 1.5 na sangay kapag nagsasagawa ng pagpili at pag-update ng mga operasyon, at sa pagsubok ng TPC-C nang 4.5 beses. Ang mga pag-optimize ay nakaapekto sa iba't ibang uri ng mga query, kabilang ang IN, DO at NOT EXISTS subquery, table merging (JOIN) operations, ang paggamit ng mga index at marami pang iba;
    Ipinamahagi ng TiDB 3.0 ang paglabas ng DBMSIpinamahagi ng TiDB 3.0 ang paglabas ng DBMS

  • Nagdagdag ng bagong TiFlash storage engine na nagbibigay-daan para sa mas mataas na performance sa paglutas ng mga analytical na problema (OLAP) salamat sa columnar storage. Kinukumpleto ng TiFlash ang dating inaalok na storage ng TiKV, na nag-iimbak ng row-wise na data sa isang key/value format at mas perpekto para sa mga transaction processing task (OLTP). Gumagana ang TiFlash sa tabi ng TiKV at patuloy na kinokopya ang data sa TiKV tulad ng dati gamit ang protocol ng Raft upang matukoy ang pinagkasunduan, ngunit para sa bawat pangkat ng mga replika ng Raft isang karagdagang replika ang nilikha na ginagamit sa TiFlash. Ang diskarte na ito ay nagbibigay-daan para sa mas mahusay na pagbabahagi ng mapagkukunan sa pagitan ng mga gawain ng OLTP at OLAP, at ginagawang agad na magagamit ang data ng transaksyon para sa mga analytical na query;

    Ipinamahagi ng TiDB 3.0 ang paglabas ng DBMS

  • Ang isang distributed garbage collector ay ipinatupad, na maaaring makabuluhang tumaas ang bilis ng koleksyon ng basura sa malalaking kumpol at mapabuti ang katatagan;
  • Nagdagdag ng eksperimental na pagpapatupad ng Role-Based Access Control (RBAC). Posible ring magtakda ng mga karapatan sa pag-access para sa mga operasyong ANALYZE, USE, SET GLOBAL at SHOW PROCESSLIST;
  • Nagdagdag ng kakayahang gumamit ng mga SQL expression upang kunin ang mabagal na mga query mula sa log;
  • Ang isang mekanismo para sa mabilis na pagpapanumbalik ng mga tinanggal na talahanayan ay ipinatupad, na nagpapahintulot sa iyo na ibalik ang hindi sinasadyang tinanggal na data;
  • Ang format ng mga naitala na log ay pinag-isa;
  • Nagdagdag ng suporta para sa pessimistic locking mode, na ginagawang mas katulad ng MySQL ang pagproseso ng transaksyon;
  • Nagdagdag ng suporta para sa mga function ng window (mga function ng window o analytical function) na tugma sa MySQL 8.0. Binibigyang-daan ka ng mga function ng window na magsagawa ng mga kalkulasyon para sa bawat row ng query gamit ang iba pang mga row. Hindi tulad ng mga pinagsama-samang function, na nag-collapse ng isang nakapangkat na hanay ng mga row sa isang row, ang mga function ng window ay pinagsama-sama batay sa mga nilalaman ng isang "window," na kinabibilangan ng isa o higit pang mga row mula sa set ng resulta. Kabilang sa mga ipinatupad na function ng window:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK at ROW_NUMBER;

  • Nagdagdag ng pang-eksperimentong suporta para sa mga view (VIEW);
  • Ang sistema ng partitioning ay napabuti, ang kakayahang ipamahagi ang data sa mga seksyon batay sa isang hanay ng mga halaga o hash ay naidagdag;
  • Ang isang balangkas para sa pagbuo ng mga plugin ay naidagdag, halimbawa, ang mga plugin ay inihanda na para sa paggamit ng isang IP whitelist o pagpapanatili ng isang audit log;
  • Ang pang-eksperimentong suporta ay ibinigay para sa function na "EXPLAIN ANALYZE" para sa pagbuo ng isang execution plan para sa isang SQL query (SQL Plan Management);
  • Nagdagdag ng next_row_id command para makuha ang ID ng susunod na row;
  • Nagdagdag ng mga bagong built-in na function na JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK , COALESCE at NAME_CONST.

Pinagmulan: opennet.ru

Magdagdag ng komento