Bu chòir fios a bhith aig barrachd luchd-leasachaidh air seo mu stòran-dàta

Thoir an aire. eadar-theangachadh.: Tha Jaana Dogan na innleadair eòlach aig Google a tha an-dràsta ag obair air faicsinneachd seirbheisean riochdachaidh a’ chompanaidh sgrìobhte ann an Go. San artaigil seo, a choisinn mòr-chòrdte am measg an luchd-èisteachd Beurla, chruinnich i ann an 17 puingean mion-fhiosrachadh teicnigeach cudromach a thaobh DBMSs (agus uaireannan siostaman sgaoilte san fharsaingeachd) a tha feumail airson beachdachadh do luchd-leasachaidh thagraidhean mòra / dùbhlanach.

Bu chòir fios a bhith aig barrachd luchd-leasachaidh air seo mu stòran-dàta

Bidh a’ mhòr-chuid de shiostaman coimpiutair a’ cumail sùil air an staid aca agus, mar sin, feumach air seòrsa de shiostam stòraidh dàta. Chruinnich mi eòlas air stòran-dàta thar ùine mhòr, air an t-slighe a’ dèanamh mhearachdan dealbhaidh a lean gu call dàta agus brisidhean. Ann an siostaman a bhios a’ làimhseachadh mòran fiosrachaidh, tha stòran-dàta aig cridhe ailtireachd an t-siostaim agus bidh iad nam prìomh eileamaid ann a bhith a’ taghadh am fuasgladh as fheàrr. A dh 'aindeoin gu bheilear a' toirt aire mhionaideach do dh'obair an stòr-dàta, tha na duilgheadasan a bhios luchd-leasachaidh aplacaid a 'feuchainn ri bhith a' sùileachadh gu tric dìreach aig bàrr na beinne-deighe. Anns an t-sreath artaigilean seo, bidh mi a’ roinn cuid de bheachdan a bhios feumail do luchd-leasachaidh nach eil speisealaichte san raon seo.

  1. Tha thu fortanach mura h-eil an lìonra ag adhbhrachadh dhuilgheadasan 99,999% den ùine.
  2. Tha ACID a’ ciallachadh tòrr rudan eadar-dhealaichte.
  3. Tha a dhòighean fhèin aig gach stòr-dàta gus dèanamh cinnteach à cunbhalachd agus aonaranachd.
  4. Bidh bacadh dòchasach a 'tighinn chun an teasairginn nuair a tha e doirbh an tè àbhaisteach a chumail suas.
  5. Tha neo-riaghailteachdan eile ann a bharrachd air leughaidhean salach agus call dàta.
  6. Chan eil an stòr-dàta agus an neach-cleachdaidh an-còmhnaidh ag aontachadh mun chùrsa gnìomh.
  7. Faodar shardadh ìre tagraidh a ghluasad taobh a-muigh an tagraidh.
  8. Faodaidh àrdachadh fèin-ghluasadach a bhith cunnartach.
  9. Faodaidh dàta sean a bhith feumail agus chan fheumar a ghlasadh.
  10. Tha sgaraidhean àbhaisteach airson stòran ùine sam bith.
  11. Tha iomadh ciall aig dàil.
  12. Bu chòir riatanasan coileanaidh a mheasadh airson gnothach sònraichte.
  13. Faodaidh gnothaichean neadachaidh a bhith cunnartach.
  14. Cha bu chòir gnothaichean a bhith ceangailte ri staid an tagraidh.
  15. Faodaidh luchd-dealbhaidh ceist mòran innse dhut mu stòran-dàta.
  16. Tha imrich air-loidhne duilich, ach comasach.
  17. Tha àrdachadh mòr san stòr-dàta a’ ciallachadh àrdachadh ann an neo-fhaicsinneachd.

Bu mhath leam taing a thoirt do Emmanuel Odeke, Rein Henrichs agus feadhainn eile airson am fios air ais air dreach nas tràithe den artaigil seo.

Tha thu fortanach mura h-eil an lìonra ag adhbhrachadh dhuilgheadasan 99,999% den ùine.

Tha a’ cheist ann fhathast mu cho earbsach sa tha teicneòlasan lìonra an latha an-diugh agus dè cho tric sa tha siostaman sìos air sgàth fàilligidhean lìonra. Tha fiosrachadh mun chùis seo gann agus gu tric bidh rannsachadh air a riaghladh le buidhnean mòra le lìonraidhean sònraichte, uidheamachd agus luchd-obrach.

Le ìre ruigsinneachd de 99,999% airson Spanner (stòr-dàta Google air a sgaoileadh air feadh na cruinne), tha Google ag ràdh nach eil ann ach 7,6% Tha duilgheadasan co-cheangailte ris an lìonra. Aig an aon àm, tha a 'chompanaidh a' gairm an lìonra speisealta aca mar "prìomh cholbh" de ruigsinneachd àrd. Dèan sgrùdadh Bailis agus Kingsbury, air a dhèanamh ann an 2014, a’ toirt dùbhlan do aon de na “mì-thuigse mu choimpiutaireachd sgaoilte", a chuir Peter Deutsch ri chèile ann an 1994. A bheil an lìonra dha-rìribh earbsach?

Chan eil rannsachadh coileanta taobh a-muigh chompanaidhean mòra, air a dhèanamh airson an eadar-lìn san fharsaingeachd, ann. Chan eil dàta gu leòr ann cuideachd bho na prìomh chluicheadairean a thaobh dè an ìre sa cheud de dhuilgheadasan an luchd-ceannach a tha ceangailte ris an lìonra. Tha sinn gu math mothachail air briseadh lìonra de sholaraichean sgòthan mòra a dh’ fhaodadh pìos iomlan den eadar-lìn a thoirt sìos airson grunn uairean a-thìde dìreach leis gu bheil iad nan tachartasan àrd-ìomhaigh a bheir buaidh air àireamh mhòr de dhaoine is chompanaidhean. Faodaidh briseadh lìonra duilgheadasan adhbhrachadh ann am mòran a bharrachd chùisean, eadhon ged nach eil a h-uile cùis sin fo aire. Chan eil fios aig teachdaichean seirbheisean sgòthan cuideachd mu adhbharan dhuilgheadasan. Ma tha fàiligeadh ann, cha mhòr nach eil e comasach a chur an cèill mar thoradh air mearachd lìonraidh air taobh solaraiche na seirbheis. Dhaibhsan, tha seirbheisean treas-phàrtaidh nam bogsaichean dubha. Tha e do-dhèanta measadh a dhèanamh air a’ bhuaidh gun a bhith nad sholaraiche seirbheis mòr.

Leis na tha na cluicheadairean mòra ag aithris mu na siostaman aca, tha e sàbhailte a ràdh gu bheil thu fortanach mura h-eil duilgheadasan lìonra a’ dèanamh suas ach àireamh bheag sa cheud de chùisean downt a dh’ fhaodadh a bhith ann. Tha conaltradh lìonra fhathast a’ fulang le rudan cho dona ri fàilligeadh bathar-cruaidh, atharrachaidhean topology, atharrachaidhean rèiteachaidh rianachd, agus brisidhean cumhachd. O chionn ghoirid, chuir e iongnadh orm a bhith ag ionnsachadh gun deach an liosta de dhuilgheadasan a dh'fhaodadh a bhith ann a chur ris siorc a' bìdeadh (tha, chuala tu ceart).

Tha ACID a’ ciallachadh tòrr rudan eadar-dhealaichte

Tha an acronaim ACID a’ seasamh airson Atomicity, Consistency, Iomallach, Reliability. Tha na feartan sin de ghnothaichean an dùil dèanamh cinnteach gu bheil iad dligheach ma tha fàilligidhean, mearachdan, fàilligidhean bathar-cruaidh, msaa. Às aonais ACID no sgeamaichean coltach ris, bhiodh e duilich do luchd-leasachaidh thagraidhean eadar-dhealachadh a dhèanamh eadar na tha iad an urra agus na tha an urra ris an stòr-dàta. Bidh a’ mhòr-chuid de stòran-dàta malairt co-cheangailte a’ feuchainn ri bhith a’ gèilleadh ri ACID, ach tha dòighean-obrach ùra leithid NoSQL air leantainn gu mòran stòran-dàta às aonais ghnothaichean ACID leis gu bheil iad daor an cur an gnìomh.

Nuair a chaidh mi a-steach don ghnìomhachas an toiseach, bhruidhinn an stiùiriche teignigeach againn mu cho iomchaidh sa bha bun-bheachd ACID. Gus a bhith cothromach, tha ACID air a mheas mar thuairisgeul garbh seach inbhe buileachaidh teann. An-diugh tha e feumail dhomh sa mhòr-chuid leis gu bheil e a’ togail roinn sònraichte de chùisean (agus a’ moladh raon de fhuasglaidhean a dh’ fhaodadh a bhith ann).

Chan eil a h-uile DBMS a’ gèilleadh ri ACID; Aig an aon àm, bidh gnìomhachd stòr-dàta a bheir taic do ACID a’ tuigsinn an t-seata de riatanasan ann an dòigh eadar-dhealaichte. Is e aon de na h-adhbharan gu bheil buileachadh ACID gann mar thoradh air an iomadh malairt a dh’ fheumar a dhèanamh gus riatanasan ACID a bhuileachadh. Faodaidh luchd-cruthachaidh na stòran-dàta aca a thaisbeanadh a rèir ACID, ach faodaidh eadar-mhìneachadh chùisean iomaill atharrachadh gu mòr, agus cuideachd an dòigh airson tachartasan “eu-coltach” a làimhseachadh. Aig a’ char as lugha, faodaidh luchd-leasachaidh tuigse àrd-ìre fhaighinn air cho iom-fhillte ‘s a tha buileachadh bun-stèidh gus tuigse cheart fhaighinn air an giùlan sònraichte aca agus co-dhùnaidhean dealbhaidh.

Tha an deasbad a thaobh a bheil MongoDB a’ cumail ri riatanasan ACID a’ leantainn eadhon às deidh dreach 4 a leigeil ma sgaoil. Chan eil taic air a bhith aig MongoDB airson ùine mhòr logadh, ged a chaidh dàta bunaiteach a ghealltainn don diosc gun a bhith nas fhaide na aon uair gach 60 diog. Smaoinich air an t-suidheachadh a leanas: bidh tagradh a’ postadh dà sgrìobhadh (w1 agus w2). Bidh MongoDB gu soirbheachail a’ stòradh w1, ach tha w2 air chall air sgàth fàilligeadh bathar-cruaidh.

Bu chòir fios a bhith aig barrachd luchd-leasachaidh air seo mu stòran-dàta
Diagram a’ sealltainn an t-suidheachaidh. Tubaist MongoDB mus urrainn dha dàta a sgrìobhadh gu diosc

Is e pròiseas daor a th’ ann a bhith a’ dol an sàs ann an diosc. Le bhith a’ seachnadh geallaidhean tric, bidh luchd-leasachaidh a’ leasachadh coileanadh clàraidh aig cosgais earbsachd. Tha MongoDB an-dràsta a’ toirt taic do logadh, ach faodaidh sgrìobhadh salach fhathast buaidh a thoirt air ionracas dàta leis gu bheil logaichean air an glacadh gach 100ms gu bunaiteach. Is e sin, tha suidheachadh coltach ris fhathast comasach airson logaichean agus na h-atharrachaidhean a tha air an taisbeanadh annta, ged a tha an cunnart mòran nas ìsle.

Tha a uidheamachd cunbhalachd agus aonaranachd fhèin aig gach stòr-dàta

De na riatanasan ACID, tha cunbhalachd agus aonaranachd a’ bòstadh an àireamh as motha de bhuileachadh eadar-dhealaichte leis gu bheil an raon de mhalairtean nas fharsainge. Feumar a ràdh gu bheil cunbhalachd agus aonaranachd nan gnìomhan gu math daor. Feumaidh iad co-òrdanachadh agus àrdachadh farpais airson cunbhalachd dàta. Bidh iom-fhillteachd na trioblaid a’ meudachadh gu mòr nuair a dh’ fheumar an stòr-dàta a sgèileadh gu còmhnard thairis air grunn ionadan dàta (gu sònraichte ma tha iad suidhichte ann an diofar sgìrean cruinn-eòlasach). Tha e glè dhoirbh ìre àrd de sheasmhachd a choileanadh oir tha e cuideachd a’ lughdachadh ruigsinneachd agus a’ meudachadh roinn lìonra. Airson mìneachadh nas fharsainge air an iongantas seo, tha mi a’ toirt comhairle dhut iomradh a thoirt Teòirim CAP. Is fhiach a bhith mothachail cuideachd gum faod tagraidhean dèiligeadh ri meudan beaga de neo-chunbhalachd, agus tuigidh luchd-prògramaidh nuances na duilgheadas math gu leòr gus loidsig a bharrachd a chuir an gnìomh san tagradh gus neo-chunbhalachd a làimhseachadh gun a bhith an urra gu mòr ris an stòr-dàta airson a làimhseachadh.

Bidh DBMS gu tric a’ toirt seachad diofar ìrean de dh’ aonaranachd. Faodaidh luchd-leasachaidh thagraidhean am fear as èifeachdaiche a thaghadh stèidhichte air na roghainnean aca. Tha iomallachd ìosal a 'ceadachadh astar nas luaithe, ach cuideachd a' meudachadh cunnart rèis dàta. Bidh insulation àrd a 'lùghdachadh an coltachd seo, ach bidh e a' slaodadh sìos an obair agus faodaidh e leantainn gu farpais, a bheir gu leithid de bhreicichean anns a 'bhunait a thòisicheas fàilligeadh.

Bu chòir fios a bhith aig barrachd luchd-leasachaidh air seo mu stòran-dàta
Lèirmheas air na modalan concurrency a th’ ann mar-thà agus na dàimhean eatorra

Chan eil inbhe SQL a’ mìneachadh ach ceithir ìrean iomallachd, ged a tha mòran a bharrachd ann an teòiridh agus cleachdadh. jeapon.io a’ tabhann sealladh farsaing air na modalan concurrency a th ’ann. Mar eisimpleir, tha Google Spanner a’ gealltainn comas sreathach taobh a-muigh le sioncronadh gleoc, agus ged a tha seo na ìre aonaranachd nas cruaidhe, chan eil e air a mhìneachadh ann an sreathan aonaranachd àbhaisteach.

Tha inbhe SQL a’ toirt iomradh air na h-ìrean iomallachd a leanas:

  • Aithnichte (as cruaidhe agus as daoire): Tha an aon bhuaidh aig coileanadh sreathach ri cuid de choileanadh malairt sreath. Tha coileanadh sreathach a’ ciallachadh nach tòisich gach gnothach às deidh sin ach às deidh an fhear roimhe a chrìochnachadh. Bu chòir a thoirt fa-near gu bheil an ìre Aithnichte gu tric air a chuir an gnìomh mar aonaranachd snapshot ris an canar (mar eisimpleir, ann an Oracle) air sgàth eadar-dhealachaidhean ann am mìneachadh, ged nach eil aonaranachd snapshot fhèin air a riochdachadh ann an inbhe SQL.
  • Leughaidhean ath-aithris: Tha clàran neo-cheangailte sa ghnothach làithreach rim faighinn leis a’ ghnothach gnàthach, ach atharraichean air an dèanamh le gnothaichean eile (leithid sreathan ùra) nach fhaicear.
  • Leugh dealasach: Chan eil dàta neo-cheangailte ri fhaighinn airson gnothaichean. Anns a ’chùis seo, chan fhaic gnothaichean ach dàta dealasach, agus dh’ fhaodadh leughaidhean meallta tachairt. Ma chuireas malairt a-steach agus ma chuireas e sreathan ùra an sàs, bidh e comasach don ghnothach gnàthach am faicinn nuair a thèid faighneachd dhaibh.
  • Leugh gun ghealladh (ìre as ìsle agus daor): Tha leughaidhean salach ceadaichte, chì gnothaichean atharrachaidhean gun ghealladh air an dèanamh le gnothaichean eile. Ann an cleachdadh, faodaidh an ìre seo a bhith feumail airson tuairmsean garbh, leithid ceistean COUNT(*) air a' bhòrd.

ìre Aithnichte a’ lughdachadh cunnart rèisean dàta, agus aig an aon àm mar an fheadhainn as daoire a chuir an gnìomh agus a’ leantainn gu an luchd farpaiseach as àirde air an t-siostam. Tha ìrean iomallachd eile nas fhasa a chuir an gnìomh, ach àrdaichidh iad an coltas gum bi rèisean dàta ann. Leigidh cuid de DBMS leat ìre aonaranachd àbhaisteach a shuidheachadh, tha roghainnean làidir aig cuid eile agus chan eil a h-uile ìre a’ faighinn taic.

Bidh taic airson ìrean iomallachd gu tric air a shanasachadh ann an DBMS sònraichte, ach is e dìreach sgrùdadh faiceallach air a ghiùlan a dh’ fhoillsicheas na tha a’ tachairt dha-rìribh.

Bu chòir fios a bhith aig barrachd luchd-leasachaidh air seo mu stòran-dàta
Lèirmheas air neo-riaghailteachdan concurrency aig diofar ìrean iomallachd airson diofar DBMS

Martin Kleppmann sa phròiseact aige meudachd Dèan coimeas eadar ìrean iomallachd eadar-dhealaichte, a 'bruidhinn air neo-riaghailteachdan concurrency, agus a bheil an stòr-dàta comasach air cumail ri ìre iomallachd sònraichte. Tha rannsachadh Kleppmann a’ sealltainn cho eadar-dhealaichte ‘s a tha luchd-leasachaidh stòr-dàta a’ smaoineachadh mu ìrean aonaranachd.

Bidh bacadh dòchasach a 'tighinn chun an teasairginn nuair a tha e doirbh an tè àbhaisteach a chumail suas.

Faodaidh bacadh a bhith gu math daor, chan ann a-mhàin leis gu bheil e a’ meudachadh farpais san stòr-dàta, ach cuideachd leis gu bheil e ag iarraidh air frithealaichean an tagraidh ceangal a dhèanamh ris an stòr-dàta gu cunbhalach. Faodaidh sgaradh lìonra suidheachaidhean glasaidh sònraichte a dhèanamh nas miosa agus leantainn gu glasan-glasaidh a tha duilich aithneachadh agus fhuasgladh. Ann an cùisean far nach eil glasadh sònraichte freagarrach, bidh glasadh dòchasach na chuideachadh.

Glasadh dòchasach 'S e dòigh anns am bi e a' gabhail a-steach dreach, checksum no àm an atharrachaidh mu dheireadh nuair a bhios e a' leughadh sreang. Leigidh seo leat dèanamh cinnteach nach eil atharrachadh dreach atamach ann mus atharraich thu inntrig:

UPDATE products
SET name = 'Telegraph receiver', version = 2
WHERE id = 1 AND version = 1

Anns a 'chùis seo, ag ùrachadh a' chlàr products cha tèid a dhèanamh ma rinn gnìomhachd eile atharrachadh air an loidhne seo roimhe. Mura deach gnìomhachd sam bith eile a dhèanamh air an t-sreath seo, thig atharrachadh airson aon sreath agus faodaidh sinn a ràdh gun do shoirbhich leis an ùrachadh.

Tha neo-riaghailteachdan eile ann a bharrachd air leughaidhean salach agus call dàta

Nuair a thig e gu cunbhalachd dàta, tha am fòcas air a’ chomas airson suidheachaidhean cinnidh a dh’ fhaodadh leantainn gu leughaidhean salach agus call dàta. Ach, chan eil neo-riaghailteachdan dàta a’ stad an sin.

Is e aon eisimpleir de leithid de neo-riaghailteachdan a bhith a’ clàradh saobhadh (sgrìobh skews). Tha e duilich saobhadh a lorg oir chan eilear a’ coimhead airson iad gu gnìomhach. Chan ann mar thoradh air leughaidhean salach no call dàta a tha iad, ach mar thoradh air brisidhean air cuingealachaidhean loidsigeach a chuirear air an dàta.

Mar eisimpleir, beachdaichidh sinn air tagradh sgrùdaidh a dh’ fheumas aon ghnìomhaiche a bhith air gairm fad na h-ùine:

BEGIN tx1;                      BEGIN tx2;
SELECT COUNT(*)
FROM operators
WHERE oncall = true;
0                               SELECT COUNT(*)
                                FROM operators
                                WHERE oncall = TRUE;
                                0
UPDATE operators                UPDATE operators
SET oncall = TRUE               SET oncall = TRUE
WHERE userId = 4;               WHERE userId = 2;
COMMIT tx1;                     COMMIT tx2;

Anns an t-suidheachadh gu h-àrd, thig coirbeachd clàraidh ma thèid an dà ghnothach a ghealltainn gu soirbheachail. Ged nach robh leughaidhean salach no call dàta ann, chaidh ionracas an dàta a chuir an cunnart: a-nis thathas den bheachd gu bheil dithis air gairm aig an aon àm.

Faodaidh iomallachd sreathach, dealbhadh sgeamaichean, no cuingeadan stòr-dàta cuideachadh le cuir às do choirbeachd sgrìobhaidh. Feumaidh luchd-leasachaidh a bhith comasach air an leithid de neo-riaghailteachdan aithneachadh rè leasachadh gus an seachnadh ann an cinneasachadh. Aig an aon àm, tha e glè dhoirbh a bhith a 'coimhead airson saobhaidhean a chlàradh anns a' bhunait còd. Gu sònraichte ann an siostaman mòra, nuair a tha uallach air sgiobaidhean leasachaidh eadar-dhealaichte airson gnìomhan a chuir an gnìomh stèidhichte air na h-aon chlàran agus nach eil iad ag aontachadh air mion-fhiosrachadh ruigsinneachd dàta.

Chan eil an stòr-dàta agus an neach-cleachdaidh an-còmhnaidh ag aontachadh dè a nì iad

Is e aon de na prìomh fheartan ann an stòran-dàta gealltanas òrdugh gnìomh, ach is dòcha nach bi an òrdugh seo fhèin follaiseach don leasaiche bathar-bog. Bidh stòran-dàta a’ dèanamh ghnothaichean san òrdugh a gheibhear iad, chan ann san òrdugh a tha luchd-prògramaidh an dùil. Tha e duilich ro-innse òrdugh nan gnothaichean, gu sònraichte ann an siostaman co-shìnte làn luchdaichte.

Rè leasachadh, gu sònraichte nuair a bhios tu ag obair le leabharlannan nach eil a’ bacadh, faodaidh droch stoidhle agus comas leughaidh ìosal toirt air luchd-cleachdaidh creidsinn gu bheil gnothaichean air an cur an gnìomh ann an òrdugh, nuair a dh’ fhaodadh iad an stòr-dàta a ruighinn ann an òrdugh sam bith.

Aig a 'chiad dol-a-mach, anns a' phrògram gu h-ìosal, canar T1 agus T2 ann an òrdugh, ach ma tha na gnìomhan sin neo-bacadh agus a 'tilleadh an toradh anns an fhoirm sa bhad gealladh, an uairsin thèid òrdugh nan gairmean a dhearbhadh leis na h-amannan nuair a chaidh iad a-steach don stòr-dàta:

toradh1 = T1() // tha fìor thoraidhean nan geallaidhean
toradh2 = T2()

Ma tha feum air atomachd (is e sin, feumar a h-uile gnìomh a chrìochnachadh no stad a chuir air) agus cùisean a chuir an òrdugh, feumar gnìomhachd T1 agus T2 a dhèanamh taobh a-staigh aon ghnothach.

Faodar shardadh ìre tagraidh a ghluasad taobh a-muigh an tagraidh

Tha roinneadh na dhòigh air stòr-dàta a sgaradh gu còmhnard. Faodaidh cuid de stòran-dàta dàta a roinn gu còmhnard gu fèin-ghluasadach, agus cuid eile nach urrainn, no nach eil fìor mhath air. Nuair as urrainn do ailtirean/luchd-leasachaidh dàta ro-innse dìreach ciamar a gheibhear cothrom air dàta, faodaidh iad pìosan còmhnard a chruthachadh ann an àite luchd-cleachdaidh an àite an obair seo a thiomnadh don stòr-dàta. Canar "sgaradh ìre-tagraidh" ris a' phròiseas seo. (sgrìobadh ìre tagraidh).

Gu mì-fhortanach, bidh an t-ainm seo gu tric a’ cruthachadh a’ mhì-thuigse mu bhith a’ roinneadh beatha ann an seirbheisean tagraidh. Gu dearbh, faodar a chuir an gnìomh mar shreath air leth air beulaibh an stòr-dàta. A rèir fàs dàta agus ath-aithrisean sgeama, faodaidh riatanasan roinneadh a bhith gu math toinnte. Faodaidh cuid de ro-innleachdan buannachd fhaighinn bhon chomas a bhith ag aithris gun a bhith ag ath-shuidheachadh frithealaichean tagraidh.

Bu chòir fios a bhith aig barrachd luchd-leasachaidh air seo mu stòran-dàta
Eisimpleir de dh'ailtireachd anns a bheil frithealaichean tagraidh air an sgaradh bhon t-seirbheis sharding

Le bhith a’ gluasad a-steach gu seirbheis air leth leudaichidh sin an comas diofar ro-innleachdan roinneadh a chleachdadh gun fheum air tagraidhean ath-shuidheachadh. Bhiteis na eisimpleir de leithid de shiostam sharding aig ìre tagraidh. Bidh Vitess a’ toirt seachad còmhdach còmhnard airson MySQL agus a’ leigeil le teachdaichean ceangal ris tro phròtacal MySQL. Bidh an siostam a’ roinn an dàta gu diofar nodan MySQL nach eil eòlach air a chèile.

Faodaidh àrdachadh fèin-ghluasadach a bhith cunnartach

Tha AUTOINCREMENT na dhòigh cumanta air iuchraichean bun-sgoile a ghineadh. Gu tric bidh cùisean ann nuair a bhios stòran-dàta air an cleachdadh mar ghineadairean ID, agus tha clàran anns an stòr-dàta air an dealbhadh gus aithnichearan a ghineadh. Tha grunn adhbharan ann airson a bhith a’ gineadh iuchraichean bun-sgoile a’ cleachdadh àrdachadh fèin-ghluasadach fada bho bhith air leth freagarrach:

  • Ann an stòr-dàta sgaoilte, tha àrdachadh fèin-ghluasadach na dhuilgheadas mòr. Gus an ID a ghineadh, tha feum air glas cruinne. An àite sin, faodaidh tu UUID a ghineadh: chan fheum seo eadar-obrachadh eadar diofar nodan stòr-dàta. Faodaidh àrdachadh fèin-ghluasadach le glasan leantainn gu connspaid agus lùghdachadh mòr a thoirt air coileanadh air cuir a-steach ann an suidheachaidhean sgaoilte. Dh’ fhaodadh gum bi feum aig cuid de DBMS (mar eisimpleir, MySQL) air rèiteachadh sònraichte agus aire nas faiceallach gus mac-samhail maighstir-mhaighstir a chuir air dòigh gu ceart. Agus tha e furasta mearachdan a dhèanamh nuair a bhios tu a’ rèiteachadh, a bheir gu fàilligeadh clàraidh.
  • Tha algorithms sgaradh aig cuid de stòran-dàta stèidhichte air prìomh iuchraichean. Faodaidh IDan leantainneach leantainn gu àiteachan teth nach gabh a thuigsinn agus barrachd luchdan air cuid de sgaradh fhad ‘s a bhios cuid eile leisg.
  • Is e prìomh iuchair an dòigh as luaithe air faighinn gu sreath ann an stòr-dàta. Le dòighean nas fheàrr air clàran a chomharrachadh, faodaidh IDan sreath an colbh as cudromaiche ann an clàran a thionndadh gu colbh gun fheum làn de luachan gun bhrìgh. Mar sin, ma ghabhas e dèanamh, tagh prìomh iuchair nàdarrach gun samhail air feadh na cruinne (me ainm-cleachdaidh).

Mus dèan thu co-dhùnadh air dòigh-obrach, beachdaich air a’ bhuaidh a th’ aig àrdachadh fèin-mheudachadh IDan agus UUIDan air clàr-amais, sgaradh, agus sharding.

Faodaidh dàta sean a bhith feumail agus chan fheum e glasadh

Multiversion Concurrency Control (MVCC) a 'cur an gnìomh mòran de na riatanasan cunbhalachd a chaidh a dheasbad goirid gu h-àrd. Bidh cuid de stòran-dàta (mar eisimpleir, Postgres, Spanner) a’ cleachdadh MVCC gus gnothaichean “biadhadh” le dealbhan - dreachan nas sine den stòr-dàta. Faodar gnothaichean snapshot a chuir ann an sreath cuideachd gus dèanamh cinnteach à cunbhalachd. Nuair a bhios tu a’ leughadh bho sheann dealbh, thathas a’ leughadh dàta seann-fhasanta.

Faodaidh leughadh dàta beagan sean a bhith feumail, mar eisimpleir, nuair a thathar a’ gineadh anailisean bhon dàta no a’ tomhas luachan iomlan.

Is e a’ chiad bhuannachd a bhith ag obair le dàta dìleab latency ìosal (gu sònraichte ma tha an stòr-dàta air a sgaoileadh thairis air diofar sgìrean). Is e an dàrna fear gu bheil gnothaichean ri leughadh a-mhàin saor bho ghlas. Tha seo na bhuannachd mhòr dha tagraidhean a leughas mòran, fhad ‘s as urrainn dhaibh dàta seann-fhasanta a làimhseachadh.

Bu chòir fios a bhith aig barrachd luchd-leasachaidh air seo mu stòran-dàta
Bidh frithealaiche an tagraidh a’ leughadh dàta bhon mhac-samhail ionadail a tha 5 diogan a-mach à ceann-latha, eadhon ged a tha an dreach as ùire ri fhaighinn air taobh eile a’ Chuain Shèimh

Bidh DBMS a’ glanadh tionndaidhean nas sine gu fèin-ghluasadach agus, ann an cuid de chùisean, a’ toirt cothrom dhut seo a dhèanamh ma thèid iarraidh ort. Mar eisimpleir, tha Postgres a 'leigeil le luchd-cleachdaidh a dhèanamh VACUUM ma thèid iarraidh, agus cuideachd bho àm gu àm a’ coileanadh an obrachaidh seo gu fèin-ghluasadach. Bidh Spanner a’ ruith neach-cruinneachaidh sgudail gus faighinn cuidhteas dealbhan nas sine na uair a thìde.

Tha stòran ùine sam bith fo ùmhlachd saobhadh

Is e an dìomhaireachd as fheàrr ann an saidheans coimpiutaireachd gu bheil a h-uile API tìm a’ laighe. Gu dearbh, chan eil fios aig na h-innealan againn air an dearbh àm làithreach. Ann an coimpiutairean tha criostalan quartz a ghineadh crith a thathas a’ cleachdadh gus ùine a chumail. Ach, chan eil iad ceart gu leòr agus faodaidh iad a bhith air thoiseach / air dheireadh air an dearbh ùine. Faodaidh an gluasad ruighinn 20 diogan gach latha. Mar sin, feumaidh an ùine air na coimpiutairean againn a bhith air a shioncronachadh bho àm gu àm leis an lìonra.

Bithear a’ cleachdadh frithealaichean NTP airson sioncronadh, ach tha am pròiseas sioncronaidh fhèin fo smachd dàil lìonra. Bheir eadhon sioncronadh le frithealaiche NTP san aon ionad dàta beagan ùine. Tha e soilleir gum faod obair le frithealaiche poblach NTP leantainn gu barrachd saobhadh.

Tha clocaichean atamach agus an co-aoisean GPS nas fheàrr airson an ùine làithreach a dhearbhadh, ach tha iad daor agus feumach air rèiteachadh iom-fhillte, agus mar sin chan urrainn dhaibh a bhith air an stàladh air a h-uile càr. Air sgàth seo, bidh ionadan dàta a’ cleachdadh dòigh-obrach sreathach. Bidh clocaichean atamach agus / no GPS a’ sealltainn an dearbh ùine, às deidh sin thèid a chraoladh gu innealan eile tro luchd-frithealaidh àrd-sgoile. Tha seo a’ ciallachadh gum faigh gach inneal cothrom sònraichte bhon dearbh àm.

Tha an suidheachadh air a dhèanamh nas miosa leis gu bheil tagraidhean agus stòran-dàta gu tric air an suidheachadh air diofar innealan (mura h-eil ann an ionadan dàta eadar-dhealaichte). Mar sin, bidh an ùine eadar-dhealaichte chan ann a-mhàin air nodan DB air an sgaoileadh thairis air diofar innealan. Bidh e eadar-dhealaichte cuideachd air frithealaiche an tagraidh.

Tha dòigh-obrach gu tur eadar-dhealaichte aig Google TrueTime. Tha a 'mhòr-chuid de dhaoine a' creidsinn gu bheil adhartas Google san rathad seo air a mhìneachadh leis a 'ghluasad banal gu clocaichean atamach agus GPS, ach chan eil seo ach mar phàirt den dealbh mhòr. Seo mar a tha TrueTime ag obair:

  • Bidh TrueTime a’ cleachdadh dà thùs eadar-dhealaichte: GPS agus clocaichean atamach. Tha modhan teip neo-cho-cheangail aig na h-uaireadairean sin. [faic td 5 airson mion-fhiosrachadh an seo - mu thuairmeas. eadar-theangachadh.), agus mar sin bidh an cleachdadh còmhla a’ meudachadh earbsachd.
  • Tha API neo-àbhaisteach aig TrueTime. Bidh e a’ tilleadh ùine mar eadar-ama le mearachd tomhais agus mì-chinnt air a thogail a-steach dha. Tha an fhìor mhionaid ann an ùine an àiteigin eadar crìochan àrda is ìosal an eadar-ama. Tha Spanner, stòr-dàta sgaoilte Google, dìreach a’ feitheamh gus am bi e sàbhailte a ràdh gu bheil an ùine làithreach a-mach à raon. Tha an dòigh seo a’ toirt a-steach beagan latency a-steach don t-siostam, gu sònraichte ma tha an mì-chinnt air na maighstirean àrd, ach a ’dèanamh cinnteach à ceartachd eadhon ann an suidheachadh air a chuairteachadh air feadh na cruinne.

Bu chòir fios a bhith aig barrachd luchd-leasachaidh air seo mu stòran-dàta
Bidh na co-phàirtean Spanner a’ cleachdadh TrueTime, far am bi TT.now () a’ tilleadh eadar-ama, agus mar sin bidh an Spanner dìreach a’ cadal gus an ìre far am faod e a bhith misneachail gu bheil an ùine làithreach air a dhol seachad air puing sònraichte

Tha nas lugha de mhearachd ann a bhith a’ dearbhadh na h-ùine làithreach a’ ciallachadh àrdachadh ann an ùine gnìomhachd Spanner agus lùghdachadh ann an coileanadh. Sin as coireach gu bheil e cudromach an cruinneas as àirde a chumail eadhon ged a tha e do-dhèanta uaireadair gu tur ceart fhaighinn.

Tha iomadh ciall aig dàil

Ma dh’fhaighnicheas tu do dhusan eòlaiche dè a th’ ann an dàil, is dòcha gum faigh thu diofar fhreagairtean. Ann an DBMS canar “latency stòr-dàta” gu tric ri latency agus tha e eadar-dhealaichte bho na tha an neach-dèiligidh a’ faicinn. Is e an fhìrinn gu bheil an neach-dèiligidh a’ cumail sùil air suim an dàil lìonraidh agus dàil an stòr-dàta. Tha an comas an seòrsa latency a sgaradh deatamach nuair a thathar a’ fuasgladh dhuilgheadasan a tha a’ fàs. Nuair a bhios tu a’ cruinneachadh agus a’ taisbeanadh metrics, feuch an-còmhnaidh ri sùil a chumail air an dà sheòrsa.

Bu chòir riatanasan coileanaidh a mheasadh airson gnothach sònraichte

Aig amannan tha feartan coileanaidh DBMS agus na crìochan aige air an sònrachadh a thaobh sgrìobhadh / leughadh trochur agus latency. Tha seo a’ toirt sealladh farsaing air prìomh pharamadairean an t-siostaim, ach nuair a thathar a’ measadh coileanadh DBMS ùr, is e dòigh-obrach fada nas coileanta a bhith a’ measadh gnìomhachd èiginneach air leth (airson gach ceist agus/no gnothach). Eisimpleirean:

  • Sgrìobh trochur agus latency nuair a chuireas tu sreath ùr a-steach do chlàr X (le 50 millean sreath) le cuingeadan sònraichte agus pleadhag loidhne ann an clàran co-cheangailte.
  • Dàil ann a bhith a’ taisbeanadh charaidean charaidean neach-cleachdaidh sònraichte nuair a tha an àireamh chuibheasach de charaidean 500.
  • Latency ann a bhith a’ faighinn na 100 inntrig as àirde bho eachdraidh neach-cleachdaidh nuair a bhios an neach-cleachdaidh a’ leantainn 500 neach-cleachdaidh eile le X inntrigidhean san uair.

Faodaidh measadh agus deuchainneachd a bhith a’ toirt a-steach cùisean èiginneach mar sin gus am bi thu cinnteach gu bheil an stòr-dàta a’ coinneachadh ris na riatanasan coileanaidh. Bidh riaghailt òrdail coltach ris cuideachd a’ toirt aire don bhriseadh seo nuair a bhios tu a’ cruinneachadh meatrach latency agus a’ dearbhadh SLOn.

Bi mothachail air cardinality àrd nuair a bhios tu a’ cruinneachadh mheatairean airson gach gnìomh. Cleachd logaichean, cruinneachadh thachartasan, no lorg sgaoilte gus dàta deasbaid àrd-chumhachd fhaighinn. Anns an artaigil "A bheil thu airson Debug Latency?» gheibh thu eòlas air dòighean deasbaid dàil.

Faodaidh gnothaichean neadachaidh a bhith cunnartach

Chan eil a h-uile DBMS a’ toirt taic do ghnothaichean neadachaidh, ach nuair a nì iad sin, faodaidh gnothaichean mar sin leantainn gu mearachdan ris nach robh dùil nach eil an-còmhnaidh furasta an lorg (is e sin, bu chòir dha a bhith follaiseach gu bheil seòrsa de neo-riaghailteachd ann).

Faodaidh tu gnothaichean neadachaidh a sheachnadh le bhith a’ cleachdadh leabharlannan teachdaiche a lorgas agus a thèid seachad orra. Mura h-urrainnear gnothaichean neadachaidh a thrèigsinn, bi faiceallach nuair a thèid an cur an gnìomh gus suidheachaidhean ris nach robh dùil a sheachnadh far a bheilear a’ cur stad air gnothaichean crìochnaichte gun fhiosta air sgàth feadhainn neadachaidh.

Le bhith a’ toirt a-steach gnothaichean ann an diofar shreathan faodaidh sin leantainn gu gnothaichean neadachaidh ris nach robh dùil, agus bho shealladh leughadh còd, faodaidh e a dhèanamh duilich rùintean an ùghdair a thuigsinn. Thoir sùil air a’ phrògram a leanas:

with newTransaction():
   Accounts.create("609-543-222")
   with newTransaction():
       Accounts.create("775-988-322")
       throw Rollback();

Dè an toradh a bhios aig a’ chòd gu h-àrd? An toir e air ais an dà ghnothach, no dìreach am fear a-staigh? Dè thachras ma tha sinn an urra ri grunn shreathan de leabharlannan a bhios a’ toirt a-steach cruthachadh ghnothaichean dhuinn? Am bi e comasach dhuinn a leithid de chùisean aithneachadh agus a leasachadh?

Smaoinich air sreath dàta le iomadh gnìomh (m.e. newAccount) air a bhuileachadh mar-thà anns na gnothaichean aige fhèin. Dè thachras ma ruitheas tu iad mar phàirt de loidsig gnìomhachais àrd-ìre a tha a’ ruith taobh a-staigh a ghnothaich fhèin? Dè an aonaranachd agus cunbhalachd a bhiodh anns a’ chùis seo?

function newAccount(id string) {
  with newTransaction():
      Accounts.create(id)
}

An àite a bhith a’ lorg fhreagairtean do cheistean gun chrìoch, tha e nas fheàrr gnothaichean neadachaidh a sheachnadh. Às deidh na h-uile, is urrainn don ìre dàta agad gnìomhachd àrd-ìre a dhèanamh gu furasta gun a bhith a ’cruthachadh a ghnothaichean fhèin. A bharrachd air an sin, tha loidsig a’ ghnìomhachais fhèin comasach air malairt a thòiseachadh, gnìomhachd a dhèanamh air, gealltainn no stad air malairt.

function newAccount(id string) {
   Accounts.create(id)
}
// In main application:
with newTransaction():
   // Read some data from database for configuration.
   // Generate an ID from the ID service.
   Accounts.create(id)
   Uploads.create(id) // create upload queue for the user.

Cha bu chòir gnothaichean a bhith ceangailte ri staid an tagraidh

Aig amannan tha e tàmailteach staid tagraidh a chleachdadh ann an gnothaichean gus luachan sònraichte atharrachadh no paramadairean ceist tweak. Is e an nuance deatamach ri beachdachadh an raon tagraidh ceart. Bidh teachdaichean gu tric ag ath-thòiseachadh gnothaichean nuair a tha duilgheadasan lìonra ann. Ma tha an gnothach an urra ri staid a tha ga atharrachadh le pròiseas eile, faodaidh e an luach ceàrr a thaghadh a rèir comas rèis dàta. Feumaidh gnothaichean beachdachadh air cunnart suidheachadh rèis dàta san tagradh.

var seq int64
with newTransaction():
    newSeq := atomic.Increment(&seq)
    Entries.query(newSeq)
    // Other operations...

Meudaichidh an gnothach gu h-àrd an àireamh sreath gach uair a thèid a chur gu bàs, ge bith dè an toradh deireannach. Ma dh’ fhailicheas an gealltanas ri linn trioblaidean lìonraidh, thèid an t-iarrtas a chur gu bàs le àireamh sreath eile nuair a dh’fheuchas tu a-rithist.

Faodaidh luchd-dealbhaidh ceist mòran innse dhut mu stòr-dàta

Bidh luchd-dealbhaidh cheistean a' dearbhadh mar a thèid ceist a chur an gnìomh ann an stòr-dàta. Bidh iad cuideachd a’ sgrùdadh iarrtasan agus gan dèanamh nas fheàrr mus cuir iad iad. Chan urrainn do luchd-dealbhaidh ach beagan tuairmsean a thoirt seachad stèidhichte air na comharran a tha rim faighinn. Mar eisimpleir, dè an dòigh sgrùdaidh as fheàrr airson a’ cheist a leanas?

SELECT * FROM articles where author = "rakyll" order by title;

Faodar na toraidhean fhaighinn air ais ann an dà dhòigh:

  • Sgan clàr slàn: Faodaidh tu coimhead air gach inntrigeadh sa chlàr agus artaigilean a thilleadh le ainm ùghdar co-ionnan, agus an uairsin òrdachadh.
  • Sgan clàr-amais: Faodaidh tu clàr-amais a chleachdadh gus IDan co-fhreagarrach a lorg, na sreathan sin fhaighinn, agus an uairsin òrdachadh.

Is e obair neach-dealbhaidh na ceiste co-dhùnadh dè an ro-innleachd as fheàrr. Is fhiach beachdachadh nach eil ach glè bheag de chomasan ro-innse aig luchd-dealbhaidh cheistean. Faodaidh seo leantainn gu droch cho-dhùnaidhean. Faodaidh DBAn no luchd-leasachaidh an cleachdadh gus ceistean nach eil cho math a lorg agus a ghleusadh. Faodaidh dreachan ùra den DBMS luchd-dealbhaidh cheistean a rèiteachadh, agus cuidichidh fèin-bhreithneachadh nuair a bhios tu ag ùrachadh an stòr-dàta ma dh’ adhbhraicheas an dreach ùr duilgheadasan coileanaidh. Faodaidh logaichean ceiste slaodach, aithisgean cùis latency, no staitistig ùine cur gu bàs cuideachadh le bhith ag aithneachadh cheistean a dh’ fheumas optimization.

Dh’ fhaodadh gum bi fuaim aig cuid de na meatrach a tha dealbhaiche na ceiste a’ nochdadh (gu sònraichte nuair a thathar a’ dèanamh tuairmse air latency no ùine CPU). Is e deagh chur-ris ri clàran-ama innealan airson a bhith a’ lorg agus a’ cumail sùil air an t-slighe gu bàs. Leigidh iad leat na duilgheadasan sin a dhearbhadh (moch, chan eil a h-uile DBMS a’ toirt seachad innealan mar sin).

Tha imrich air-loidhne duilich ach comasach

Tha imrich air-loidhne, imrich beò, no imrich fìor-ùine a’ ciallachadh gluasad bho aon stòr-dàta gu fear eile gun ùine downt no coirbeachd dàta. Tha e nas fhasa imrich beò a dhèanamh ma thachras an gluasad taobh a-staigh an aon DBMS / einnsean. Bidh an suidheachadh a’ fàs nas toinnte nuair a dh’ fheumar gluasad gu DBMS ùr le diofar fheumalachdan coileanaidh is sgeama.

Tha diofar mhodalan imrich air-loidhne ann. Seo fear dhiubh:

  • Dèan comas air inntrigeadh dùbailte anns an dà stòr-dàta. Chan eil an dàta gu lèir aig an stòr-dàta ùr aig an ìre seo, ach a-mhàin a’ gabhail ris an dàta as ùire. Aon uair ‘s gu bheil thu cinnteach mu dheidhinn seo, faodaidh tu gluasad air adhart chun ath cheum.
  • Dèan comas air leughadh bhon dà stòr-dàta.
  • Dèan rèiteachadh air an t-siostam gus am bi leughadh agus sgrìobhadh air an coileanadh gu sònraichte air an stòr-dàta ùr.
  • Stad le bhith a’ sgrìobhadh chun t-seann stòr-dàta fhad ‘s a chumas tu a’ leughadh dàta bhuaithe. Aig an ìre seo, tha an stòr-dàta ùr fhathast gun cuid de dhàta. Bu chòir lethbhreac a dhèanamh dhiubh bhon t-seann stòr-dàta.
  • Tha an seann stòr-dàta ri leughadh a-mhàin. Dèan lethbhreac den dàta a tha a dhìth bhon t-seann stòr-dàta chun an tè ùr. Às deidh an imrich a bhith deiseil, atharraich na slighean chun stòr-dàta ùr, agus stad air an t-seann fhear agus cuir às bhon t-siostam e.

Airson fiosrachadh a bharrachd, tha mi a’ moladh fios a chuir artaigil, a tha a 'toirt mion-fhiosrachadh air ro-innleachd imrich Stripe stèidhichte air a' mhodail seo.

Tha àrdachadh mòr san stòr-dàta a’ ciallachadh àrdachadh ann an neo-fhaicsinneachd

Tha fàs an stòr-dàta a’ leantainn gu duilgheadasan do-chreidsinneach co-cheangailte ris an sgèile aige. Mar as motha a bhios fios againn mu structar a-staigh stòr-dàta, is ann as fheàrr as urrainn dhuinn ro-innse mar a thèid a sgèile. Ach, tha cuid de amannan fhathast do-dhèanta ro-innse.
Mar a dh’ fhàsas a’ bhunait, faodaidh barailean agus dùilean a bh’ ann roimhe a thaobh meud dàta agus riatanasan leud-bann lìonra a bhith seann-fhasanta. Seo nuair a dh’ èiricheas a’ cheist mu ath-sgrùdadh dealbhaidh mòr, leasachaidhean mòra obrachaidh, ath-bheachdachadh air cleachdadh, no imrich gu DBMSan eile gus duilgheadasan a sheachnadh.

Ach na bi a 'smaoineachadh gur e eòlas sàr-mhath air structar a-staigh an stòr-dàta a th' ann an aon rud a tha riatanach. Bheir lannan ùra leotha rudan ùra nach eil eòlach. Bheir puingean pian neo-fhaicsinneach, cuairteachadh dàta neo-chòmhnard, leud-bann ris nach robh dùil agus cùisean bathar-cruaidh, trafaic a tha a’ sìor fhàs agus roinnean lìonra ùra ort ath-bheachdachadh air dòigh-obrach an stòr-dàta agad, modail dàta, modail cleachdadh, agus meud stòr-dàta.

...

Aig an àm a thòisich mi a 'smaoineachadh mu bhith a' foillseachadh an artaigil seo, bha còig rudan eile air an liosta thùsail agam mu thràth. An uairsin thàinig àireamh mhòr beachdan ùra mu dheidhinn dè eile a dh'fhaodar a chòmhdach. Mar sin, tha an artaigil a’ suathadh air na duilgheadasan as follaisiche a dh’ fheumas an aire as motha. Ach, chan eil seo a 'ciallachadh gu bheil an cuspair air a dhol a-mach às a chèile agus cha till mi air ais thuige tuilleadh anns na stuthan agam san àm ri teachd agus cha dèan mi atharrachaidhean air an fhear a th' ann an-dràsta.

PS

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann