Հասանելի է բաշխված DBMS-ի թողարկում TiDB 3.0, մշակվել է Google տեխնոլոգիաների ազդեցության տակ Ներկառուցված и F1. TiDB-ն պատկանում է հիբրիդային HTAP (Հիբրիդ գործարքների/վերլուծական մշակում) համակարգերին, որոնք կարող են ինչպես իրական ժամանակում գործարքներ ապահովել (OLTP), այնպես էլ վերլուծական հարցումներ մշակել: Նախագիծը գրված է Go and տարածվում է լիցենզավորված Apache 2.0-ի համաձայն:
TiDB-ի առանձնահատկությունները.
SQL աջակցություն և MySQL արձանագրության հետ համատեղելի հաճախորդի ինտերֆեյսի տրամադրում, որը հեշտացնում է MySQL-ի համար գրված առկա հավելվածների հարմարեցումը TiDB-ին, ինչպես նաև թույլ է տալիս օգտագործել սովորական հաճախորդի գրադարաններ: Բացի MySQL արձանագրությունից, DBMS մուտք գործելու համար կարող եք օգտագործել JSON-ի վրա հիմնված API և Spark-ի միակցիչ:
SQL-ն ունի աջակցության ինդեքսներ, ագրեգատ գործառույթներ, GROUP BY, ORDER BY, DISTINCT արտահայտություններ, միաձուլումներ (ՁԱԽ ՄԻԱՑՈՒՄ / ԱՋ ՄԻԱՑՈՒՄ/ԽԱՉ ՄԻԱՑՈՒՄ), դիտումներ, պատուհանի գործառույթներ և ենթհարցումներ: Տրամադրված հնարավորությունները բավարար են TiDB-ի հետ աշխատանքը կազմակերպելու համար այնպիսի վեբ հավելվածների համար, ինչպիսիք են PhpMyAdmin-ը, Գոգեր և WordPress;
Հորիզոնական մասշտաբայնություն և սխալների հանդուրժողականություն. պահեստավորման չափը և մշակման հզորությունը կարելի է ավելացնել՝ պարզապես միացնելով նոր հանգույցները: Տվյալները բաշխվում են ավելորդությամբ հանգույցների վրա, ինչը թույլ է տալիս շարունակել աշխատանքը, եթե առանձին հանգույցները ձախողվեն: Անհաջողությունները ինքնաբերաբար լուծվում են:
Համակարգը երաշխավորում է հետևողականությունը, և հաճախորդի ծրագրային ապահովման համար այն կարծես մեկ մեծ DBMS է, չնայած այն հանգամանքին, որ իրականում բազմաթիվ հանգույցներից տվյալներ են ներգրավվում գործարքն ավարտելու համար:
Հանգույցների վրա տվյալները ֆիզիկապես պահելու համար կարող են օգտագործվել տարբեր հետնամասեր, օրինակ՝ տեղական պահեստավորման շարժիչներ GoLevelDB և BoltDB կամ մեր սեփական բաշխված պահեստավորման շարժիչը: TiKV.
Պահպանման սխեման ասինխրոն փոխելու հնարավորությունը, որը թույլ է տալիս արագորեն ավելացնել սյունակներ և ինդեքսներ՝ առանց ընթացիկ գործողությունների մշակումը դադարեցնելու:
Աշխատանքներ են տարվել արտադրողականության բարձրացման ուղղությամբ։ Sysbench-ի թեստում 3.0-ի թողարկումը 2.1 անգամ ավելի արագ է, քան 1.5 ճյուղը ընտրելու և թարմացնելու գործողություններ կատարելիս, իսկ TPC-C թեստում՝ 4.5 անգամ: Օպտիմալացումները ազդել են հարցումների տարբեր տեսակների վրա, այդ թվում՝ IN, DO և NOT EXISTS ենթհարցումները, աղյուսակների միաձուլման (JOIN) գործողությունները, ինդեքսների օգտագործումը և շատ ավելին;
Ավելացվեց նոր TiFlash պահեստավորման շարժիչ, որը թույլ է տալիս ավելի բարձր արդյունավետություն լուծել վերլուծական խնդիրներ (OLAP) սյունակային պահպանման շնորհիվ: TiFlash-ը լրացնում է նախկինում առաջարկված TiKV պահեստը, որը պահպանում է տողերի համաձայն տվյալները բանալի/արժեք ձևաչափով և ավելի իդեալական է գործարքների մշակման առաջադրանքների համար (OLTP): TiFlash-ն աշխատում է TiKV-ի հետ կողք կողքի, և տվյալները շարունակում են վերարտադրվել TiKV-ին, ինչպես նախկինում օգտագործելով Raft արձանագրությունը՝ կոնսենսուսը որոշելու համար, սակայն Raft-ի կրկնօրինակների յուրաքանչյուր խմբի համար ստեղծվում է լրացուցիչ կրկնօրինակ, որն օգտագործվում է TiFlash-ում: Այս մոտեցումը թույլ է տալիս ռեսուրսների ավելի լավ փոխանակում OLTP-ի և OLAP-ի առաջադրանքների միջև, ինչպես նաև գործարքների տվյալները ակնթարթորեն հասանելի է դարձնում վերլուծական հարցումների համար.
Իրականացվել է բաշխված աղբահավաք, որը կարող է զգալիորեն մեծացնել աղբահանության արագությունը խոշոր կլաստերներում և բարելավել կայունությունը.
Ավելացվել է Role-based Access Control (RBAC) փորձարարական իրականացում: Հնարավոր է նաև մուտքի իրավունքներ սահմանել ANALYZE, USE, SET GLOBAL և SHOW PROCESSLIST գործողությունների համար.
Ավելացրել է SQL արտահայտություններ օգտագործելու հնարավորությունը՝ մատյանից դանդաղ հարցումներ հանելու համար.
Գործարկվել է ջնջված աղյուսակների արագ վերականգնման մեխանիզմ, որը թույլ է տալիս վերականգնել պատահաբար ջնջված տվյալները.
Միավորված է գրանցված տեղեկամատյանների ձևաչափը.
Ավելացվել է հոռետեսական կողպման ռեժիմի աջակցություն, ինչը գործարքների մշակումն ավելի նման է դարձնում MySQL-ին;
Ավելացվեց պատուհանի գործառույթների (պատուհանի գործառույթներ կամ վերլուծական գործառույթներ) աջակցություն, որոնք համատեղելի են MySQL 8.0-ի հետ: Պատուհանների գործառույթները թույլ են տալիս կատարել հաշվարկներ յուրաքանչյուր հարցման տողի համար՝ օգտագործելով այլ տողեր: Ի տարբերություն ագրեգատային ֆունկցիաների, որոնք տողերի խմբավորված շարքը մեկ տողի մեջ փլուզում են, պատուհանի ֆունկցիաները համախմբվում են «պատուհանի» բովանդակության հիման վրա, որը ներառում է արդյունքների հավաքածուից մեկ կամ մի քանի տող: Իրականացված պատուհանի գործառույթներից.
NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK և ROW_NUMBER;
Ավելացված է փորձնական աջակցություն դիտումների համար (VIEW);
Բարելավվել է բաժանման համակարգը, ավելացվել է մի շարք արժեքների կամ հեշերի վրա հիմնված տվյալների բաժիններ բաշխելու հնարավորությունը.
Ավելացվել է պլագինների մշակման շրջանակ, օրինակ՝ պլագիններ արդեն պատրաստվել են IP սպիտակ ցուցակ օգտագործելու կամ աուդիտի մատյան պահելու համար.
Փորձարարական աջակցություն է տրամադրվել «ԲԱՑԱՏՐԵԼՈՒ ՎԵՐԼՈՒԾՈՒՄ» ֆունկցիայի համար՝ SQL հարցման կատարման պլան կառուցելու համար (SQL Plan Management);
Ավելացվեց next_row_id հրամանը՝ հաջորդ տողի ID-ն ստանալու համար;
Ավելացվեցին նոր ներկառուցված գործառույթներ JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE և NAME_CONST: