Hāʻawi ʻo TiDB 3.0 i ka hoʻokuʻu DBMS

Loaʻa hoʻokuʻu ʻia o kahi DBMS puʻupuʻu TiDB 3.0, kūkulu ʻia ma lalo o ka mana o nā ʻenehana Google Pākuʻi и F1. Aia ʻo TiDB i ka ʻāpana o nā ʻōnaehana HTAP hybrid (Hybrid Transactional/Analytical Processing), hiki ke hāʻawi i nā hana manawa maoli (OLTP) a me ka hoʻoponopono ʻana i nā nīnau analytical. Ua kākau ʻia ka papahana ma Go a mahele ʻia e laikini ma lalo o Apache 2.0.

Nā hiʻohiʻona o TiDB:

  • Kākoʻo SQL a me ka hāʻawi ʻana i kahi kikowaena mea kūʻai aku i kūpono me ka protocol MySQL, e hoʻomaʻamaʻa i ka hoʻololi ʻana o nā noi i kākau ʻia no MySQL iā TiDB, a ʻae pū i ka hoʻohana ʻana i nā hale waihona puke maʻamau. Ma kahi o ka protocol MySQL, hiki iā ʻoe ke hoʻohana i kahi API e pili ana i ka JSON a me kahi mea hoʻohui no Spark e komo i ka DBMS.
  • Kākoʻo nā hiʻohiʻona SQL i nā indexes, aggregate functions, GROUP BY, ORDER BY, DISTINCT expressions, merges (LEFT JOIN / RIGHT JOIN / CROSS JOIN), nā hiʻohiʻona, nā hana puka makani a me nā subqueries. Ua lawa nā mea i hāʻawi ʻia e hoʻonohonoho i ka hana me TiDB no nā noi pūnaewele e like me PhpMyAdmin, ʻO Gogs a me WordPress;
  • Hiki ke hoʻonui ʻia ka nui o ka mālama ʻana a me ka mana hana ma ka hoʻopili ʻana i nā nodes hou. Hoʻokaʻawale ʻia ka ʻikepili ma nā nodes me ka redundancy, e ʻae ana i ka hana e hoʻomau inā hāʻule kēlā me kēia node. Hana 'akomi 'ia nā hemahema.
  • Hōʻoia ka ʻōnaehana i ka kūlike a no ka polokalamu mea kūʻai aku ua like ia me hoʻokahi DBMS nui, ʻoiai ʻo ka ʻoiaʻiʻo, ua huki ʻia ka ʻikepili mai nā nodes he nui e hoʻopau i ke kālepa.
  • No ka mālama kino ʻana i ka ʻikepili ma nā nodes, hiki ke hoʻohana ʻia nā ʻaoʻao hope ʻē aʻe, no ka laʻana, nā ʻenekini mālama kūloko GoLevelDB a me BoltDB a i ʻole kā mākou ʻenekini hoʻopaʻa i hāʻawi ʻia. TiKV.
  • ʻO ka hiki ke hoʻololi asynchronously i ka schema mālama, e ʻae iā ʻoe e hoʻohui i nā kolamu a me nā kuhikuhi i ka lele me ka ʻole o ka hoʻōki ʻana i ka hana o nā hana e hoʻomau nei.

ka papa kuhikuhiE nā mea hou:

  • Ua hana ʻia nā hana e hoʻonui i ka huahana. Ma ka ho'āʻo Sysbench, hoʻokuʻu i ka 3.0 he 2.1 manawa ʻoi aku ka wikiwiki ma mua o ka lālā 1.5 i ka wā e hoʻokō ai i nā hana koho a hoʻonui, a ma ka hōʻike TPC-C e 4.5 mau manawa. Ua hoʻopili ʻia nā manaʻo maikaʻi i nā ʻano nīnau like ʻole, e like me IN, DO a NOT EXISTS subqueries, nā hana hoʻohui papa (JOIN), ka hoʻohana ʻana i nā kuhikuhi a me nā mea hou aku;
    Hāʻawi ʻo TiDB 3.0 i ka hoʻokuʻu DBMSHāʻawi ʻo TiDB 3.0 i ka hoʻokuʻu DBMS

  • Hoʻohui ʻia kahi ʻenekini waihona TiFlash hou e hiki ai i ka hana kiʻekiʻe i ka hoʻoponopono ʻana i nā pilikia analytical (OLAP) mahalo i ka waiho ʻana o columnar. Hoʻopiha ʻo TiFlash i ka waihona TiKV i hāʻawi mua ʻia, kahi e mālama ai i ka ʻikepili lālani ma kahi ʻano kī/waiwai a ʻoi aku ka maikaʻi no nā hana hoʻoili kālepa (OLTP). Hana ʻia ʻo TiFlash ma kahi ʻaoʻao me TiKV a hoʻomau ʻia ka ʻikepili iā TiKV e like me ka hoʻohana ʻana i ka protocol Raft e hoʻoholo ai i ka ʻae ʻana, akā no kēlā me kēia hui o Raft replicas ua hana ʻia kahi kope hou i hoʻohana ʻia ma TiFlash. ʻO kēia ala e hiki ai ke kaʻana like i nā kumuwaiwai maikaʻi aʻe ma waena o nā hana OLTP a me OLAP, a hoʻolako koke i ka ʻikepili kālepa no nā nīnau noiʻi;

    Hāʻawi ʻo TiDB 3.0 i ka hoʻokuʻu DBMS

  • Ua hoʻokō ʻia kahi ʻōpala i hoʻokaʻawale ʻia, hiki ke hoʻonui nui i ka wikiwiki o ka hōʻiliʻili ʻōpala i nā hui nui a hoʻomaikaʻi i ke kūpaʻa;
  • Ua hoʻohui ʻia kahi hoʻokō hoʻokolohua o Role-Based Access Control (RBAC). Hiki nō hoʻi ke hoʻonohonoho i nā kuleana komo no nā hana ANALYZE, USE, SET GLOBAL a SHOW PROCESSLIST;
  • Hoʻohui i ka hiki ke hoʻohana i nā ʻōlelo SQL e unuhi i nā nīnau lohi mai ka log;
  • Ua hoʻokō ʻia kahi mīkini no ka hoʻihoʻi wikiwiki ʻana i nā papa i holoi ʻia, e ʻae iā ʻoe e hoʻihoʻi i ka ʻikepili i holoi ʻia;
  • Ua hui pū ʻia ke ʻano o nā moʻolelo i hoʻopaʻa ʻia;
  • Hoʻohui i ke kākoʻo no ke ʻano locking pessimistic, ka mea e hana like ai ka hoʻoili ʻana me MySQL;
  • Hoʻohui ʻia ke kākoʻo no nā hana puka makani (nā hana puka makani a i ʻole nā ​​​​hana analytical) kūpono me MySQL 8.0. Hiki iā ʻoe ke hana i nā helu no kēlā me kēia lālani nīnau me ka hoʻohana ʻana i nā lālani ʻē aʻe. ʻAʻole like me nā hana aggregate, nāna e hoʻohiolo i kahi pūʻulu o nā lālani i hoʻokahi lālani, hoʻohui ʻia nā hana pukaaniani ma muli o nā ʻike o ka "pukapuka," e loaʻa ana hoʻokahi a ʻoi aku paha nā lālani mai ka hoʻonohonoho hopena. Ma waena o nā hana puka makani i hoʻokō ʻia:
    NTILE, LEAD, LAG, PERCENT_RANK, NTH_VALUE, CUME_DIST, FIRST_VALUE, LAST_VALUE, RANK, DENSE_RANK a me ROW_NUMBER;

  • Hoʻohui i ke kākoʻo hoʻokolohua no nā manaʻo (VIEW);
  • Ua hoʻomaikaʻi ʻia ka ʻōnaehana partitioning, ua hoʻohui ʻia ka hiki ke hoʻohele i ka ʻikepili i nā ʻāpana e pili ana i ka nui o nā waiwai a i ʻole hashes;
  • Ua hoʻohui ʻia kahi hoʻolālā no ka hoʻomohala ʻana i nā plugins, no ka laʻana, ua hoʻomākaukau ʻia nā plugins no ka hoʻohana ʻana i kahi papa inoa keʻokeʻo IP a i ʻole ka mālama ʻana i kahi loiloi loiloi;
  • Ua hāʻawi ʻia ke kākoʻo hoʻokolohua no ka hana "EXPLAIN ANALYZE" no ke kūkulu ʻana i kahi hoʻolālā hoʻokō no kahi nīnau SQL (SQL Plan Management);
  • Hoʻohui ʻia ke kauoha next_row_id e kiʻi i ka ID o ka lālani aʻe;
  • Hoʻohui ʻia nā hana hou i kūkulu ʻia ʻo JSON_QUOTE, JSON_ARRAY_APPEND, JSON_MERGE_PRESERVE, BENCHMARK, COALESCE a me NAME_CONST.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka