Bahlahisi ba bangata ba lokela ho tseba sena ka datha

Hlokomela. fetolela.: Jaana Dogan ke moenjineri ea nang le boiphihlelo ho Google eo hajoale a ntseng a sebetsa mabapi le ho bona litšebeletso tsa tlhahiso ea k'hamphani tse ngotsoeng ho Go. Sehloohong sena, se ileng sa fumana botumo bo boholo har'a bamameli ba buang Senyesemane, o ile a bokella lintlha tsa bohlokoa tsa 17 lintlha tsa theknoloji mabapi le DBMSs (le ka linako tse ling litsamaiso tse ajoang ka kakaretso) tse bohlokoa ho nahanela bahlahisi ba likopo tse kholo / tse hlokang.

Bahlahisi ba bangata ba lokela ho tseba sena ka datha

Boholo ba litsamaiso tsa likhomphutha li boloka tlaleho ea boemo ba tsona mme, ka hona, li hloka mofuta o mong oa sistimi ea polokelo ea data. Ke ile ka bokella tsebo mabapi le li-database ka nako e telele, ha ke ntse ke etsa liphoso tsa moralo tse lebisitseng tahlehelong ea data le ho tima. Lits'ebetsong tse sebetsanang le boitsebiso bo bongata, li-database li bohareng ba meralo ea tsamaiso 'me li sebetsa e le ntho ea bohlokoa ho khetha tharollo e nepahetseng. Ho sa tsotellehe taba ea hore ho lefshoa ka hloko mosebetsing oa polokelo ea boitsebiso, mathata ao baetsi ba kopo ba lekang ho a lebella hangata ke ntlha feela ea leqhoa. Letotong lena la lihlooho, ke arolelana maikutlo a tla ba molemo bakeng sa bahlahisi ba sa ikhethelang tšimong ena.

  1. U lehlohonolo haeba 99,999% ea nako marang-rang a sa bake mathata.
  2. ACID e bolela lintho tse ngata tse fapaneng.
  3. Database e 'ngoe le e' ngoe e na le mekhoa ea eona ea ho netefatsa ho ts'oara le ho itšehla thajana.
  4. Ho thibela ho ba le tšepo ho tla thusa ha ho le thata ho boloka e tloaelehileng.
  5. Ho na le li-anomalies tse ling ntle le ho bala ho litšila le tahlehelo ea data.
  6. Marang-rang le mosebelisi ha li lumellane ka linako tsohle mabapi le ts'ebetso.
  7. Shard-level-level sharding e ka suthisoa ka ntle ho kopo.
  8. Autoincrementing e ka ba kotsi.
  9. Lintlha tsa khale li ka ba molemo 'me ha li hloke ho notleloa.
  10. Ho sotha ho tloaelehile ho mehloli ea nako efe kapa efe.
  11. Ho lieha ho na le meelelo e mengata.
  12. Litlhoko tsa ts'ebetso li lokela ho hlahlojoa bakeng sa khoebo e itseng.
  13. Litšebelisano tse teng li ka ba kotsi.
  14. Litšebelisano ha lia lokela ho tlamahanngoa le boemo ba kopo.
  15. Bahlophisi ba lipotso ba ka u bolella ho hongata ka li-database.
  16. Ho falla ka marang-rang ho thata, empa hoa khoneha.
  17. Keketseho e kholo ea database e kenyelletsa ho eketseha ho sa lebelloang.

Ke rata ho leboha Emmanuel Odeke, Rein Henrichs le ba bang ka maikutlo a bona mabapi le mofuta oa pejana oa sengoloa sena.

U lehlohonolo haeba 99,999% ea nako marang-rang a sa bake mathata.

Potso e ntse e le mabapi le hore na theknoloji ea morao-rao ea marang-rang e ka tšeptjoa hakae le hore na hangata mekhoa e theoha ka lebaka la ho hlōleha ha marang-rang. Tlhahisoleseding e mabapi le taba ena e fokola 'me lipatlisiso li atisa ho laoloa ke mekhatlo e meholo e nang le marang-rang a khethehileng, lisebelisoa le basebetsi.

Ka sekhahla sa ho ba teng sa 99,999% bakeng sa Spanner (database ea Google e ajoang lefatšeng ka bophara), Google e bolela hore feela 7,6% mathata a amana le marang-rang. Ka nako e ts'oanang, k'hamphani e bitsa marang-rang a eona a khethehileng "tšiea e kholo" ea ho fumaneha ho phahameng. Ithute Bailis le Kingsbury, e entsoeng ka 2014, e qholotsa e ’ngoe ea “maikutlo a fosahetseng mabapi le khomphutha e ajoang", eo Peter Deutsch a e qapileng ka 1994. Na marang-rang a hlile a tšepahala?

Patlisiso e felletseng kantle ho lik'hamphani tse kholo, e etselitsoeng Marang-rang ka bophara, ha e eo. Hape ha ho na data e lekaneng ho tsoa ho libapali tse kholo mabapi le hore na ke liperesente life tsa mathata a bareki ba bona a amanang le marang-rang. Re tseba hantle ho khaoha ha marang-rang a marang-rang a bafani ba maru a maholo a ka theolang karolo eohle ea Inthanete ka lihora tse 'maloa hobane feela e le liketsahalo tse phahameng tse amang palo e kholo ea batho le lik'hamphani. Ho tima marang-rang ho ka baka mathata maemong a mang a mangata, leha e se maemo ao kaofela a leng leseling. Bareki ba litšebeletso tsa leru le bona ha ba tsebe letho ka lisosa tsa mathata. Haeba ho na le ho hloleha, ho batla ho sa khonehe ho bolela hore phoso ea marang-rang e ka lehlakoreng la mofani oa litšebeletso. Bakeng sa bona, litšebeletso tsa mekhatlo ea boraro ke mabokose a matšo. Ha ho khonehe ho lekola phello ntle le ho ba mofani oa litšebeletso tse kholo.

Ha ho nahanoa ka seo libapali tse kholo li se tlalehang ka litsamaiso tsa bona, ho bolokehile ho re u lehlohonolo haeba mathata a marang-rang a baka karolo e nyane feela ea mathata a ka bang teng nakong ea ho theoha. Lipuisano tsa marang-rang li ntse li hlokofatsoa ke lintho tse tloaelehileng tse kang ho hlōleha ha hardware, liphetoho tsa topology, liphetoho tsa tsamaiso ea tsamaiso, le ho khaoha ha motlakase. Haufinyane tjena, ke ile ka makala ha ke utloa hore lethathamo la mathata a ka bang teng le ile la eketsoa ho loma lishaka (e, u utloile hantle).

ACID e bolela lintho tse ngata tse fapaneng

Acronym ACID e emetse Atomicity, Consistency, Isolation, Reliability. Lintho tsena tsa litšebelisano li reretsoe ho netefatsa bonnete ba tsona ha ho ka ba le liphoso, liphoso, ho hloleha ha hardware, joalo-joalo. Ntle le ACID kapa merero e ts'oanang, ho ka ba thata hore baetsi ba ts'ebeliso ba khetholle pakeng tsa seo ba ikarabellang ho sona le hore na database e ikarabella ho eng. Boholo ba li-database tsa likamano tsa likamano li leka ho lumellana le ACID, empa mekhoa e mecha e kang NoSQL e hlahisitse li-database tse ngata ntle le litšebelisano tsa ACID hobane li theko e boima ho li kenya ts'ebetsong.

Ha ke qala ho kena indastering, moetapele oa rona oa tekheniki o buile ka hore na mohopolo oa ACID o bohlokoa hakae. Ho bua ka toka, ACID e nkuoa e le tlhaloso e thata ho fapana le maemo a thata a ts'ebetsong. Kajeno ke e fumana e le molemo haholo hobane e hlahisa mofuta o itseng oa litaba (mme e fana ka maikutlo a mefuta e mengata ea litharollo).

Ha se DBMS e 'ngoe le e' ngoe e lumellanang le ACID; Ka nako e ts'oanang, ts'ebetsong ea database e tšehetsang ACID e utloisisa sete ea litlhoko ka tsela e fapaneng. Le leng la mabaka a etsang hore ACID e kenngoe ts'ebetsong e sa sebetse ke ka lebaka la mekhoa e mengata ea khoebo e lokelang ho etsoa ho phethahatsa litlhoko tsa ACID. Baetsi ba ka hlahisa li-database tsa bona e le tse lumellanang le ACID, empa tlhaloso ea linyeoe tse bohale e ka fapana haholo, joalo ka mokhoa oa ho sebetsana le liketsahalo "tse sa tloaelehang". Bonyane, bahlahisi ba ka fumana kutloisiso ea boemo bo holimo ea ho rarahana ha ts'ebetsong ea motheo ho fumana kutloisiso e nepahetseng ea boitšoaro ba bona bo khethehileng le mekhoa ea ho rekisa.

Khang ea hore na MongoDB e lumellana le litlhoko tsa ACID e ntse e tsoela pele le ka mor'a ho lokolloa ha mofuta oa 4. MongoDB ha e so tšehetsoe ka nako e telele ho rema lifate, le hoja data ea kamehla e ne e ikemiselitse ho disk eseng ho feta hang ka metsotsoana e meng le e meng e 60. Nahana ka boemo bo latelang: kopo e ngola mangolo a mabeli (w1 le w2). MongoDB e boloka ka katleho w1, empa w2 e lahlehile ka lebaka la ho hloleha ha hardware.

Bahlahisi ba bangata ba lokela ho tseba sena ka datha
Setšoantšo se bonts'ang boemo. MongoDB e senyeha pele e ka ngolla data ho disk

Ho itlama ho disk ke ts'ebetso e theko e boima. Ka ho qoba boitlamo khafetsa, bahlahisi ba ntlafatsa ts'ebetso ea ho rekota ka litšenyehelo tsa ho ts'epahala. Hajoale MongoDB e ts'ehetsa ho rengoa ha lifate, empa mangolo a litšila a ntse a ka ama botšepehi ba data kaha li-log li nkoa ka 100ms ka ho feletseng. Ke hore, boemo bo tšoanang bo ntse bo ka khoneha bakeng sa li-log le liphetoho tse hlahisoang ho tsona, le hoja kotsi e le tlase haholo.

Database e 'ngoe le e' ngoe e na le mekhoa ea eona e tsitsitseng le ea ho itšehla thajana

Har'a litlhoko tsa ACID, ho tsitsisa le ho itšehla thajana ho ithorisa ka palo e kholo ka ho fetisisa ea ts'ebetsong e fapaneng hobane mefuta e mengata ea khoebo e pharaletseng. Ho tlameha ho boleloa hore ho tsitsisa le ho itšehla thajana ke mesebetsi e theko e boima haholo. Ba hloka tšebelisano 'moho le ho eketsa tlholisano bakeng sa ho lumellana ha data. Ho rarahana ha bothata ho eketseha haholo ha ho hlokahala ho lekanya database ka holimo ho litsi tse ngata tsa data (haholo-holo haeba li le libakeng tse fapaneng tsa libaka). Ho finyella boemo bo phahameng ba ho tsitsisa ho thata haholo, kaha ho boetse ho fokotsa ho fumaneha le ho eketsa likarolo tsa marang-rang. Bakeng sa tlhaloso e akaretsang ea ketsahalo ena, ke u eletsa hore u bue ka eona Theorem ea CAP. Hape ke habohlokoa ho hlokomela hore lits'ebetso li ka sebetsana le ho se lumellane ho fokolang, 'me baetsi ba mananeo ba ka utloisisa likaroloana tsa bothata ka ho lekaneng ho kenya ts'ebetsong mabaka a eketsehileng a kopo ho sebetsana le ho se lumellane ntle le ho itšetleha haholo ka database ho sebetsana le eona.

Hangata li-DBMS li fana ka maemo a fapaneng a ho itšehla thajana. Baetsi ba kopo ba ka khetha e sebetsang ka ho fetesisa ho latela seo ba se ratang. Ho itšehla thajana ho tlase ho lumella lebelo le eketsehileng, empa hape ho eketsa kotsi ea lebelo la data. Ho kenya letsoho ho phahameng ho fokotsa monyetla ona, empa ho liehisa mosebetsi 'me ho ka lebisa tlhōlisanong, e leng se tla lebisa ho li-brake tse joalo setsing seo ho hlōleha ho qala.

Bahlahisi ba bangata ba lokela ho tseba sena ka datha
Tlhahlobo ea mehlala e teng ea concurrency le likamano lipakeng tsa tsona

Tekanyetso ea SQL e hlalosa maemo a mane feela a ho itšehla thajana, leha ho le joalo ka khopolo le ts'ebetsong ho na le tse ling tse ngata. Jepson.io e fana ka kakaretso e ntle ea mefuta e teng ea concurrency. Mohlala, Google Spanner e netefatsa ts'ebetso ea kantle ho naha ka khokahano ea oache, mme leha sena e le sekhahla se thata sa ho itšehla thajana, ha se hlalosoe ka mekhahlelo e tloaelehileng ea ho itšehla thajana.

Tekanyetso ea SQL e bua ka maemo a latelang a ho itšehla thajana:

  • E ka khonehang (e thata haholo ebile e theko e boima): Phethahatso e ka khonehang e na le phello e ts'oanang le ts'ebetso e 'ngoe e latellanang ea transaction. Ts'ebetso e latellanang e bolela hore khoebo e 'ngoe le e' ngoe e latelang e qala feela ka mor'a hore e fetileng e phethoe. Ho lokela ho hlokomeloa hore boemo E ka khonehang hangata e kenngwa tshebetsong e le seo ho thoeng ke ho itšehla thajana (ka mohlala, ho Oracle) ka lebaka la ho se tšoane ha tlhaloso, le hoja ho itšehla thajana ka boeona ha ho emetsoe ka mokhoa oa SQL.
  • Mebala e phetoang: Lirekoto tse sa ikemisetsoang khoebong ea hajoale lia fumaneha, empa liphetoho tse entsoeng ke litšebelisano tse ling (joalo ka mela e mecha) e sa bonahaleng.
  • Bala boitlamo: Lintlha tse sa ikemisetsoang ha li fumanehe bakeng sa transaction. Tabeng ena, litšebelisano li ka bona data e ikemiselitseng feela, 'me ho bala ha phantom ho ka etsahala. Haeba transaction e kenya le ho etsa mela e mecha, transaction ea hajoale e tla khona ho e bona ha e botsoa.
  • Bala o sa ikemisetsa (bonyane boemo bo thata ebile bo theko e boima): Lits'oants'o tse litšila lia lumelloa, litšebelisano li ka bona liphetoho tse sa reroang tse entsoeng ke litšebelisano tse ling. Ha e le hantle, boemo bona bo ka ba molemo bakeng sa likhakanyo tse thata, joalo ka lipotso COUNT(*) tafoleng.

ho bophahamo ba E ka khonehang e fokotsa kotsi ea merabe ea data, ha e ntse e le theko e boima ka ho fetisisa ho e kenya ts'ebetsong le ho baka mojaro o phahameng ka ho fetisisa oa tlhōlisano tsamaisong. Maemo a mang a ho itšehla thajana a bonolo ho a sebelisa, empa a eketsa menyetla ea mabelo a data. Li-DBMS tse ling li u lumella ho beha boemo ba ho itšehla thajana, tse ling li na le likhetho tse matla mme ha se maemo ohle a tšehetsoeng.

Tšehetso bakeng sa maemo a ho itšehla thajana hangata e phatlalatsoa ho DBMS e fanoeng, empa feela thuto e hlokolosi ea boitšoaro ba eona e ka senola se hlileng se etsahalang.

Bahlahisi ba bangata ba lokela ho tseba sena ka datha
Tlhahlobo ea likhaello tsa lichelete maemong a fapaneng a ho itšehla thajana bakeng sa li-DBMS tse fapaneng

Martin Kleppmann morerong oa hae thotofatso E bapisa maemo a fapaneng a ho itšehla thajana, e bua ka li-anomalies tsa concurrency, le hore na database e khona ho khomarela boemo bo itseng ba ho itšehla thajana. Patlisiso ea Kleppmann e bonts'a hore na baetsi ba database ba nahana joang ka maemo a ho itšehla thajana.

Ho thibela ho ba le tšepo ho tla thusa ha ho le thata ho boloka e tloaelehileng.

Ho thibela ho ka ba theko e boima haholo, eseng feela hobane e eketsa tlhōlisano ho database, empa hape hobane e hloka hore lisebelisoa tsa kopo li lule li hokahane le database. Karohano ea marang-rang e ka mpefatsa maemo a ho notlela ka mokhoa o ikhethileng 'me ea lebisa ho li-deadlock tseo ho leng thata ho li tseba le ho li rarolla. Maemong ao ho notlela ho khethehileng ho sa lokelang, ho notlela ka tšepo hoa thusa.

Senotlolo se nang le tšepo ke mokhoa oo ka oona ha u bala khoele, u nahanelang phetolelo ea eona, checksum, kapa nako ea ho qetela ea phetoho. Sena se o lumella ho etsa bonnete ba hore ha ho na phetoho ea mofuta oa athomo pele o fetola keno:

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

Tabeng ena, ho ntlafatsa tafole products e ke ke ea etsoa haeba ts'ebetso e 'ngoe e kile ea etsa liphetoho moleng ona. Haeba ho se na ts'ebetso e 'ngoe e entsoeng moleng ona, phetoho ea mola o le mong e tla etsahala mme re ka bolela hore ntlafatso e atlehile.

Ho na le li-anomalies tse ling ntle le ho bala ho litšila le tahlehelo ea data

Ha ho tluoa tabeng ea ho lumellana ha data, ho tsepamisitsoe maikutlo holim'a bokhoni ba maemo a morabe a ka lebisang ho baleng ba litšila le tahlehelo ea data. Leha ho le joalo, litaba tsa anomalies ha li felle moo.

Mohlala o mong oa liphoso tse joalo ke ho khopamisa ho rekota (ngola li-skews). Ho thata ho lemoha lintho tse sothehileng hobane hangata ha li batloe ka mafolofolo. Ha li bakoe ke ho baloa ka litšila kapa tahlehelo ea data, empa ka lebaka la litlolo tsa lithibelo tse hlakileng tse behiloeng ho data.

Mohlala, ha re nahaneng ka ts'ebeliso ea ho beha leihlo e hlokang hore opareitara e le 'ngoe e be teng ka linako tsohle:

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;

Boemong bo ka holimo, bobolu ba rekoto bo tla etsahala haeba litšebelisano ka bobeli li etsoa ka katleho. Le hoja ho ne ho se na litlaleho tse litšila kapa tahlehelo ea data, botšepehi ba data bo ne bo sekiselitsoe: hona joale batho ba babeli ba nkoa ba le-call ka nako e le 'ngoe.

Ho itšehla thajana, moralo oa schema, kapa litšitiso tsa database li ka thusa ho felisa bobolu ba ho ngola. Bahlahisi ba tlameha ho tseba ho tseba li-anomalies tse joalo nakong ea nts'etsopele ho li qoba tlhahisong. Ka nako e ts'oanang, ho khopamisa ho rekota ho thata haholo ho batla setsing sa khoutu. Haholo-holo lits'ebetsong tse kholo, ha lihlopha tse fapaneng tsa nts'etsopele li ikarabella ho kenya ts'ebetsong mesebetsi e thehiloeng litafoleng tse tšoanang 'me ha li lumellane ka lintlha tse tobileng tsa ho fumana lintlha.

Sebaka sa polokelo ea boitsebiso le mosebedisi ha se kamehla ba lumellanang ka seo ba lokelang ho se etsa

E 'ngoe ea likarolo tsa bohlokoa tsa marang-rang ke tiiso ea taelo ea ts'ebetso, empa taelo ena ka boeona e ka' na ea se ke ea hlaka ho moqapi oa software. Litsi tsa polokelo li etsa transaction ka tatellano eo li e amoheloang, eseng ka tatellano eo baetsi ba mananeo ba e rerileng. Ho thata ho bolela esale pele Taelo ea litšebelisano, haholo lits'ebetsong tse bapileng tse jereng haholo.

Nakong ea nts'etsopele, haholo-holo ha u sebetsa le lilaebrari tse sa thibeleng, mokhoa o fokolang le ho bala ha tlaase ho ka etsa hore basebelisi ba lumele hore litšebelisano li etsoa ka tatellano, ha e le hantle li ka fihla polokelong ea polokelo ka tatellano efe kapa efe.

Ha u habanya feela, lenaneong le ka tlase, T1 le T2 li bitsoa ka tatellano, empa haeba mesebetsi ena e sa thibele 'me hang-hang e khutlisetse sephetho ka foromo. tšepiso, joale tatellano ea mehala e tla khethoa ke nako eo ba kentseng polokelong ea litaba:

result1 = T1() // liphetho tsa sebele ke litšepiso
sephetho2 = T2()

Haeba ho hlokahala atomicity (ke hore, ts'ebetso eohle e tlameha ho phethoa kapa e felisoe) le litaba tsa tatellano, joale ts'ebetso ea T1 le T2 e tlameha ho etsoa ka har'a transaction e le 'ngoe.

Shard-level-level sharding e ka suthisoa ka ntle ho kopo

Sharding ke mokhoa oa ho arola database ka mokhoa o otlolohileng. Li-database tse ling li ka arola data ka mokhoa o ikhethileng, ha tse ling li sa khone, kapa ha li ntle haholo ho tsona. Ha litsebi tsa meralo / batho ba ntlafatsang data ba khona ho bolela esale pele hore na data e tla fumaneha joang, ba ka theha likarolo tse otlolohileng sebakeng sa basebelisi ho fapana le ho abela mosebetsi ona polokelong ea litaba. Mokhoa ona o bitsoa "application-level sharding" (ho sharding boemong ba kopo).

Ka bomalimabe, hangata lebitso lena le baka maikutlo a fosahetseng a hore sharding e phela litšebeletsong tsa kopo. Ha e le hantle, e ka kenngoa ts'ebetsong e le lera le arohaneng ka pel'a database. Ho ipapisitse le kholo ea data le schema iterations, litlhoko tsa sharding li ka ba thata haholo. Maano a mang a ka u tsoela molemo ka bokhoni ba ho pheta-pheta ntle le ho kenya li-server tsa ts'ebeliso bocha.

Bahlahisi ba bangata ba lokela ho tseba sena ka datha
Mohlala oa meralo eo ho eona li-server tsa ts'ebeliso li arohaneng le ts'ebeletso ea sharding

Ho tsamaisa sharding ts'ebeletso e arohaneng ho holisa bokhoni ba ho sebelisa maano a fapaneng a sharding ntle le tlhoko ea ho kenya lits'ebetso bocha. Vitess ke mohlala oa mokhoa o joalo oa sharding boemong ba kopo. Vitess e fana ka sharding e otlolohileng bakeng sa MySQL mme e lumella bareki ho hokela ho eona ka protocol ea MySQL. Sistimi e arola data ho li-node tse fapaneng tsa MySQL tse sa tsebeng letho ka tse ling.

Autoincrementing e ka ba kotsi

AUTOINCREMENT ke mokhoa o tloaelehileng oa ho hlahisa linotlolo tsa mantlha. Hangata ho na le linyeoe ha li-database li sebelisoa e le lijenereithara tsa ID, 'me database e na le litafole tse etselitsoeng ho hlahisa li-identifiers. Ho na le mabaka a 'maloa a hore na ke hobane'ng ha ho hlahisa linotlolo tsa mantlha ho sebelisa auto-incrementing ho le hole haholo:

  • Setsing sa polokelo ea litaba se abuoang, ho incrementing ea koloi ke bothata bo boholo. Ho hlahisa ID, ho hlokahala senotlolo sa lefats'e. Sebakeng seo, o ka hlahisa UUID: sena ha se hloke tšebelisano lipakeng tsa libaka tse fapaneng tsa database. Ho eketsa ka boits'oaro ka liloko ho ka lebisa likhohlanong le ho fokotsa haholo ts'ebetso ho tse kentsoeng maemong a ajoang. Li-DBMS tse ling (mohlala, MySQL) li ka hloka tlhophiso e khethehileng le tlhokomelo e hlokolosi ho hlophisa ka nepo phetisetso ea master-master. 'Me ho bonolo ho etsa liphoso ha u hlophisa, e leng se tla lebisa ho hlōleha ho rekota.
  • Li-database tse ling li na le li-algorithms tsa ho arola tse ipapisitseng le linotlolo tsa mantlha. Li-ID tse latellanang li ka lebisa libakeng tse chesang tse sa lebelloang le ho eketsa mojaro likarolong tse ling ha tse ling li lula li sa sebetse.
  • Senotlolo sa mantlha ke mokhoa o potlakileng oa ho fihlella mola ho database. Ka mekhoa e betere ea ho tsebahatsa lirekoto, li-ID tse latellanang li ka fetola kholomo ea bohlokoa ka ho fetisisa litafoleng hore e be kholomo e se nang thuso e nang le boleng bo se nang moelelo. Ka hona, neng kapa neng ha ho khonahala, ka kopo khetha senotlolo sa mantlha lefatšeng ka bophara le sa tlhaho (mohlala, lebitso la mosebelisi).

Pele u etsa qeto ea mokhoa oa ho atamela, nahana ka phello ea li-ID le li-UUID tse eketsang ka boits'oaro ho indexing, partitioning le sharding.

Lintlha tsa khale li ka ba molemo 'me ha li hloke ho notleloa

Multiversion Concurrency Control (MVCC) e sebelisa litlhoko tse ngata tsa ho lumellana tse boletsoeng ka bokhutšoanyane ka holimo. Li-database tse ling (ka mohlala, Postgres, Spanner) li sebelisa MVCC ho "fepa" litšebelisano ka li-snapshots-liphetolelo tsa khale tsa polokelo ea boitsebiso. Lits'ebetso tsa Snapshot le tsona li ka hlophisoa ho etsa bonnete ba ho ts'oara. Ha u bala senepe sa khale, ho baloa data ea khale.

Ho bala lintlha tsa khale ho ka ba molemo, ka mohlala, ha ho etsoa analytics ho tsoa ho data kapa ho baloa palo e hakanyetsoang ea kakaretso.

Monyetla oa pele oa ho sebetsa le data ea lefa ke latency e tlase (haholo-holo haeba database e ajoa libakeng tse fapaneng). Ea bobeli ke hore li-transactions tsa ho bala feela ha li koalehe. Ona ke monyetla o moholo bakeng sa lits'ebetso tse balang haholo, ha feela li khona ho sebetsana le data ea khale.

Bahlahisi ba bangata ba lokela ho tseba sena ka datha
Seva ea ts'ebeliso e bala data ho tsoa ho replica ea lehae e siiloeng ke nako ka metsotsoana e 5, leha mofuta oa morao-rao o fumaneha ka lehlakoreng le leng la Leoatle la Pacific.

Li-DBMS li hlakola liphetolelo tsa khale ka bo eona, 'me maemong a mang li u lumella ho etsa sena ka kopo. Mohlala, Postgres e lumella basebelisi ho etsa joalo VACUUM ka kopo, hape nako le nako e etsa ts'ebetso ena ka bo eona. Spanner e tsamaisa pokello ea lithōle ho tlosa linepe tsa khale ho feta hora.

Mehloli ea nako efe kapa efe e ka khelosoa

Lekunutu le bolokoang ka ho fetesisa ho mahlale a khomphutha ke hore li-API tsohle tsa nako li bua leshano. Ha e le hantle, mechine ea rōna ha e tsebe hantle nako ea hona joale. Lik'homphieutha li na le likristale tsa quartz tse hlahisang li-vibrations tse sebelisetsoang ho boloka nako. Leha ho le joalo, ha lia nepahala ka ho lekaneng 'me li ka ba ka pele / morao ka mor'a nako e nepahetseng. Phetoho e ka fihla metsotsoana e 20 ka letsatsi. Ka hona, nako ea lik'homphieutha tsa rona e tlameha ho lumellana nako le nako le marang-rang.

Li-server tsa NTP li sebelisoa bakeng sa kamahanyo, empa ts'ebetso ea kamahanyo ka bo eona e ka ba le tieho ea marang-rang. Esita le ho hokahanya le seva sa NTP setsing se le seng sa data ho nka nako. Ho hlakile hore ho sebetsa le seva sa sechaba sa NTP ho ka lebisa ho khopameng le ho feta.

Lioache tsa liathomo le li-GPS tsa tsona li molemo ho tseba nako ea hona joale, empa li theko e boima 'me li hloka tlhophiso e rarahaneng, kahoo ha li khone ho kenngoa koloing e' ngoe le e 'ngoe. Ka lebaka la sena, litsi tsa data li sebelisa mokhoa o hlophisitsoeng. Lioache tsa atomic le/kapa GPS li bontša nako e nepahetseng, ka mor'a moo e phatlalatsoa ho mechine e meng ka li-server tsa bobeli. Sena se bolela hore mochine o mong le o mong o tla fumana offset e itseng ho tloha ka nako e nepahetseng.

Boemo bona bo mpefatsoa ke taba ea hore lits'ebetso le li-database hangata li fumaneha mecheng e fapaneng (haeba e se litsing tse fapaneng tsa data). Kahoo, nako e ke ke ea fapana eseng feela ka li-node tsa DB tse ajoang ho metjhini e fapaneng. E tla boela e fapane ho seva sa kopo.

Google TrueTime e nka mokhoa o fapaneng ka ho felletseng. Batho ba bangata ba lumela hore tsoelo-pele ea Google ntlheng ena e hlalosoa ke phetoho ea banal ho lioache tsa atomic le GPS, empa ena ke karolo feela ea setšoantšo se seholo. Mona ke kamoo TrueTime e sebetsang kateng:

  • TrueTime e sebelisa mehloli e 'meli e fapaneng: GPS le lioache tsa athomo. Lioache tsena li na le mekhoa ea ho hlōleha e sa amaneng. [bona leqephe la 5 bakeng sa lintlha tse ling mona - hoo e ka bang. fetolela.), kahoo tšebeliso ea bona e kopanetsoeng e eketsa ho tšepahala.
  • TrueTime e na le API e sa tloaelehang. E khutlisa nako e le nako e nang le phoso ea ho lekanya le ho hloka botsitso ho hahiloeng ho eona. Nako ea sebele ka nako e kae-kae pakeng tsa meeli e ka holimo le e ka tlaase ea nako. Spanner, database e ajoang ea Google, e emela feela ho fihlela ho bolokehile ho bolela hore nako ea hajoale e felile. Mokhoa ona o kenyelletsa latency e itseng tsamaisong, haholo-holo haeba ho se tsitse ha benghali ho phahame, empa ho tiisa ho nepahala esita le boemong bo ajoang lefatšeng ka bophara.

Bahlahisi ba bangata ba lokela ho tseba sena ka datha
Likarolo tsa Spanner li sebelisa TrueTime, moo TT.now () e khutlisetsang nako, kahoo Spanner e robala feela ho fihlela moo e ka kholisehang hore nako ea hona joale e fetile ntlha e itseng.

Ho fokotsa ho nepahala ha ho khetholla nako ea hajoale ho bolela ho eketseha ha nako ea ts'ebetso ea Spanner le ho fokotseha ha ts'ebetso. Ke ka lebaka lena ho leng bohlokoa ho boloka ts'ebetso e nepahetseng ka ho fetesisa le hoja ho sa khonehe ho fumana oache e nepahetseng ka botlalo.

Ho lieha ho na le meelelo e mengata

Haeba u botsa litsebi tse leshome le metso e 'meli hore na tieho ke eng, mohlomong u tla fumana likarabo tse fapaneng. Ho DBMS latency hangata e bitsoa "database latency" mme e fapane le se lemohuoang ke moreki. 'Nete ke hore moreki o bona kakaretso ea ho lieha ha marang-rang le ho lieha ha database. Bokhoni ba ho arola mofuta oa latency bo bohlokoa ha ho rarolla mathata a ntseng a hola. Ha u bokella le ho hlahisa metrics, leka kamehla ho beha leihlo mefuta ka bobeli.

Litlhoko tsa ts'ebetso li lokela ho hlahlojoa bakeng sa khoebo e itseng

Ka linako tse ling litšoaneleho tsa ts'ebetso ea DBMS le mefokolo ea eona li hlalosoa ho latela mokhoa oa ho ngola / ho bala le latency. Sena se fana ka kakaretso e akaretsang ea li-parameter tsa bohlokoa tsa tsamaiso, empa ha ho hlahlojoa ts'ebetso ea DBMS e ncha, mokhoa o pharaletseng haholoanyane ke oa ho hlahloba ka thoko lits'ebetso tsa bohlokoa (bakeng sa potso ka 'ngoe le / kapa transaction). Mehlala:

  • Ngola sephetho le latency ha o kenya mola o mocha tafoleng X (e nang le mela e limilione tse 50) ka litšitiso tse boletsoeng le ho palama mela litafoleng tse amanang.
  • Ho lieha ho hlahisa metsoalle ea mosebelisi ea itseng ha palo ea metsoalle e le 500.
  • Nako ea ho khutlisa tse 100 tse holimo nalaneng ea mosebelisi ha mosebelisi a latela basebelisi ba bang ba 500 ka likenyo tsa X ka hora.

Tekolo le liteko li ka kenyelletsa maemo a bohlokoa joalo ho fihlela o na le ts'epo ea hore database e fihlela litlhoko tsa ts'ebetso. Molao o ts'oanang oa monoana o boetse o nahanela karohano ena ha ho bokelloa metrics ea latency le ho khetholla li-SLO.

Ela hloko boleng bo phahameng ha u bokella metrics bakeng sa ts'ebetso ka 'ngoe. Sebelisa litlaleho, pokello ea liketsahalo, kapa mokhoa oa ho fumana boitsebiso bo matla haholo. Sehloohong sa "U batla ho Fetola Latency?» o ka itloaetsa mekhoa ea ho lieha ho lokisa liphoso.

Litšebelisano tse teng li ka ba kotsi

Hase DBMS e 'ngoe le e' ngoe e tšehetsang litšebelisano tse entsoeng ka sehlaha, empa ha li etsa joalo, litšebelisano tse joalo li ka fella ka liphoso tse sa lebelloang tseo ho seng bonolo ho li lemoha kamehla (ke hore, ho lokela ho hlaka hore ho na le mofuta o itseng oa phoso).

U ka qoba ho sebelisa li-transaction tse behiloeng sebakeng sa hau u sebelisa lilaebrari tsa bareki tse ka li bonang le ho li feta. Haeba litšebelisano tse entsoeng sehlaheng li ke ke tsa tloheloa, ela hloko ka ho khethehileng ts'ebetsong ea tsona ho qoba maemo a sa lebelloang moo litšebelisano tse phethiloeng li felisitsoeng ka phoso ka lebaka la lihlaha.

Ho kenyelletsa litšebelisano ka mekhahlelo e fapaneng ho ka lebisa litšebelisanong tse sa lebelloang tsa sehlaha, 'me ho latela pono ea ho baloa ha khoutu, ho ka etsa hore ho be thata ho utloisisa sepheo sa mongoli. Sheba lenaneo le latelang:

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

Sephetho sa khoutu e ka holimo e tla ba sefe? Na e tla khutlisa litšebelisano ka bobeli, kapa e ka hare feela? Ho etsahala'ng haeba re itšetlehile ka likarolo tse ngata tsa lilaebrari tse kenyelletsang tlhahiso ea litšebelisano bakeng sa rona? Na re tla khona ho khetholla le ho ntlafatsa linyeoe tse joalo?

Nahana ka lera la data le nang le ts'ebetso e mengata (mohlala. newAccount) e se e kentsoe tšebetsong litšebelisanong tsa eona. Ho etsahala'ng haeba u li tsamaisa e le karolo ea khoebo ea boemo bo holimo e sebetsang ka har'a khoebo ea eona? Ho itšehla thajana le ho tsitsana e ne e tla ba eng tabeng ee?

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

Ho e-na le ho batla likarabo tsa lipotso tse joalo tse sa feleng, ho molemo ho qoba ho etsa lintho ka sehlaha. Ntle le moo, lera la hau la data le ka etsa ts'ebetso ea maemo a holimo habonolo ntle le ho iketsetsa litšebelisano tsa lona. Ntle le moo, mohopolo oa khoebo ka boeona o khona ho qala ts'ebetso, ho etsa ts'ebetso ho eona, ho etsa kapa ho hlakola khoebo.

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.

Litšebelisano ha lia lokela ho tlamahanngoa le boemo ba kopo

Ka linako tse ling ho hohela ho sebelisa boemo ba ts'ebeliso ho li-transaction ho fetola boleng bo itseng kapa ho fetola liparamente tsa potso. Ntho ea bohlokoa e lokelang ho nahanoa ke sebaka se nepahetseng sa ts'ebeliso. Hangata bareki ba qala ts'ebetso bocha ha ho na le mathata a marang-rang. Haeba transaction joale e itšetlehile ka boemo bo ntseng bo fetoloa ke ts'ebetso e 'ngoe, e ka khetha boleng bo fosahetseng ho itšetlehile ka monyetla oa morabe oa data. Litšebelisano li tlameha ho nahana ka kotsi ea maemo a lebelo la data ts'ebelisong.

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

Ts'ebetso e kaholimo e tla eketsa nomoro ea tatellano nako le nako ha e etsoa, ​​ho sa tsotelehe sephetho sa ho qetela. Haeba boitlamo bo hloleha ka lebaka la mathata a marang-rang, kopo e tla etsoa ka nomoro e fapaneng ea tatellano ha o leka hape.

Bahlophisi ba lipotso ba ka u bolella ho hongata ka database

Bahlophisi ba lipotso ba etsa qeto ea hore na potso e tla etsoa joang polokelong ea boitsebiso. Ba boetse ba sekaseka likopo le ho li ntlafatsa pele ba li romella. Bahlophisi ba ka fana feela ka likhakanyo tse ka bang teng ho latela matšoao ao ba nang le 'ona. Mohlala, mokhoa o nepahetseng oa ho batla potso e latelang ke ofe?

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

Liphetho li ka fumanoa ka litsela tse peli:

  • Sekeno sa tafole e felletseng: U ka sheba ntho e 'ngoe le e' ngoe e kenngoeng tafoleng 'me u khutlisetse lingoliloeng tse nang le lebitso la sengoli le ts'oanang, ebe u li laela.
  • Sekena sa index: U ka sebelisa index ho fumana li-ID tse tsamaellanang, fumana mela eo, ebe u e odara.

Mosebetsi oa mohlophisi oa lipotso ke ho tseba hore na ke leano lefe le leng molemo ka ho fetisisa. Ke habohlokoa ho nahana hore bahlophisi ba lipotso ba na le bokhoni bo fokolang ba ho bolela esale pele. Sena se ka lebisa liqetong tse mpe. Li-DBA kapa bahlahisi ba ka li sebelisa ho hlahloba le ho hlophisa hantle lipotso tse sa sebetseng hantle. Liphetolelo tse ncha tsa DBMS li ka hlophisa bahlophisi ba lipotso, 'me ho itlhahloba ho ka thusa ha u nchafatsa database haeba phetolelo e ncha e lebisa mathateng a tshebetso. Lipotso tse liehang, litlaleho tsa morao-rao, kapa lipalo-palo tsa nako li ka thusa ho tseba lipotso tse hlokang ho ntlafatsoa.

Maemo a mang a hlahisoang ke moralo oa lipotso a ka ba le lerata (haholo-holo ha a hakanya thari kapa nako ea CPU). Keketso e ntle ho bahlophisi ke lisebelisoa tsa ho ts'oara le ho sala morao tsela ea ts'ebetso. Li u lumella ho hlahloba mathata a joalo (oho, ha se li-DBMS tsohle tse fanang ka lisebelisoa tse joalo).

Ho falla ka marang-rang ho thata empa hoa khoneha

Ho falla ka Marang-rang, ho falla ho phelang, kapa ho falla ha nako ea sebele ho bolela ho tloha ho database e 'ngoe ho ea ho e' ngoe ntle le ho fokotsa nako kapa bobolu ba data. Ho falla ho phela ho bonolo ho etsoa haeba phetoho e etsahala ka har'a DBMS / enjene e tšoanang. Boemo bo ba thata le ho feta ha ho hlokahala ho fallela DBMS e ncha e nang le litlhoko tse fapaneng tsa ts'ebetso le schema.

Ho na le mefuta e fapaneng ea ho falla inthaneteng. E 'ngoe ea tsona ke ena:

  • Lumella hore ho kenoe habeli polokelong ea boitsebiso ka bobeli. Database e ncha sethaleng sena ha e na lintlha tsohle, empa e amohela feela lintlha tsa morao-rao. Hang ha u se u kholisehile ka sena, u ka fetela mohatong o latelang.
  • Lumella ho bala ho tsoa litsing tsa polokelo ka bobeli.
  • Hlophisa sistimi e le hore ho bala le ho ngola ho etsoe haholo-holo ho database e ncha.
  • Emisa ho ngolla database ea khale ha u ntse u tsoela pele ho bala data ho eona. Mothating ona, database e ncha e ntse e se na data. Li lokela ho kopitsoa ho database ea khale.
  • Database ea khale e baloa feela. Kopitsa data e sieo ho tloha polokelong ea khale ho ea ho e ncha. Ka mor'a hore ho falla ho phethoe, fetola litsela ho database e ncha, 'me u emise ea khale' me ue tlose tsamaisong.

Bakeng sa lintlha tse ling, ke khothaletsa ho ikopanya sehlooho, e qaqisang leano la Stripe la ho falla le ipapisitseng le mohlala ona.

Keketseho e kholo ea database e kenyelletsa ho eketseha ho sa lebelloang

Khōlo ea database e lebisa mathateng a sa lebelloang a amanang le tekanyo ea eona. Ha re ntse re tseba haholoanyane ka sebopeho sa kahare sa database, re khona ho bolela esale pele hore na se tla eketseha joang. Leha ho le joalo, linako tse ling li ntse li sa khonehe ho bona esale pele.
Ha setsi se ntse se hola, menahano le litebello tsa nakong e fetileng mabapi le bophahamo ba data le litlhoko tsa marang-rang tsa marang-rang li kanna tsa felloa ke nako. Mona ke ha potso e hlaha ka liphetoho tse kholo tsa moralo, lintlafatso tse kholo tsa ts'ebetso, li-deployments tse nahanang hape, kapa ho fallela ho tse ling tsa DBMS ho qoba mathata a ka bang teng.

Empa u se ke ua nahana hore tsebo e babatsehang ea sebopeho sa ka hare sa database e teng ke eona feela ntho e hlokahalang. Likala tse ncha li tla tlisa lintho tse ncha tse sa tsejoeng. Lintlha tse bohloko tse sa lebelloang, kabo ea data e sa lekanyetsoang, litaba tse sa lebelloang tsa bandwidth le lisebelisoa tsa thepa, sephethephethe se ntseng se eketseha le likarolo tse ncha tsa marang-rang li tla u qobella hore u nahane hape ka mokhoa oa hau oa database, mohlala oa data, mohlala oa ho tsamaisa, le boholo ba database.

...

Nakong eo ke neng ke qala ho nahana ka ho hatisa sehlooho sena, ho ne ho se ho ntse ho e-na le lintho tse ling tse hlano lethathamong la ka la pele. Eaba ho tla palo e kholo mehopolo e mecha mabapi le tse ling tse ka koaheloa. Ka hona, sengoloa se ama mathata a fokolang a hlakileng a hlokang tlhokomelo e kholo. Leha ho le joalo, sena ha se bolele hore sehlooho se felile 'me ha ke sa tla hlola ke khutlela ho sona thepa ea ka ea nakong e tlang' me nke ke ka etsa liphetoho ho ea hona joale.

PES

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso