Ya kamata ƙarin masu haɓakawa su san wannan game da bayanan bayanai

Lura. fassara: Jaana Dogan ƙwararriyar injiniya ce a Google wacce a halin yanzu tana aiki kan lura da ayyukan samar da kamfanin da aka rubuta a cikin Go. A cikin wannan labarin, wanda ya sami babban shahara tsakanin masu sauraron Ingilishi, ta tattara a cikin maki 17 mahimman bayanai na fasaha game da DBMSs (kuma wani lokacin rarraba tsarin gaba ɗaya) waɗanda ke da amfani don yin la'akari da masu haɓaka manyan / aikace-aikace masu buƙata.

Ya kamata ƙarin masu haɓakawa su san wannan game da bayanan bayanai

Yawancin tsarin kwamfuta suna lura da yanayinsu kuma, saboda haka, suna buƙatar wani nau'in tsarin ajiyar bayanai. Na tara ilimi game da ma'ajin bayanai na dogon lokaci, tare da yin kuskuren ƙira wanda ya haifar da asarar bayanai da katsewa. A cikin tsarin da ke aiwatar da ɗimbin bayanai, ma'ajin bayanai suna kwance a tsakiyar tsarin gine-gine kuma suna aiki azaman maɓalli a zabar mafi kyawun mafita. Duk da cewa an mai da hankali sosai ga aikin ma'ajin bayanai, matsalolin da masu haɓaka aikace-aikacen ke ƙoƙarin hangowa sau da yawa sau da yawa kawai ƙarshen ƙanƙara. A cikin wannan jerin kasidu, na raba wasu ra'ayoyin da za su yi amfani ga masu haɓakawa waɗanda ba su da ƙwarewa a wannan fanni.

  1. Kuna da sa'a idan 99,999% na lokacin sadarwar ba ta haifar da matsala.
  2. ACID yana nufin abubuwa daban-daban.
  3. Kowane rumbun adana bayanai yana da nasa hanyoyin tabbatar da daidaito da warewa.
  4. Katange kyakkyawan fata yana zuwa ga ceto lokacin da yake da wahala a kula da wanda aka saba.
  5. Akwai sauran anomalies baya ga kazanta karatu da kuma asarar data.
  6. Ma'ajin bayanai da mai amfani ba koyaushe suke yarda kan tsarin aikin ba.
  7. Za a iya matsar da matakin sharding a wajen aikace-aikacen.
  8. Ƙarfafa kai tsaye na iya zama haɗari.
  9. Bayanan da aka ɓata na iya zama da amfani kuma baya buƙatar kullewa.
  10. Hargitsi na al'ada ne ga kowane tushen lokaci.
  11. Jinkiri yana da ma'ana da yawa.
  12. Ya kamata a kimanta buƙatun aiki don takamaiman ma'amala.
  13. Ma'amaloli na gida na iya zama haɗari.
  14. Bai kamata a haɗa ma'amaloli zuwa yanayin aikace-aikacen ba.
  15. Masu tsara tambaya za su iya gaya muku abubuwa da yawa game da bayanan bayanai.
  16. Hijira akan layi yana da wahala, amma yana yiwuwa.
  17. Mahimmin haɓakawa a cikin bayanan yana haifar da haɓakar rashin tabbas.

Ina so in gode wa Emmanuel Odeke, Rein Henrichs da sauransu saboda ra'ayoyinsu game da sigar farko na wannan labarin.

Kuna da sa'a idan 99,999% na lokacin sadarwar ba ta haifar da matsala.

Tambayar ta kasance game da yadda amintattun fasahar sadarwar zamani suke da kuma sau nawa tsarin ke raguwa saboda gazawar hanyar sadarwa. Bayanai game da wannan batu ba su da yawa kuma bincike yakan mamaye manyan kungiyoyi tare da cibiyoyin sadarwa na musamman, kayan aiki da ma'aikata.

Tare da adadin samuwa na 99,999% na Spanner (rukunin bayanai na Google da aka rarraba a duniya), Google yayi ikirarin cewa kawai 7,6% matsalolin suna da alaƙa da hanyar sadarwa. A lokaci guda, kamfanin ya kira cibiyar sadarwarsa ta musamman "babban ginshiƙi" na samuwa mai yawa. Nazari Bailis da kuma Kingbury, wanda aka gudanar a shekarar 2014, ya kalubalanci daya daga cikin "rashin fahimta game da rarraba kwamfuta", wanda Peter Deutsch ya tsara a cikin 1994. Shin hanyar sadarwa ta dogara da gaske?

Cikakken bincike a waje da manyan kamfanoni, wanda aka gudanar don Intanet mai faɗi, kawai babu shi. Haka kuma babu isassun bayanai daga manyan 'yan wasa game da kashi nawa na matsalolin abokan cinikinsu ke da alaƙa da hanyar sadarwa. Muna sane sosai game da katsewa a cikin tarin cibiyar sadarwa na manyan masu samar da girgije waɗanda za su iya saukar da gabaɗayan ɓangarorin Intanet na sa'o'i da yawa kawai saboda abubuwa ne masu girma da yawa waɗanda ke shafar adadin mutane da kamfanoni. Katsewar hanyar sadarwa na iya haifar da matsala a lokuta da yawa, koda kuwa ba duka waɗannan lamuran suna cikin tabo ba. Abokan ciniki na sabis na girgije kuma ba su san komai game da abubuwan da ke haifar da matsaloli ba. Idan akwai gazawa, kusan ba zai yuwu a danganta shi da kuskuren hanyar sadarwa a gefen mai bada sabis ba. A gare su, sabis na ɓangare na uku sune akwatunan baƙi. Ba shi yiwuwa a tantance tasirin ba tare da kasancewa babban mai bada sabis ba.

Idan aka yi la'akari da abin da manyan 'yan wasa ke ba da rahoto game da tsarin su, yana da lafiya a ce kuna cikin sa'a idan matsalolin hanyar sadarwa ke da ƙaramin kaso na abubuwan da za su iya raguwa. Har ila yau sadarwar hanyar sadarwa tana fama da irin waɗannan abubuwa na yau da kullun kamar gazawar hardware, canje-canjen topology, canjin tsarin gudanarwa, da katsewar wutar lantarki. Kwanan nan, na yi mamakin sanin cewa an ƙara jerin matsalolin matsalolin cizon shark (eh, kun ji daidai).

ACID yana nufin abubuwa daban-daban

Acronym ACID yana nufin Atomity, Consistency, kadaici, dogaro. Waɗannan kaddarorin ma'amaloli an yi niyya ne don tabbatar da ingancin su a yayin da aka samu gazawa, kurakurai, gazawar hardware, da sauransu. Idan ba tare da ACID ko irin wannan makirci ba, zai yi wahala masu haɓaka aikace-aikacen su bambanta tsakanin abin da suke da alhakin da abin da ke da alhakin bayanan bayanai. Yawancin bayanan ma'amala na alaƙa suna ƙoƙarin zama masu yarda da ACID, amma sabbin hanyoyin kamar NoSQL sun haifar da haɓaka bayanai da yawa ba tare da ma'amalar ACID ba saboda suna da tsada don aiwatarwa.

Lokacin da na fara shiga masana'antar, jagoranmu na fasaha yayi magana game da yadda ra'ayin ACID ya dace. Don yin gaskiya, ana ɗaukar ACID a matsayin ƙaƙƙarfan bayanin maimakon ƙaƙƙarfan ƙa'idar aiwatarwa. A yau na ga yana da amfani mafi yawa saboda yana ɗaga takamaiman nau'in al'amura (kuma yana ba da shawarar mafita mai yuwuwa).

Ba kowane DBMS ne ke bin ACID ba; A lokaci guda, aiwatar da bayanan bayanan da ke goyan bayan ACID suna fahimtar saitin buƙatun daban. Ɗaya daga cikin dalilan da ya sa aiwatar da ACID ba su da lahani shine saboda yawancin cinikin da za a yi don aiwatar da bukatun ACID. Masu ƙirƙira na iya gabatar da bayanansu azaman ACID-mai yarda, amma fassarar ɓangarorin ɓangarorin na iya bambanta da yawa, kamar yadda tsarin tafiyar da abubuwan "marasa yiwuwa". Aƙalla, masu haɓakawa za su iya samun babban fahimta game da ɓarna na aiwatar da tushe don samun kyakkyawar fahimta game da halayensu na musamman da ƙirƙira ɓangarorin kasuwanci.

Muhawara game da ko MongoDB ya bi ka'idodin ACID yana ci gaba ko da bayan fitowar sigar 4. MongoDB ba a samun tallafi na dogon lokaci shiga, ko da yake ta hanyar tsoho bayanai an ƙaddamar da faifai ba fiye da sau ɗaya a kowane daƙiƙa 60 ba. Ka yi tunanin yanayin da ke gaba: aikace-aikacen ya buga rubutu biyu (w1 da w2). MongoDB yayi nasarar adana w1, amma w2 ya ɓace saboda gazawar hardware.

Ya kamata ƙarin masu haɓakawa su san wannan game da bayanan bayanai
Zane mai kwatanta yanayin. MongoDB ya rushe kafin ya iya rubuta bayanai zuwa faifai

Aiwatar da faifai tsari ne mai tsada. Ta hanyar guje wa aikatawa akai-akai, masu haɓakawa suna haɓaka aikin rikodi a cikin kuɗin dogaro. MongoDB a halin yanzu yana goyan bayan shiga, amma rubuce-rubuce masu datti na iya yin tasiri ga amincin bayanai tunda ana kama rajistan ayyukan kowane 100ms ta tsohuwa. Wato, irin wannan yanayin har yanzu yana yiwuwa ga rajistan ayyukan da canje-canjen da aka gabatar a cikinsu, kodayake haɗarin yana da ƙasa kaɗan.

Kowane rumbun adana bayanai yana da nasa daidaito da hanyoyin keɓewa

Daga cikin buƙatun ACID, daidaito da warewa suna alfahari da mafi girman adadin aiwatarwa daban-daban saboda kewayon kasuwancin ya fi girma. Dole ne a ce daidaito da warewa ayyuka ne masu tsada. Suna buƙatar daidaitawa da haɓaka gasa don daidaiton bayanai. Rikicin matsalar yana ƙaruwa sosai idan ya zama dole don auna ma'auni a kwance a kan cibiyoyin bayanai da yawa (musamman idan suna cikin yankuna daban-daban). Samun babban matakin daidaito yana da matukar wahala, kamar yadda kuma yana rage yawan samuwa kuma yana ƙara rarrabuwa na cibiyar sadarwa. Don ƙarin bayani game da wannan al'amari, ina ba ku shawara ku koma ga Ka'idar CAP. Har ila yau, ya kamata a lura cewa aikace-aikacen na iya magance ƙananan rashin daidaituwa, kuma masu tsara shirye-shirye na iya fahimtar matsalolin matsalar da kyau don aiwatar da ƙarin dabaru a cikin aikace-aikacen don magance rashin daidaituwa ba tare da dogara ga ma'ajin bayanai don sarrafa shi ba.

DBMSs galibi suna ba da matakan keɓe daban-daban. Masu haɓaka aikace-aikacen suna iya zaɓar mafi inganci bisa abubuwan da suke so. Ƙananan keɓewa yana ba da damar ƙara saurin gudu, amma kuma yana ƙara haɗarin tseren bayanai. Babban rufi yana rage wannan yiwuwar, amma yana rage aiki kuma zai iya haifar da gasa, wanda zai haifar da irin wannan birki a cikin tushe wanda aka fara gazawa.

Ya kamata ƙarin masu haɓakawa su san wannan game da bayanan bayanai
Yin bita na ƙirar ƙima da alaƙa tsakanin su

Ma'auni na SQL yana bayyana matakan keɓewa guda huɗu kawai, kodayake a ka'idar da aiki akwai ƙari da yawa. Jepson.io yana ba da kyakkyawan bayyani na ƙirar ƙira da ke akwai. Misali, Google Spanner yana ba da garantin serializability na waje tare da aiki tare da agogo, kuma kodayake wannan shine mafi tsananin keɓewa, ba a ayyana shi a daidaitaccen keɓewa.

Ma'aunin SQL yana ambaton matakan keɓe masu zuwa:

  • Serializable (mafi stringent da tsada): Serializable kisa yana da irin wannan tasiri kamar yadda wasu jeri ma'amala kisa. Kisa na jere yana nufin cewa kowace ma'amala ta gaba tana farawa ne kawai bayan an kammala wacce ta gabata. Ya kamata a lura da cewa matakin Serializable sau da yawa ana aiwatar da shi azaman abin da ake kira keɓewar hoto (misali, a cikin Oracle) saboda bambance-bambance a cikin fassarar, kodayake keɓancewar hoto kanta ba a wakilta a ma'aunin SQL.
  • Maimaituwa karantawa: Bayanan da ba a yi ba a cikin ma'amala na yanzu suna samuwa ga ma'amala na yanzu, amma canje-canjen da wasu ma'amaloli suka yi (kamar sabbin layuka) ba a bayyane.
  • Karanta jajircewa: Bayanan da ba a ƙaddamar da su ba don ma'amaloli. A wannan yanayin, ma'amaloli na iya ganin bayanan da aka yi kawai, kuma ana iya karanta fa'idodi. Idan ma'amala ta saka kuma ta aikata sabbin layuka, ciniki na yanzu zai iya ganin su lokacin da aka nema.
  • Karanta ba a gama ba (matakin mafi ƙanƙanta da tsada): An ba da izinin karatun ƙazanta, ma'amaloli na iya ganin canje-canjen da wasu ma'amaloli suka yi. A aikace, wannan matakin na iya zama da amfani ga m kimantawa, kamar tambaya COUNT(*) akan tebur.

Mataki Serializable yana rage haɗarin tseren bayanai, yayin da yake mafi tsada don aiwatarwa kuma yana haifar da mafi girman nauyin gasa akan tsarin. Sauran matakan keɓewa sun fi sauƙin aiwatarwa, amma suna ƙara yuwuwar tseren bayanai. Wasu DBMSs suna ba ku damar saita matakin keɓewa na al'ada, wasu suna da zaɓi mai ƙarfi kuma ba duk matakan ke goyan bayan ba.

Sau da yawa ana tallata goyan bayan matakan keɓewa a cikin wani DBMS da aka bayar, amma kawai binciken da ya dace na halayen sa zai iya bayyana ainihin abin da ke faruwa.

Ya kamata ƙarin masu haɓakawa su san wannan game da bayanan bayanai
Bita game da rashin daidaituwa na daidaituwa a matakan keɓe daban-daban don DBMS daban-daban

Martin Kleppmann a cikin aikinsa hermitage Kwatanta matakan keɓe daban-daban, yayi magana game da rashin daidaituwa, da kuma ko ma'aunin bayanai zai iya yin riko da wani matakin keɓewa. Binciken Kleppmann ya nuna yadda masu haɓaka bayanai daban-daban suke tunani game da matakan keɓewa.

Katange kyakkyawan fata yana zuwa ga ceto lokacin da yake da wahala a kula da wanda aka saba.

Toshewa na iya yin tsada sosai, ba wai kawai don yana ƙara gasa a cikin ma'ajin bayanai ba, har ma saboda yana buƙatar sabar aikace-aikacen su ci gaba da haɗawa da bayanan. Rarrabuwar hanyar sadarwa na iya tsananta keɓancewar yanayi na kullewa kuma ya haifar da ƙulle-ƙulle waɗanda ke da wahalar ganewa da warwarewa. A cikin yanayin da keɓantaccen kulle bai dace ba, kyakkyawan kullewa yana taimakawa.

Kulle kyakkyawan fata wata hanya ce wacce lokacin karanta kirtani, yana yin la'akari da sigar sa, checksum, ko lokacin gyare-gyaren ƙarshe. Wannan yana ba ku damar tabbatar da cewa babu canjin sigar atomic kafin canza shigarwa:

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

A wannan yanayin, sabunta tebur products ba za a yi shi ba idan wani aiki a baya ya yi canje-canje ga wannan layin. Idan ba a yi wasu ayyuka a wannan jere ba, canjin jere ɗaya zai faru kuma muna iya cewa sabuntawar ya yi nasara.

Akwai sauran anomalies baya ga kazanta karatu da kuma asarar data

Lokacin da yazo ga daidaiton bayanai, ana mayar da hankali kan yuwuwar yanayin tseren da zai iya haifar da ƙazantattun karatu da asarar bayanai. Koyaya, rashin daidaituwar bayanai ba su tsaya nan ba.

Ɗaya daga cikin misalan irin waɗannan abubuwan rashin daidaituwa shine rikodin murdiya (rubuta skews). Karɓi yana da wahalar ganowa saboda ba yawanci ake nema ba. Ba saboda ƙazantattun karantawa ba ne ko asarar bayanai, amma don keta haƙƙin ma'ana da aka sanya akan bayanan.

Misali, bari mu yi la'akari da aikace-aikacen sa ido wanda ke buƙatar ma'aikaci ɗaya ya kasance ana kira a kowane lokaci:

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;

A cikin yanayin da ke sama, rikodin cin hanci da rashawa zai faru idan an yi nasarar aiwatar da ma'amaloli biyu. Ko da yake babu ƙazantattun karantawa ko asarar bayanai, an lalata amincin bayanan: yanzu ana ɗaukar mutane biyu akan kira a lokaci guda.

Serializable keɓancewa, ƙira ƙira, ko ƙuntatawar bayanai na iya taimakawa wajen kawar da cin hanci da rashawa. Masu haɓakawa dole ne su iya gano irin waɗannan abubuwan rashin daidaituwa yayin haɓakawa don gujewa su yayin samarwa. A lokaci guda, rikicewar rikodi yana da matukar wahala a nema a tushen lambar. Musamman a cikin manyan tsarin, lokacin da ƙungiyoyin ci gaba daban-daban ke da alhakin aiwatar da ayyuka bisa ga tebur guda kuma ba su yarda da ƙayyadaddun damar samun bayanai ba.

Rukunin bayanai da mai amfani ba koyaushe suke yarda da abin da za a yi ba

Ɗaya daga cikin mahimman fasalulluka na ma'ajin bayanai shine garantin aiwatarwa, amma wannan odar ita kanta ƙila ba ta fito fili ga mai haɓaka software ba. Databases suna aiwatar da ma'amaloli a cikin tsari da aka karɓa, ba a cikin tsarin da masu shirye-shiryen suka yi niyya ba. Tsarin ma'amaloli yana da wuyar tsinkaya, musamman a cikin tsarin layi ɗaya masu ɗorawa sosai.

A lokacin haɓakawa, musamman lokacin aiki tare da ɗakunan karatu marasa toshewa, salon mara kyau da ƙarancin karantawa na iya sa masu amfani suyi imani da cewa ana aiwatar da ma'amaloli akai-akai, lokacin da a zahiri zasu iya isa cikin ma'ajin bayanai ta kowane tsari.

A kallo na farko, a cikin shirin da ke ƙasa, ana kiran T1 da T2 a jere, amma idan waɗannan ayyukan ba su toshewa kuma nan da nan suna mayar da sakamakon a cikin tsari. alkawari, sannan za a tantance tsarin kira ta lokutan da suka shiga rumbun adana bayanai:

sakamako1 = T1() // sakamako na gaske alƙawura ne
sakamako2 = T2()

Idan ana buƙatar atomity (wato, ko dai duk ayyukan dole ne a kammala ko a soke su) da kuma abubuwan da suka dace, to dole ne a yi ayyukan T1 da T2 a cikin ma'amala guda ɗaya.

Za a iya matsar da matakin sharding a wajen aikace-aikacen

Sharding hanya ce ta raba rumbun adana bayanai a kwance. Wasu rumbun adana bayanai na iya raba bayanai ta atomatik a kwance, yayin da wasu ba za su iya ba, ko kuma ba su da kyau sosai. Lokacin da masu gine-ginen bayanai / masu haɓakawa suka sami damar yin hasashen ainihin yadda za a sami damar shiga bayanai, za su iya ƙirƙirar ɓangarori a kwance a cikin sararin mai amfani maimakon ƙaddamar da wannan aikin zuwa bayanan bayanai. Ana kiran wannan tsari "sharding-level sharding" (sharding matakin aikace-aikace).

Abin takaici, wannan sunan sau da yawa yana haifar da kuskuren cewa sharding yana rayuwa a cikin ayyukan aikace-aikacen. A gaskiya ma, ana iya aiwatar da shi azaman madaidaicin Layer a gaban bayanan bayanai. Dangane da haɓakar bayanai da ƙirƙira ƙira, buƙatun sharding na iya zama mai sarƙaƙƙiya. Wasu dabaru na iya fa'ida daga ikon maimaitawa ba tare da sake tura sabar aikace-aikacen ba.

Ya kamata ƙarin masu haɓakawa su san wannan game da bayanan bayanai
Misalin gine-ginen da aka raba sabobin aikace-aikacen daga sabis na sharding

Motsa sharding zuwa sabis na daban yana faɗaɗa ikon yin amfani da dabaru daban-daban ba tare da buƙatar sake tura aikace-aikace ba. Vitess misali ne na irin wannan tsarin sharding a matakin aikace-aikacen. Vitess yana ba da sharding a kwance don MySQL kuma yana ba abokan ciniki damar haɗi zuwa gare ta ta hanyar MySQL yarjejeniya. Tsarin yana rarraba bayanan zuwa cikin nodes na MySQL daban-daban waɗanda basu san komai game da juna ba.

Ƙaddamar da kai na iya zama haɗari

AUTOINCREMENT hanya ce ta gama gari don samar da maɓalli na farko. Akwai lokuta da yawa lokacin da aka yi amfani da bayanan bayanai azaman janareta na ID, kuma ma'aunin yana ƙunshe da allunan da aka tsara don samar da masu ganowa. Akwai dalilai da yawa da yasa samar da maɓalli na farko ta amfani da haɓakawa ta atomatik bai dace ba:

  • A cikin bayanan da aka rarraba, haɓakawa ta atomatik babbar matsala ce. Don samar da ID, ana buƙatar kulle duniya. Madadin haka, zaku iya ƙirƙirar UUID: wannan baya buƙatar hulɗa tsakanin nodes ɗin bayanai daban-daban. Haɓakawa ta atomatik tare da makullai na iya haifar da husuma da rage yawan aiki akan abubuwan da aka saka a cikin yanayin rarraba. Wasu DBMSs (alal misali, MySQL) na iya buƙatar tsari na musamman da ƙarin kulawa mai kyau don tsara kwafin master-man yadda ya kamata. Kuma yana da sauƙin yin kuskure yayin daidaitawa, wanda zai haifar da gazawar rikodi.
  • Wasu ma'ajin bayanai suna da algorithms na rarrabawa bisa maɓallan farko. ID na jere na iya haifar da wurare masu zafi da ba za a iya tsinkaya ba da kuma ƙara kaya akan wasu ɓangarori yayin da wasu ke zama marasa aiki.
  • Maɓalli na farko shine hanya mafi sauri don samun damar layi a cikin bayanan bayanai. Tare da ingantattun hanyoyi don gano bayanan, ID na jeri na iya juya mafi mahimmancin ginshiƙi a cikin tebur zuwa ginshiƙi mara amfani da ke cike da ƙima mara ma'ana. Don haka, duk lokacin da zai yiwu, da fatan za a zaɓi maɓalli na farko na musamman na duniya (misali sunan mai amfani).

Kafin yanke shawara akan hanya, la'akari da tasirin ID na haɓakawa ta atomatik da UUIDs akan ƙididdigewa, rarrabawa, da sharding.

Bayanai mara kyau na iya zama da amfani kuma baya buƙatar kullewa

Multiversion Concurrency Control (MVCC) yana aiwatar da yawancin buƙatun daidaito waɗanda aka tattauna a sama. Wasu ma'ajin bayanai (misali, Postgres, Spanner) suna amfani da MVCC don "ciyar da" ma'amaloli tare da hotuna - tsofaffin nau'ikan bayanan. Hakanan za'a iya daidaita ma'amalar hoton hoto don tabbatar da daidaito. Lokacin karantawa daga tsohon hoto, ana karanta bayanan da suka shuɗe.

Karatun bayanan da ba su da tushe na iya zama da amfani, misali, lokacin samar da nazari daga bayanan ko ƙididdige ƙididdiga masu ƙima.

Fa'idar farko ta yin aiki tare da bayanan gado shine ƙarancin jinkiri (musamman idan an rarraba ma'ajin bayanai zuwa sassa daban-daban). Na biyu shi ne cewa ma'amaloli na karantawa kawai ba su da kulle-kulle. Wannan babbar fa'ida ce ga aikace-aikacen da suke karantawa da yawa, muddin za su iya sarrafa bayanan da ba su da tushe.

Ya kamata ƙarin masu haɓakawa su san wannan game da bayanan bayanai
Sabar aikace-aikacen tana karanta bayanai daga kwafin gida wanda bai wuce daƙiƙa 5 ba, koda kuwa akwai sabon sigar a wancan gefen Tekun Pasifik.

DBMSs suna share tsoffin juzu'ai ta atomatik kuma, a wasu lokuta, suna ba ku damar yin wannan akan buƙata. Misali, Postgres yana ba masu amfani damar yin VACUUM akan buƙatun, kuma kuma lokaci-lokaci yana yin wannan aikin ta atomatik. Spanner yana gudanar da mai tattara shara don kawar da hotuna da suka girmi sa'a ɗaya.

Kowane lokaci tushen yana ƙarƙashin murdiya

Mafi kyawun sirrin sirri a kimiyyar kwamfuta shine duk APIs na lokaci-lokaci karya. A gaskiya ma, injinan mu ba su san ainihin lokacin da ake ciki ba. Kwamfutoci sun ƙunshi lu'ulu'u na quartz waɗanda ke haifar da girgizar da ake amfani da su don kiyaye lokaci. Duk da haka, ba su da cikakkiyar isasshe kuma suna iya kasancewa gaba / baya bayan ainihin lokacin. Canjin zai iya kaiwa dakika 20 kowace rana. Don haka, lokaci a kan kwamfutocin mu dole ne a daidaita su lokaci-lokaci tare da hanyar sadarwa.

Ana amfani da sabar NTP don aiki tare, amma tsarin aiki tare da kansa yana ƙarƙashin jinkirin cibiyar sadarwa. Ko da aiki tare da uwar garken NTP a cikin cibiyar bayanai ɗaya yana ɗaukar ɗan lokaci. A bayyane yake cewa yin aiki tare da uwar garken NTP na jama'a na iya haifar da hargitsi mafi girma.

Atomic clocks da takwarorinsu na GPS sun fi dacewa don tantance lokacin yanzu, amma suna da tsada kuma suna buƙatar saiti mai rikitarwa, don haka ba za a iya shigar da su akan kowace mota ba. Saboda wannan, cibiyoyin bayanai suna amfani da hanyar da ta dace. Atomic da/ko agogon GPS suna nuna ainihin lokacin, bayan haka ana watsa shi zuwa wasu na'urori ta hanyar sabar na biyu. Wannan yana nufin cewa kowace na'ura za ta fuskanci wani abin biya daga daidai lokacin.

Lamarin ya ta'azzara saboda kasancewar aikace-aikace da ma'ajin bayanai galibi suna kan na'urori daban-daban (idan ba a cibiyoyin bayanai daban-daban ba). Don haka, lokacin zai bambanta ba kawai akan nodes na DB waɗanda aka rarraba a cikin injuna daban-daban ba. Hakanan zai bambanta akan uwar garken aikace-aikacen.

Google TrueTime yana ɗaukar hanya ta daban. Yawancin mutane sun yi imanin cewa ci gaban Google a wannan hanya yana bayyana ta hanyar banal canzawa zuwa agogon atomic da GPS, amma wannan wani bangare ne na babban hoto. Ga yadda TrueTime ke aiki:

  • TrueTime yana amfani da tushe daban-daban guda biyu: GPS da agogon atomic. Waɗannan agogon suna da hanyoyin gazawa marasa alaƙa. [duba shafi na 5 don ƙarin bayani a nan - kimanin. fassara), don haka amfani da haɗin gwiwa yana ƙaruwa da aminci.
  • TrueTime yana da sabon API. Yana dawo da lokaci azaman tazara tare da kuskuren auna da rashin tabbas da aka gina a ciki. Ainihin lokacin cikin lokaci shine wani wuri tsakanin babba da ƙananan iyakoki na tazara. Spanner, rumbun adana bayanai na Google da aka rarraba, yana jira ne kawai har sai an tabbatar da cewa lokaci na yanzu ya wuce iyaka. Wannan hanya ta gabatar da wasu latency a cikin tsarin, musamman ma idan rashin tabbas akan masters yana da girma, amma yana tabbatar da daidaito ko da a cikin yanayin da aka rarraba a duniya.

Ya kamata ƙarin masu haɓakawa su san wannan game da bayanan bayanai
Abubuwan Spanner suna amfani da TrueTime, inda TT.now () ke dawo da tazara, don haka Spanner kawai yana barci har sai lokacin da zai iya amincewa da cewa lokacin yanzu ya wuce wani matsayi.

Rage daidaito wajen tantance lokacin yanzu yana nufin haɓaka tsawon lokacin ayyukan Spanner da raguwar aiki. Wannan shine dalilin da ya sa yana da mahimmanci don kiyaye mafi girman daidaiton yiwuwar ko da yake ba shi yiwuwa a sami cikakken agogon daidai.

Jinkiri yana da ma'ana da yawa

Idan ka tambayi masana goma sha biyu game da menene jinkiri, tabbas za ku sami amsoshi daban-daban. A cikin jinkirin DBMS galibi ana kiransa "latency database" kuma ya bambanta da abin da abokin ciniki ke fahimta. Gaskiyar ita ce, abokin ciniki yana lura da jimlar jinkirin hanyar sadarwa da jinkirin bayanai. Ƙarfin ware nau'in latency yana da mahimmanci lokacin da za a gyara matsalolin girma. Lokacin tattarawa da nuna ma'auni, koyaushe ƙoƙarin sa ido akan nau'ikan biyun.

Ya kamata a kimanta buƙatun aiki don takamaiman ma'amala

Wani lokaci halayen aikin DBMS da iyakokin sa ana ƙayyadad da su cikin sharuɗɗan rubutawa/ karanta kayan aiki da latency. Wannan yana ba da cikakken bayyani na maɓalli na maɓalli na tsarin, amma lokacin da ake kimanta aikin sabon DBMS, hanya mafi mahimmanci ita ce kimanta ayyuka masu mahimmanci daban (ga kowace tambaya da/ko ma'amala). Misalai:

  • Rubuta kayan aiki da latency lokacin shigar da sabon jeri cikin tebur X (tare da layuka miliyan 50) tare da ƙayyadaddun ƙuntatawa da faren layi a cikin tebur masu alaƙa.
  • Jinkiri wajen nuna abokan abokai na wani mai amfani lokacin da matsakaicin adadin abokai ya kai 500.
  • Latency a cikin maido da manyan abubuwan shigarwa 100 daga tarihin mai amfani lokacin da mai amfani ya bi wasu masu amfani 500 tare da shigarwar X a awa daya.

Ƙimar ƙima da gwaji na iya haɗawa da irin waɗannan lokuta masu mahimmanci har sai kun kasance da tabbacin cewa ma'aunin bayanai ya cika buƙatun aiki. Irin wannan ƙa'idar babban yatsa kuma tana ɗaukar wannan ɓarna a cikin la'akari lokacin tattara ma'aunin latency da ƙayyade SLOs.

Yi hankali da babban kadinanci lokacin tattara awo na kowane aiki. Yi amfani da rajistan ayyukan, tarin taron, ko ganowa da aka rarraba don samun manyan bayanan gyara kurakurai. A cikin labarin "Ana so a cire Latency?» za ku iya sanin kanku tare da hanyoyin ɓata lokaci.

Ma'amaloli na gida na iya zama haɗari

Ba kowane DBMS ke goyan bayan ma'amaloli na gida ba, amma idan sun yi, irin waɗannan ma'amaloli na iya haifar da kurakurai da ba zato ba tsammani waɗanda ba koyaushe suke da sauƙin ganowa (wato, ya kamata a bayyane cewa akwai wani nau'in anomaly).

Kuna iya guje wa yin amfani da ma'amaloli na gida ta amfani da ɗakunan karatu na abokin ciniki waɗanda zasu iya ganowa da ketare su. Idan ba za a iya watsi da ma'amaloli na gida ba, a kula da aiwatar da su don guje wa yanayin da ba zato ba tsammani inda aka soke cinikin da aka kammala ba da gangan ba saboda na gida.

Ƙirƙirar ma'amaloli a cikin yadudduka daban-daban na iya haifar da ma'amalar da ba zato ba tsammani, kuma daga mahangar karanta lambar, yana iya yin wahalar fahimtar manufar marubucin. Ku kalli shirin kamar haka:

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

Menene fitar da lambar da ke sama? Shin zai dawo da ma'amaloli biyu, ko kuma na ciki kawai? Me zai faru idan muka dogara da ɗakunan karatu da yawa waɗanda ke tattare da ƙirƙirar ma'amaloli a gare mu? Za mu iya gano da kuma inganta irin waɗannan lokuta?

Ka yi tunanin Layer na bayanai tare da ayyuka da yawa (misali. newAccount) an riga an aiwatar da shi a cikin ma'amalolinsa. Me zai faru idan kun gudanar da su a matsayin wani ɓangare na dabarun kasuwanci mafi girma wanda ke gudana a cikin kasuwancinsa? Menene zai zama warewa da daidaito a cikin wannan yanayin?

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

Maimakon neman amsoshi ga irin waɗannan tambayoyin marasa iyaka, yana da kyau a guje wa ma'amaloli na gida. Bayan haka, Layer ɗin bayanan ku na iya yin ayyuka masu girma cikin sauƙi ba tare da ƙirƙirar ma'amalolinsa ba. Bugu da kari, dabarun kasuwanci da kanta na iya fara ciniki, gudanar da ayyuka a kai, aikatawa ko soke ciniki.

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.

Bai kamata a haɗa ma'amaloli zuwa yanayin aikace-aikacen ba

Wani lokaci yana da jaraba don amfani da yanayin aikace-aikacen a cikin ma'amaloli don canza wasu ƙima ko tweak sigogin tambaya. Mahimmin mahimmancin abin da za a yi la'akari da shi shi ne madaidaicin iyakar aikace-aikace. Abokan ciniki sukan sake farawa ma'amaloli idan akwai matsalolin hanyar sadarwa. Idan ma'amala sannan ya dogara da yanayin da wani tsari ke canza shi, yana iya zaɓar ƙimar da ba ta dace ba dangane da yuwuwar tseren bayanai. Dole ne ma'amaloli suyi la'akari da haɗarin yanayin tseren bayanai a cikin aikace-aikacen.

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

Ma'amalar da ke sama za ta ƙara adadin jerin duk lokacin da aka aiwatar da ita, ba tare da la'akari da sakamakon ƙarshe ba. Idan ƙaddamarwar ta gaza saboda matsalolin hanyar sadarwa, za a aiwatar da buƙatar tare da lambar jeri daban lokacin da kuka sake gwadawa.

Masu tsara tambaya za su iya gaya muku abubuwa da yawa game da bayanan bayanai

Masu tsara tambayoyin suna tantance yadda za a aiwatar da tambaya a cikin ma'ajin bayanai. Suna kuma bincika buƙatun da inganta su kafin aika su. Masu tsarawa za su iya ba da wasu ƙididdiga masu yuwuwa kawai bisa siginar da suke da ita. Misali, menene mafi kyawun hanyar nema don tambaya mai zuwa?

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

Ana iya dawo da sakamakon ta hanyoyi biyu:

  • Cikakken tebur scan: Kuna iya duba kowace shigarwa a cikin tebur kuma ku mayar da labarai tare da sunan marubucin da ya dace, sannan ku yi oda.
  • Binciken Index: Kuna iya amfani da fihirisa don nemo ID masu dacewa, samun waɗancan layuka, sannan kuyi oda.

Aikin mai tsara tambaya shine sanin wace dabara ce mafi kyau. Yana da kyau a yi la'akari da cewa masu tsara tambayoyin suna da iyakacin iya hangen nesa. Wannan zai iya haifar da mummunan yanke shawara. DBAs ko masu haɓakawa na iya amfani da su don tantancewa da kuma daidaita tambayoyin da ba su cika aiki ba. Sabbin nau'ikan DBMS na iya saita masu tsara tambaya, kuma tantancewar kai na iya taimakawa lokacin sabunta bayanan idan sabon sigar ta haifar da matsalolin aiki. Sannun rakodin tambayoyin, rahotannin jinkiri, ko kididdigar lokacin aiwatarwa na iya taimakawa wajen gano tambayoyin da ke buƙatar ingantawa.

Wasu ma'auni da mai tsara tambaya ya gabatar na iya zama ƙarƙashin amo (musamman lokacin ƙididdige latency ko lokacin CPU). Kyakkyawan ƙari ga masu tsara jadawalin kayan aikin ne don ganowa da bin hanyar aiwatarwa. Suna ba ku damar bincikar irin waɗannan matsalolin (alas, ba duk DBMSs ke ba da irin waɗannan kayan aikin ba).

Hijira akan layi yana da wahala amma yana yiwuwa

Hijira ta kan layi, ƙaura kai tsaye, ko ƙaura na ainihi na nufin ƙaura daga wannan rumbun adana bayanai zuwa wani ba tare da bata lokaci ko ɓarnatar bayanai ba. Hijira kai tsaye yana da sauƙin aiwatarwa idan canjin ya faru a cikin DBMS/inji guda ɗaya. Halin yana ƙara rikitarwa lokacin da ya zama dole don matsawa zuwa sabon DBMS tare da ayyuka daban-daban da buƙatun ƙira.

Akwai nau'ikan ƙaura na kan layi daban-daban. Ga daya daga cikinsu:

  • Kunna shigarwa sau biyu a cikin bayanan bayanai guda biyu. Sabuwar ma'adanin bayanai a wannan mataki ba shi da duk bayanan, amma kawai yana karɓar sabbin bayanai. Da zarar kun tabbatar da wannan, zaku iya ci gaba zuwa mataki na gaba.
  • Kunna karantawa daga duka bayanan bayanai.
  • Saita tsarin ta yadda za a yi karatu da rubutu da farko akan sabon ma'adanar bayanai.
  • Dakatar da rubutawa zuwa tsohuwar ma'adanin bayanai yayin ci gaba da karanta bayanai daga ciki. A wannan mataki, sabon bayanan har yanzu ba shi da wasu bayanai. Yakamata a kwafi su daga tsohuwar rumbun adana bayanai.
  • Tsohuwar ma'ajin bayanai shine karantawa kawai. Kwafi bayanan da suka ɓace daga tsohuwar rumbun adana bayanai zuwa sabon. Bayan an gama ƙaura, canza hanyoyin zuwa sabon bayanan bayanai, kuma dakatar da tsohon kuma share shi daga tsarin.

Don ƙarin bayani, ina ba da shawarar tuntuɓar labarin, wanda ke ba da cikakken bayani game da dabarun ƙaura na Stripe bisa wannan ƙirar.

Ƙaruwa mai mahimmanci a cikin bayanan yana haifar da karuwa a cikin rashin tabbas

Haɓaka bayanan bayanai yana haifar da matsalolin da ba a iya faɗi ba dangane da sikelin sa. Da zarar mun sani game da tsarin ciki na rumbun adana bayanai, da kyau za mu iya hasashen yadda za ta auna. Duk da haka, wasu lokuta har yanzu ba za a iya hango su ba.
Yayin da tushe ke girma, zato na baya da tsammanin game da ƙarar bayanai da buƙatun bandwidth na cibiyar sadarwa na iya zama tsohon zamani. Wannan shine lokacin da tambaya ta taso na manyan gyare-gyaren ƙira, manyan gyare-gyaren aiki, sake tunani game da turawa, ko ƙaura zuwa wasu DBMSs don guje wa matsaloli masu yuwuwa.

Amma kada kuyi tunanin cewa kyakkyawan ilimin tsarin ciki na bayanan da ke akwai shine kawai abin da ya zama dole. Sabbin ma'auni za su zo tare da su sababbin abubuwan da ba a sani ba. Mahimman ciwo maras tabbas, rarraba bayanai marasa daidaituwa, bandwidth mara tsammani da al'amurran hardware, karuwar zirga-zirga da sababbin sassan cibiyar sadarwa za su tilasta ku sake tunani game da tsarin bayanan ku, samfurin bayanai, samfurin ƙaddamarwa, da girman bayanai.

...

A lokacin da na fara tunanin buga wannan labarin, an riga an sami ƙarin abubuwa biyar a jerin abubuwana na asali. Sai adadi mai yawa ya zo sababbin ra'ayoyi game da abin da kuma za a iya rufe. Sabili da haka, labarin ya taɓa mafi ƙarancin matsalolin da ke buƙatar kulawa mai yawa. Duk da haka, wannan ba yana nufin cewa batun ya ƙare ba kuma ba zan sake komawa gare shi a cikin kayana na gaba ba kuma ba zan yi canje-canje ga na yanzu ba.

PS

Karanta kuma a kan shafinmu:

source: www.habr.com

Add a comment