Tokony ho fantatry ny mpandrindra bebe kokoa izany momba ny angon-drakitra

Fanamarihana. transl.: Jaana Dogan dia injeniera za-draharaha ao amin'ny Google izay miasa amin'izao fotoana izao amin'ny fanaraha-maso ny serivisy famokarana an'ny orinasa voasoratra ao amin'ny Go. Ao amin'ity lahatsoratra ity, izay nahazo laza lehibe teo amin'ny mpihaino miteny anglisy, dia nanangona amin'ny teboka 17 ny antsipiriany ara-teknika manan-danja momba ny DBMSs (ary indraindray ny rafitra zaraina amin'ny ankapobeny) izay ilaina hodinihina ho an'ny mpamorona ny fampiharana lehibe / mitaky.

Tokony ho fantatry ny mpandrindra bebe kokoa izany momba ny angon-drakitra

Ny ankamaroan'ny rafitra informatika dia manara-maso ny fanjakany ary, araka izany, dia mitaky karazana rafitra fitahirizana angon-drakitra. Nanangona fahalalana momba ny angon-drakitra aho nandritra ny fotoana maharitra, teny an-dalana nanao fahadisoana amin'ny famolavolana izay nitarika fahaverezan'ny angona sy fahatapahan-kevitra. Ao amin'ny rafitra izay manodina vaovao be dia be, ny angon-drakitra dia mitoetra ao am-pon'ny rafitra rafitra ary miasa ho singa fototra amin'ny fisafidianana ny vahaolana tsara indrindra. Na dia eo aza ny fiheverana akaiky ny asan'ny angon-drakitra, ny olana izay ezahan'ny mpamorona fampiharana andrasana dia matetika ny tendron'ny iceberg. Amin'ity andian-dahatsoratra ity dia mizara hevitra vitsivitsy aho izay mahasoa ho an'ny mpamorona izay tsy manam-pahaizana manokana amin'ity sehatra ity.

  1. Tsara vintana ianao raha 99,999% amin'ny fotoana tsy miteraka olana ny tambajotra.
  2. Ny ACID dia midika zavatra maro samihafa.
  3. Ny angon-drakitra tsirairay dia manana rafitra manokana hiantohana ny tsy fitoviana sy ny fitokanana.
  4. Ny fanakanana optimistika dia tonga amin'ny famonjena rehefa sarotra ny mitazona ny mahazatra.
  5. Misy anomalies hafa ankoatra ny famakiana maloto sy ny fahaverezan'ny angona.
  6. Ny angon-drakitra sy ny mpampiasa dia tsy mitovy hevitra amin'ny hetsika.
  7. Ny sharding amin'ny ambaratonga fampiharana dia azo afindra ivelan'ny fampiharana.
  8. Mety hampidi-doza ny autoincrementing.
  9. Mety ilaina ny angon-drakitra maloto ary tsy mila mihidy.
  10. Ny fanodinkodinana dia mahazatra amin'ny loharanom-potoana rehetra.
  11. Misy dikany maro ny fahatarana.
  12. Ny fepetra takian'ny fanatanterahana dia tokony ho tombanana ho an'ny fifampiraharahana manokana.
  13. Mety hampidi-doza ny fifampiraharahana voatokana.
  14. Tsy tokony hifamatotra amin'ny fanjakana fampiharana ny fifampiraharahana.
  15. Afaka milaza zavatra betsaka aminao momba ny angon-drakitra ny mpandinika fanontaniana.
  16. Sarotra ny fifindra-monina an-tserasera, saingy azo atao.
  17. Ny fitomboana lehibe amin'ny angon-drakitra dia mitaky fitomboan'ny tsy ampoizina.

Te-hisaotra an'i Emmanuel Odeke, Rein Henrichs sy ny hafa aho noho ny fanehoan-kevitr'izy ireo momba ny dikan-teny teo aloha amin'ity lahatsoratra ity.

Tsara vintana ianao raha 99,999% amin'ny fotoana tsy miteraka olana ny tambajotra.

Mipetraka ny fanontaniana mikasika ny maha-azo antoka ny teknolojian'ny tambajotra maoderina sy ny fahatapahana matetika ny rafitra noho ny tsy fahombiazan'ny tambajotra. Vitsy ny fampahalalana momba ity olana ity ary matetika no anjakan'ny fikambanana lehibe manana tambajotra, fitaovana ary mpiasa manokana ny fikarohana.

Miaraka amin'ny taham-pahafahana 99,999% ho an'ny Spanner (angon-drakitra miparitaka maneran-tany an'i Google), Google dia milaza fa 7,6% olana mifandray amin'ny tambajotra. Mandritra izany fotoana izany, ny orinasa dia miantso ny tambajotra manokana ho "andry lehibe" amin'ny fisiana avo lenta. FIANARANA Bailis sy Kingsbury, natao tamin'ny 2014, dia nanamby ny iray amin'ireo "hevi-diso momba ny informatika zaraina", izay noforonin'i Peter Deutsch tamin'ny 1994. Tena azo antoka ve ny tambajotra?

Ny fikarohana feno ivelan'ny orinasa goavana, natao ho an'ny Internet midadasika, dia tsy misy tsotra izao. Tsy ampy ihany koa ny angona avy amin'ireo mpilalao lehibe momba ny isan-jaton'ny olan'ny mpanjifany mifandray amin'ny tambajotra. Fantatsika tsara ny fahatapahan'ny tambajotran'ireo mpanome rahona lehibe izay afaka manafoana ny ampahany manontolo amin'ny Internet mandritra ny ora maromaro satria fotsiny hoe hetsika malaza izay misy fiantraikany amin'ny olona sy orinasa marobe. Ny fahatapahan'ny tambajotra dia mety hiteraka olana amin'ny tranga maro hafa, na dia tsy ireo tranga rehetra ireo aza no misongadina. Ny mpanjifan'ny serivisy rahona dia tsy mahalala na inona na inona momba ny anton'ny olana. Raha toa ka misy ny tsy fahombiazana, dia saika tsy azo atao ny milaza izany ho fahadisoana amin'ny tambajotra eo amin'ny lafiny mpanome tolotra. Ho azy ireo, ny serivisy an'ny antoko fahatelo dia boaty mainty. Tsy azo atao ny manombana ny fiantraikany raha tsy misy mpanome tolotra lehibe.

Raha jerena izay taterin'ireo mpilalao lehibe momba ny rafitra misy azy ireo, dia azo lazaina fa vintana ianao raha toa ka tsy misy afa-tsy ampahany kely amin'ny olana mety hitranga ny fahasahiranana amin'ny tambajotra. Ny fifandraisana amin'ny tambajotra dia mbola mijaly noho ny zavatra mahazatra toy ny tsy fahombiazan'ny fitaovana, ny fiovan'ny topolojia, ny fiovan'ny rafitra fitantanana ary ny fahatapahan-jiro. Vao haingana aho no gaga raha nahafantatra fa nampiana ny lisitry ny olana mety hitranga manaikitra antsantsa (eny, marina ny henonao).

Ny ACID dia midika zavatra maro samihafa

Ny fanafohezana ACID dia midika hoe Atomicity, Consistency, Isolation, Reliability. Ireo fananan'ny fifampiraharahana ireo dia natao hiantohana ny maha-azo itokiana azy raha misy ny tsy fahombiazana, ny fahadisoana, ny tsy fahombiazan'ny fitaovana, sns. Raha tsy misy ACID na tetika mitovy amin'izany, dia sarotra ho an'ny mpamorona fampiharana ny manavaka ny tompon'andraikitra sy ny tompon'andraikitra amin'ny tahiry. Ny ankamaroan'ny angon-drakitra transactional relational dia manandrana mifanaraka amin'ny ACID, saingy ny fomba fiasa vaovao toa an'i NoSQL dia niteraka angona maro tsy misy fifanakalozana ACID satria lafo ny fampiharana azy ireo.

Raha vao niditra tao amin'ny indostria aho, ny mpitarika ara-teknika anay dia niresaka momba ny maha-zava-dehibe ny foto-kevitra ACID. Raha ny marina, ny ACID dia heverina ho famaritana henjana fa tsy fenitry ny fampiharana henjana. Amin'izao fotoana izao dia hitako fa tena ilaina izany satria miteraka sokajy manokana momba ny olana (ary manolotra vahaolana azo atao).

Tsy ny DBMS rehetra no mifanaraka amin'ny ACID; Mandritra izany fotoana izany, ny fampiharana ny angon-drakitra manohana ny ACID dia mahatakatra ny fepetra takiana amin'ny fomba hafa. Ny iray amin'ireo antony mahatonga ny fampiharana ny ACID tsy misy dikany dia noho ny fifampiraharahana maro tsy maintsy atao mba hampiharana ny fepetra takian'ny ACID. Azon'ny mpamorona atao ny manolotra ny angon-drakiny ho mifanaraka amin'ny ACID, saingy mety hiovaova be ny fandikana ny tranganà sisiny, toy izany koa ny fomba fitantanana ny hetsika "tsy azo inoana". Farafaharatsiny, ny mpamorona dia afaka mahazo fahatakarana avo lenta momba ny saro-pady amin'ny fampiharana fototra mba hahazoana fahatakarana araka ny tokony ho izy ny fitondran-tenany manokana sy ny varotra famolavolana.

Mbola mitohy ny adihevitra momba ny fanarahana ny fepetra takian'ny ACID ny MongoDB na dia aorian'ny famoahana ny version 4 aza. MongoDB dia tsy notohanana hatry ny ela logging, na dia natokana ho an'ny kapila tsy mihoatra ny indray mandeha isaky ny 60 segondra aza ny angona mahazatra. Alaivo sary an-tsaina ity toe-javatra manaraka ity: mandefa taratasy roa ny fampiharana iray (w1 sy w2). MongoDB dia mitahiry soa aman-tsara ny w1, fa ny w2 dia very noho ny tsy fahombiazan'ny fitaovana.

Tokony ho fantatry ny mpandrindra bebe kokoa izany momba ny angon-drakitra
Diagrama mampiseho ny scenario. Ny MongoDB dia mianjera alohan'ny ahafahany manoratra angona amin'ny kapila

Ny fanoloran-tena amin'ny kapila dia dingana lafo. Amin'ny alàlan'ny fialana amin'ny fanoloran-tena matetika, manatsara ny fahombiazan'ny firaketana amin'ny fandaniana ny fahamendrehana ny mpamorona. MongoDB amin'izao fotoana izao dia manohana ny logging, fa ny fanoratana maloto dia mety hisy fiantraikany amin'ny fahamendrehan'ny angona satria ny logs dia voasambotra isaky ny 100ms amin'ny alàlan'ny default. Izany hoe, mbola misy scenario mitovitovy amin'izany ihany koa ho an'ny logs sy ny fiovana aseho ao aminy, na dia ambany kokoa aza ny risika.

Ny angon-drakitra tsirairay dia manana ny tsy fitoviana sy ny mekanika mitokana

Amin'ny fepetra takian'ny ACID, ny tsy fitoviana sy ny fitokanana dia mirehareha amin'ny fampiharana isan-karazany maro indrindra satria midadasika kokoa ny varotra varotra. Tsy maintsy lazaina fa ny tsy fitoviana sy ny fitokanana dia asa lafo vidy. Mitaky fandrindrana sy fampitomboana ny fifaninanana ho an'ny fitovian'ny angona izy ireo. Mitombo be ny fahasarotan'ny olana rehefa ilaina ny manenjana ny angon-drakitra mitsivalana manerana ny foibe angona maro (indrindra raha any amin'ny faritra ara-jeografika samihafa izy ireo). Sarotra be ny manatratra ny tsy fitoviana avo lenta, satria mampihena ny fahafaha-manao izany ary mampitombo ny fizarana tambajotra. Raha mila fanazavana amin'ny ankapobeny momba ity tranga ity dia manoro hevitra anao aho mba hijery Theorem CAP. Tsara ihany koa ny manamarika fa ny fampiharana dia afaka miatrika ny tsy fitovian-kevitra kely, ary ny programmer dia afaka mahatakatra tsara ny nuances amin'ny olana mba hampiharana ny lojika fanampiny ao amin'ny fampiharana mba hiatrehana ny tsy fitovian-kevitra nefa tsy miantehitra mafy amin'ny angon-drakitra hiatrehana izany.

Matetika ny DBMS dia manome ambaratonga samihafa amin'ny fitokana-monina. Ny mpamorona fampiharana dia afaka misafidy izay mahomby indrindra arakaraka ny safidiny. Ny fitokana-monina ambany dia ahafahana mampitombo ny hafainganam-pandeha, nefa koa mampitombo ny mety hisian'ny hazakazaka data. Ny insulation avo dia mampihena izany mety hitranga, fa mampihena ny asa ary mety hitarika amin'ny fifaninanana, izay hitarika ho amin'ny freins toy izany ao amin'ny fototra izay manomboka ny tsy fahombiazana.

Tokony ho fantatry ny mpandrindra bebe kokoa izany momba ny angon-drakitra
Famerenana ireo modely mifanandrify efa misy sy ny fifandraisana misy eo amin'izy ireo

Ny fenitra SQL dia tsy mamaritra afa-tsy ambaratonga fitotokanana efatra, na dia eo amin'ny teoria sy ny fampiharana aza dia misy maro hafa. Jepson.io manome topimaso tsara momba ny modely concurrency efa misy. Ohatra, ny Google Spanner dia miantoka ny maha-serializability ivelany miaraka amin'ny fampifanarahana ny famantaranandro, ary na dia sosona mitoka-monina henjana kokoa aza ity, dia tsy voafaritra amin'ny sosona fitokanana mahazatra.

Ny fenitra SQL dia manonona ireto ambaratonga manaraka ireto:

  • Serializable (henjana sy lafo indrindra): Ny famonoana an-tsokosoko dia misy fiantraikany mitovy amin'ny fanatanterahana ny fifampiraharahana misesy. Ny famonoana misesy dia midika fa aorian'ny fahavitan'ny teo aloha vao manomboka ny fifampiraharahana manaraka. Marihina fa ny niveau Serializable matetika ampiharina amin'ny antsoina hoe fitokana-monina snapshot (ohatra, ao amin'ny Oracle) noho ny fahasamihafan'ny fandikana, na dia tsy aseho ao amin'ny fenitra SQL aza ny fitokana-monina snapshot.
  • Vakiteny azo averina: Ny firaketana tsy voaray amin'ny fifampiraharahana amin'izao fotoana izao dia azo alaina amin'ny fifampiraharahana amin'izao fotoana izao, fa ny fanovana nataon'ny fifampiraharahana hafa (toy ny andalana vaovao) tsy hita.
  • Mamaky fanoloran-tena: Ny angon-drakitra tsy voaray dia tsy azo atao amin'ny fifampiraharahana. Amin'ity tranga ity, ny fifampiraharahana dia tsy afaka mahita afa-tsy angon-drakitra natao, ary mety hitranga ny famakiana phantom. Raha misy fifampiraharahana mampiditra sy manao andalana vaovao dia ho afaka hahita azy ireo ny fifampiraharahana ankehitriny rehefa anontaniana.
  • Mamaky tsy manolo-tena (ambaratonga faran'izay henjana sy lafo indrindra): Avela ny famakiana maloto, ny fifampiraharahana dia afaka mahita fiovana tsy voafehin'ny fifampiraharahana hafa. Amin'ny fampiharana, ity ambaratonga ity dia mety ilaina amin'ny tombantombana henjana, toy ny fanontaniana COUNT(*) eo ambony latabatra.

ambaratonga Serializable manamaivana ny loza ateraky ny hazakazaka angon-drakitra, raha toa ka lafo indrindra amin'ny fampiharana ary miteraka enta-mavesatry ny fifaninanana ambony indrindra amin'ny rafitra. Ny haavon'ny fitokanana hafa dia mora kokoa ny mampihatra, fa mampitombo ny mety hisian'ny hazakazaka angon-drakitra. Ny DBMS sasany dia mamela anao hametraka haavon'ny fitokana-monina mahazatra, ny hafa dia manana safidy matanjaka ary tsy ny ambaratonga rehetra no tohanana.

Ny fanohanana ny haavon'ny fitokana-monina dia matetika atao dokam-barotra ao amin'ny DBMS nomena, fa ny fandinihana tsara ny fitondran-tenany ihany no afaka manambara ny tena zava-mitranga.

Tokony ho fantatry ny mpandrindra bebe kokoa izany momba ny angon-drakitra
Famerenana ny anomaliana mifanandrify amin'ny ambaratonga fitokanana samihafa ho an'ny DBMS samihafa

Martin Kleppmann ao amin'ny tetikasany hermitage Mampitaha ny haavon'ny fitokana-monina samihafa, miresaka momba ny tsy fitoviana amin'ny fifanandrinana, ary raha afaka mifikitra amin'ny haavon'ny fitokanana manokana ny angon-drakitra. Ny fikarohana nataon'i Kleppmann dia mampiseho ny fahasamihafan'ny fiheveran'ny mpamorona angona momba ny haavon'ny fitokana-monina.

Ny fanakanana optimistika dia tonga amin'ny famonjena rehefa sarotra ny mitazona ny mahazatra.

Ny fanakanana dia mety ho lafo be, tsy vitan'ny hoe mampitombo ny fifaninanana ao amin'ny angon-drakitra, fa koa satria mitaky ny mpizara fampiharana mifandray tsy tapaka amin'ny angon-drakitra. Ny fizarazarana tambajotra dia mety hampitombo ny toe-javatra manidy manokana ary hitarika fahatapahan-jiro izay sarotra fantarina sy voavaha. Amin'ny toe-javatra izay tsy mety ny fanidiana manokana, dia manampy ny fanidy optimistika.

Optimistic hidy dia fomba iray izay rehefa mamaky tady, dia mandinika ny dikan-teny, checksum, na ny fotoana fanovana farany. Izany dia ahafahanao miantoka fa tsy misy fiovana atomika alohan'ny hanovana ny fidirana:

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

Amin'ity tranga ity, ny fanavaozana ny latabatra products dia tsy ho tanterahana raha misy fandidiana hafa efa nisy fiovana teo aloha teo amin'ity laharana ity. Raha tsy nisy hetsika hafa natao tamin'ity laharana ity dia hisy ny fanovana ho an'ny andalana iray ary azo lazaina fa nahomby ny fanavaozana.

Misy anomalies hafa ankoatra ny famakiana maloto sy ny fahaverezan'ny angona

Raha ny momba ny tsy fitoviana angon-drakitra, ny fifantohana dia amin'ny mety ho toetry ny hazakazaka izay mety hitarika amin'ny famakiana maloto sy fahaverezan'ny angona. Na izany aza, tsy mijanona eo ny anomaliana data.

Ohatra iray amin'ny anomaliana toy izany ny fikorontanan'ny firaketana (manoratra skews). Sarotra tsikaritra ny fanodinkodinana satria matetika tsy mikaroka azy ireo. Tsy noho ny famakiana maloto na fahaverezan'ny angon-drakitra izy ireo, fa noho ny fanitsakitsahana ny teritery lojika napetraka amin'ny angon-drakitra.

Ohatra, andeha hojerentsika ny fampiharana fanaraha-maso izay mitaky mpandraharaha iray hiantsoana amin'ny fotoana rehetra:

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;

Amin'ireo toe-javatra voalaza etsy ambony ireo dia hisy ny kolikoly voarakitra raha toa ka vita soa aman-tsara ny fifampiraharahana roa. Na dia tsy nisy vakiteny maloto na fahaverezan'ny angon-drakitra aza, dia voahitsakitsaka ny fahamarinan'ny angon-drakitra: ankehitriny dia olona roa no raisina an-telefaona amin'ny fotoana iray ihany.

Afaka manampy amin'ny fanafoanana ny kolikoly amin'ny fanoratana ny fitokanana serializable, ny fandrafetana skéma, na ny famerana ny angon-drakitra. Ny mpamorona dia tokony ho afaka hamantatra ny anomaliana toy izany mandritra ny fampandrosoana mba hisorohana azy ireo amin'ny famokarana. Amin'izay fotoana izay ihany koa, sarotra be ny mikaroka ny fanodikodinana firaketana ao amin'ny fototry ny code. Indrindra amin'ny rafitra lehibe, rehefa samy tompon'andraikitra amin'ny fanatanterahana asa mifototra amin'ny latabatra mitovy ny ekipan'ny fampandrosoana samihafa ary tsy mifanaraka amin'ny antsipiriany momba ny fidirana data.

Ny angon-drakitra sy ny mpampiasa dia tsy mitovy hevitra foana amin'izay tokony hatao

Ny iray amin'ireo singa fototra amin'ny angon-drakitra dia ny antoka amin'ny baikon'ny famonoana, saingy io baiko io dia mety tsy mangarahara amin'ny mpamorona rindrambaiko. Ny angon-drakitra dia manatanteraka ny fifampiraharahana amin'ny filaharana azony, fa tsy amin'ny baiko kasain'ny mpandrindra. Sarotra ny maminavina ny filaharan'ny fifampiraharahana, indrindra amin'ny rafitra parallèle be entana.

Mandritra ny fampandrosoana, indrindra rehefa miasa miaraka amin'ny tranomboky tsy manakana, ny fomba ratsy sy ny famakian-teny ambany dia mety hahatonga ny mpampiasa hino fa ny fifampiraharahana dia tanterahina misesy, raha ny marina dia afaka tonga ao amin'ny tahiry amin'ny filaharana rehetra.

Raha vao jerena, ao amin'ny programa etsy ambany, T1 sy T2 dia antsoina hoe sequentially, fa raha ireo asa ireo dia tsy manakana ary avy hatrany dia mamerina ny valiny amin'ny endrika. fampanantenana, avy eo ny filaharan'ny antso dia hofaritana amin'ny fotoana nidiran'izy ireo ny angon-drakitra:

result1 = T1() // tena vokatra dia fampanantenana
vokatra2 = T2()

Raha ilaina ny atomika (izany hoe, na ny asa rehetra dia tsy maintsy vita na ajanona) ary ny filaharana, dia tsy maintsy atao ao anatin'ny fifampiraharahana tokana ny asa T1 sy T2.

Ny sharding amin'ny ambaratonga fampiharana dia azo afindra ivelan'ny fampiharana

Sharding dia fomba fisarahana marindrano ny angon-drakitra. Ny angon-drakitra sasany dia afaka mizara ho azy ny angona mitsivalana, raha ny hafa kosa tsy afaka, na tsy dia mahay loatra. Rehefa afaka maminavina tsara ny fomba hidirana amin'ny angon-drakitra ny architects/developers dia afaka mamorona fizarazarana marindrano amin'ny habaka mpampiasa izy ireo fa tsy manolotra ity asa ity amin'ny angon-drakitra. Ity dingana ity dia antsoina hoe "application-level sharding" (Sharding ambaratonga fampiharana).

Mampalahelo fa matetika io anarana io dia miteraka hevi-diso fa ny sharding dia miaina amin'ny serivisy fampiharana. Raha ny marina dia azo ampiharina ho sosona misaraka eo anoloan'ny angon-drakitra izany. Miankina amin'ny fitomboan'ny angona sy ny famerimberenan'ny schema, mety ho sarotra be ny fitakiana sharding. Ny paikady sasany dia mety hahazo tombony amin'ny fahafahana mamerina tsy mila mamerina ny lohamilina fampiharana.

Tokony ho fantatry ny mpandrindra bebe kokoa izany momba ny angon-drakitra
Ohatra iray amin'ny maritrano izay misaraka amin'ny serivisy sharding ny mpizara fampiharana

Ny famindrana sharding ho serivisy misaraka dia manitatra ny fahafahana mampiasa paikady sharding samihafa nefa tsy mila mamerina ny fampiharana. Vitess dia ohatra iray amin'ny rafitra sharding toy izany eo amin'ny ambaratonga fampiharana. Vitess dia manome sharding horizontaly ho an'ny MySQL ary ahafahan'ny mpanjifa mifandray aminy amin'ny alàlan'ny protocol MySQL. Ny rafitra dia mizara ny angon-drakitra amin'ny node MySQL samihafa izay tsy mahalala na inona na inona momba ny tsirairay.

Mety hampidi-doza ny autoincrement

AUTOINCREMENT dia fomba mahazatra hamokarana fanalahidy fototra. Matetika ny angona no ampiasaina ho mpamorona ID, ary ny angona dia misy tabilao natao hamoronana famantarana. Misy antony maromaro mahatonga ny famoronana fanalahidy fototra amin'ny fampiasana ny fampitomboana mandeha ho azy:

  • Ao amin'ny angon-drakitra zaraina, olana lehibe ny fampitomboana mandeha ho azy. Mba hamoronana ny ID dia ilaina ny hidin-trano manerantany. Azonao atao kosa ny mamorona UUID: tsy mila fifampiraharahana eo amin'ny nodes database samihafa izany. Ny fampitomboana ho azy miaraka amin'ny hidin-trano dia mety hitarika fifandirana ary hampihena be ny fahombiazan'ny fampidirana amin'ny toe-javatra zaraina. Ny DBMS sasany (ohatra, MySQL) dia mety mitaky fanamafisam-peo manokana sy fitandremana tsara kokoa mba handaminana tsara ny replication master-master. Ary mora ny manao fahadisoana rehefa configuring, izay hitarika ho amin'ny firaketana an-tsoratra tsy fahombiazana.
  • Ny angon-drakitra sasany dia manana algorithm fizarana mifototra amin'ny fanalahidy fototra. Ny ID mifanesy dia mety hitarika ho amin'ny toerana mafana tsy ampoizina sy hampitombo ny entana amin'ny fizarazarana sasany fa ny hafa kosa mijanona tsy miasa.
  • Ny fanalahidy fototra no fomba haingana indrindra hidirana andalana ao anaty angon-drakitra. Miaraka amin'ny fomba tsara kokoa hamantarana ny firaketana, ny ID misesy dia afaka mamadika ny tsanganana manan-danja indrindra amin'ny tabilao ho tsanganana tsy misy ilana azy feno sanda tsy misy dikany. Noho izany, isaky ny azo atao dia mifidiana fanalahidy fototra iray tsy manam-paharoa sy voajanahary manerantany (ohatra ny solonanarana).

Alohan'ny hanapahan-kevitra amin'ny fomba iray dia diniho ny fiantraikan'ny ID sy UUID mitombo ho azy amin'ny fanondroana, fisarahana ary ny sharding.

Ny angon-drakitra stale dia mety ilaina ary tsy mitaky fanidiana

Multiversion Concurrency Control (MVCC) dia mampihatra ny maro amin'ireo fepetra tsy miovaova izay noresahina fohy teo ambony. Ny angon-drakitra sasany (ohatra, Postgres, Spanner) dia mampiasa MVCC mba "mamahana" ny fifampiraharahana miaraka amin'ny snapshots — dikan-teny tranainy kokoa amin'ny angona. Ny fifampiraharahana snapshot koa dia azo atao serialised mba hiantohana ny tsy fitoviana. Rehefa mamaky avy amin'ny snapshot taloha dia vakiana ny angona lany andro.

Mety hahasoa ny famakiana angon-drakitra somary latsa-danja, ohatra, rehefa mamorona analyse avy amin'ny angona na mikajy ny sanda mitambatra.

Ny tombony voalohany amin'ny fiasana amin'ny angon-drakitra lova dia ny fahatarana ambany (indrindra raha mizara amin'ny jeografia samihafa ny angona). Ny faharoa dia hoe tsy misy hidin-trano ny fifanakalozana vakiana fotsiny. Tombontsoa lehibe ho an'ny rindranasa mamaky be dia be izany, raha mbola afaka mitantana angon-drakitra simba.

Tokony ho fantatry ny mpandrindra bebe kokoa izany momba ny angon-drakitra
Ny lohamilina fampiharana dia mamaky angon-drakitra avy amin'ny kopia eo an-toerana izay 5 segondra lany daty, na dia misy aza ny dikan-teny farany any amin'ny ilany ampitan'ny Ranomasimbe Pasifika.

Ny DBMS dia manadio ho azy ireo dikan-teny taloha ary, amin'ny toe-javatra sasany, dia mamela anao hanao izany amin'ny fangatahana. Ohatra, ny Postgres dia mamela ny mpampiasa hanao VACUUM amin'ny fangatahana, ary koa manao tsindraindray izany fandidiana ho azy. Mitantana mpanangom-pako i Spanner mba hanesorana ireo sary efa mihoatra ny adiny iray.

Ny loharanon'ny fotoana rehetra dia iharan'ny fanodinkodinana

Ny tsiambaratelo tsara indrindra amin'ny siansa informatika dia ny hoe mandainga ny API rehetra amin'ny fotoana. Raha ny marina, ny milinantsika dia tsy mahafantatra ny fotoana marina. Ny solosaina dia misy kristaly quartz izay miteraka vibration izay ampiasaina hitazomana ny fotoana. Na izany aza, tsy dia marina loatra izy ireo ary mety ho mialoha / tara amin'ny fotoana marina. Ny fiovana dia mety hahatratra 20 segondra isan'andro. Noho izany, ny fotoana ao amin'ny ordinaterantsika dia tsy maintsy ampifandraisina amin'ny tambajotra iray.

Ny mpizara NTP dia ampiasaina amin'ny fampifanarahana, fa ny fizotry ny fampifanarahana dia iharan'ny fahatarana amin'ny tambajotra. Na ny fampifanarahana amin'ny mpizara NTP ao amin'ny foibe angon-drakitra mitovy aza dia mitaky fotoana kely. Mazava fa ny fiaraha-miasa amin'ny mpizara NTP ho an'ny daholobe dia mety hitarika ho amin'ny fanodikodinana bebe kokoa.

Ny famantaranandro atomika sy ny GPS mitovy aminy dia tsara kokoa amin'ny famaritana ny fotoana ankehitriny, saingy lafo izy ireo ary mitaky fanamboarana sarotra, ka tsy azo apetraka amin'ny fiara rehetra. Noho izany, ny ivotoerana data dia mampiasa fomba fiasa mitongilana. Ny famantaranandro atomika sy/na GPS dia mampiseho ny ora marina, ary avy eo alefa amin'ny milina hafa amin'ny alàlan'ny lohamilina faharoa. Midika izany fa ny milina tsirairay dia hiaina offset manokana amin'ny fotoana marina.

Miharatsy ny toe-draharaha noho ny fisian'ny fampiharana sy angon-drakitra matetika amin'ny milina samihafa (raha tsy any amin'ny foibe data samihafa). Noho izany, ny fotoana dia tsy hitovy amin'ny DB nodes zaraina amin'ny milina samihafa. Ho hafa ihany koa amin'ny lohamilina fampiharana.

Google TrueTime dia maka fomba hafa tanteraka. Ny ankamaroan'ny olona dia mino fa ny fandrosoan'i Google amin'io lalana io dia hazavain'ny fiovan'ny toetr'andro amin'ny famantaranandro atomika sy GPS, saingy ampahany amin'ny sary lehibe ihany izany. Toy izao ny fiasan'ny TrueTime:

  • TrueTime dia mampiasa loharano roa samy hafa: GPS sy famantaranandro atomika. Ireo famantaranandro ireo dia manana fomba tsy misy ifandraisany. [Jereo ny pejy 5 raha mila fanazavana fanampiny eto - eo ho eo. transl.), noho izany dia mampitombo ny fahatokisana ny fampiasana azy ireo.
  • TrueTime dia manana API tsy mahazatra. Mamerina ny fotoana ho elanelam-potoana miaraka amin'ny hadisoana fandrefesana sy tsy fahatokisana napetraka ao anatiny. Ny fotoana tena izy dia eo anelanelan'ny sisin-tany ambony sy ambany amin'ny elanelana. Spanner, angon-drakitra nozarain'i Google, dia miandry fotsiny mandra-pahatongan'ny filazàna fa tsy mifanojo ny fotoana ankehitriny. Ity fomba ity dia mampiditra fahatarana sasany ao amin'ny rafitra, indrindra raha avo lenta ny tsy fahazoana antoka amin'ny tompony, fa miantoka ny fahamarinany na dia amin'ny toe-javatra miparitaka maneran-tany aza.

Tokony ho fantatry ny mpandrindra bebe kokoa izany momba ny angon-drakitra
Ny singa Spanner dia mampiasa TrueTime, izay iverenan'ny TT.now() ny elanelam-potoana, noho izany dia matory fotsiny ny Spanner mandra-pahatongan'ny fotoana ahafahany matoky fa nandalo teboka iray ny fotoana ankehitriny.

Ny fihenan'ny fahitsiana amin'ny famaritana ny fotoana ankehitriny dia midika fampitomboana ny faharetan'ny fiasan'ny Spanner sy ny fihenan'ny fampisehoana. Izany no antony maha-zava-dehibe ny fitazonana ny fahamendrehana avo indrindra na dia tsy azo atao aza ny mahazo famantaranandro marina.

Misy dikany maro ny fahatarana

Raha manontany manam-pahaizana am-polony momba ny atao hoe fahatarana ianao, dia mety ho samy hafa ny valiny. Ao amin'ny DBMS latency dia matetika antsoina hoe "database latency" ary tsy mitovy amin'ny zavatra hitan'ny mpanjifa. Ny zava-misy dia ny mpanjifa dia mandinika ny fitambaran'ny fahataran'ny tambajotra sy ny fahatarana ny angon-drakitra. Ny fahaizana mitoka-monina ny karazana latency dia tena ilaina rehefa debugging olana mitombo. Rehefa manangona sy mampiseho metrika, dia miezaha foana mijery ireo karazany roa ireo.

Ny fepetra takian'ny fanatanterahana dia tokony ho tombanana ho an'ny fifampiraharahana manokana

Indraindray ny toetran'ny fampisehoana DBMS sy ny fetrany dia voafaritra amin'ny resaka fanoratana/vakiana sy fahatarana. Izany dia manome topimaso ankapobeny momba ny mari-pamantarana rafitra fototra, fa rehefa manombana ny fahombiazan'ny DBMS vaovao, ny fomba fijery feno kokoa dia ny fanombanana misaraka ny asa fanakianana (ho an'ny fanontaniana tsirairay sy/na ny fifampiraharahana). Ohatra:

  • Soraty ny fidirana sy ny fahatarana rehefa mampiditra andalana vaovao ao amin'ny tabilao X (miaraka amin'ny laharana 50 tapitrisa) miaraka amin'ny teritery voafaritra sy padding andalana amin'ny tabilao mifandraika.
  • Fahatarana amin'ny fanehoana ny naman'ny naman'ny mpampiasa iray rehefa 500 ny isan'ny namana.
  • Faharetana amin'ny fakana ireo fidirana 100 ambony indrindra amin'ny tantaran'ny mpampiasa iray rehefa manaraka mpampiasa 500 hafa miaraka amin'ny fidirana X isan'ora ny mpampiasa.

Ny fanombanana sy ny fanandramana dia mety ahitana tranga manan-danja toy izany mandra-patoky anao fa mahafeno ny fepetra takian'ny asa ny angon-drakitra. Ny fitsipi-pifehezana mitovy amin'izany koa dia mandray an'io fahatapahan-kevitra io rehefa manangona ny metrikan'ny fahatarana sy ny famaritana ny SLO.

Tandremo ny kardinaly ambony rehefa manangona metrika ho an'ny fandidiana tsirairay. Mampiasà diary, fanangonana hetsika, na trace zaraina mba hahazoana angona debugging mahery vaika. Ao amin'ny lahatsoratra "Te hanala ny Latency?» azonao atao ny mahafantatra ny fomba fanemorana ny debugging.

Mety hampidi-doza ny fifampiraharahana voatokana

Tsy ny DBMS rehetra no manohana ny fifanakalozam-bola, fa rehefa manao izany izy ireo dia mety hiteraka fahadisoana tsy ampoizina izay tsy mora hita foana (izany hoe, tokony ho hita fa misy karazana anomaly).

Azonao atao ny misoroka ny fampiasana ireo fifampiraharahana amin'ny alàlan'ny tranomboky mpanjifa izay afaka mamantatra sy mandingana azy ireo. Raha toa ka tsy azo ariana ny fifampiraharahana misy akany, mitandrema manokana amin'ny fampiharana azy ireo mba hisorohana ny toe-javatra tsy ampoizina izay mahatonga ny fifampiraharahana vita amin'ny fomba tsy nahy noho ny fisian'ny akany.

Mety hitarika amin'ny fifampiraharahana tsy ampoizina tsy ampoizina ny fifampiraharahana amin'ny soson-kevitra samihafa, ary amin'ny fomba fijery mahavaky ny kaody dia mety ho sarotra ny mahatakatra ny fikasan'ny mpanoratra. Jereo ity programa manaraka ity:

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

Inona no ho vokatry ny kaody etsy ambony? Haverina ve ny fifampiraharahana roa, sa ny anatiny fotsiny? Inona no mitranga raha miantehitra amin'ny tranomboky maro sosona izay mandrakotra ny famoronana fifampiraharahana ho antsika isika? Ho afaka hamantatra sy hanatsara ny tranga toy izany ve isika?

Alaivo sary an-tsaina ny sosona angona misy asa maro (oh. newAccount) dia efa ampiharina amin'ny fifampiraharahany manokana. Inona no mitranga raha mitantana azy ireo ianao ao anatin'ny lojika ara-barotra avo lenta izay mandeha ao anatin'ny fifampiraharahany manokana? Inona no mety ho fitokana-monina sy tsy miovaova amin'ity tranga ity?

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

Raha tokony hitady valiny amin'ireo fanontaniana tsy misy farany toy izany, dia tsara kokoa ny misoroka ny fifampiraharahana. Rehefa dinihina tokoa, ny soson'ny angonao dia afaka manao asa avo lenta mora foana nefa tsy mamorona ny fifampiraharahany manokana. Fanampin'izany, ny lojikan'ny fandraharahana mihitsy dia afaka manomboka fifampiraharahana, manao asa momba izany, manao na manafoana ny fifampiraharahana.

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.

Tsy tokony hifamatotra amin'ny fanjakana fampiharana ny fifampiraharahana

Indraindray dia maka fanahy ny mampiasa fanjakana fampiharana amin'ny fifampiraharahana mba hanovana ny soatoavina sasany na ny masontsivana fangatahana fangatahana. Ny nuance manan-danja tokony hodinihina dia ny sehatra fampiharana marina. Matetika ny mpanjifa dia manomboka ny fifampiraharahana rehefa misy olana amin'ny tambajotra. Raha miankina amin'ny fanjakana ovain'ny dingana hafa ny fifampiraharahana, dia mety hisafidy ny sanda diso miankina amin'ny mety hisian'ny hazakazaka data. Ny fifampiraharahana dia tsy maintsy mandinika ny loza mety hitranga amin'ny toe-javatra hazakazaka angon-drakitra ao amin'ny fampiharana.

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

Ny fifampiraharahana etsy ambony dia hampitombo ny laharan'ny filaharana isaky ny tanterahana izany, na inona na inona vokatra farany. Raha tsy nahomby ny commit noho ny olan'ny tambajotra, dia hotanterahina miaraka amin'ny laharana filaharana hafa ny fangatahana rehefa manandrana indray ianao.

Afaka milaza zavatra betsaka aminao momba ny angon-drakitra ny mpandinika fanontaniana

Ny mpandrindra fanontaniana dia mamaritra ny fomba hanatanterahana ny fangatahana ao anaty angon-drakitra. Manadihady ny fangatahana ihany koa izy ireo ary manatsara azy ireo alohan'ny handefasana azy. Tsy afaka manome tombantombana azo atao afa-tsy amin'ny famantarana eo am-pelatanany ny mpanentana. Ohatra, inona no fomba fikarohana tsara indrindra ho an'ity fanontaniana manaraka ity?

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

Ny vokatra dia azo alaina amin'ny fomba roa:

  • Fikarohana latabatra feno: Azonao jerena ny fidirana tsirairay ao amin'ny tabilao ary mamerina lahatsoratra miaraka amin'ny anaran'ny mpanoratra mifanandrify, ary manafatra azy ireo avy eo.
  • Fanondroana scan: Azonao atao ny mampiasa fanondroana hahitana ID mifanandrify, alao ireo andalana ireo, ary manafatra azy ireo avy eo.

Ny asan'ny mpandinika fanontaniana dia ny mamaritra izay paikadin'ny tsara indrindra. Tsara ny mandinika fa voafetra ihany ny fahafaha-milaza mialoha ny mpandinika fanontaniana. Mety hiteraka fanapahan-kevitra ratsy izany. Ny DBA na ny mpamorona dia afaka mampiasa azy ireo hamantarana sy hanitsiana ireo fanontaniana tsy mahomby. Ny dikan-teny vaovao amin'ny DBMS dia afaka manitsy ny drafitry ny fangatahana, ary ny fizahana tena dia afaka manampy amin'ny fanavaozana ny angon-drakitra raha toa ka miteraka olana amin'ny asa ny dikan-teny vaovao. Ny diarin'ny fangatahana miadana, ny tatitra momba ny olana momba ny fahatarana, na ny antontan'isa momba ny fotoana hanatanterahana dia afaka manampy hamantatra ireo fanontaniana mila fanatsarana.

Mety hiharan'ny tabataba ny metrika sasany asehon'ny mpandinika fanontaniana (indrindra rehefa manombana ny fahatarana na ny fotoana CPU). Fanampiana tsara ho an'ny mpandrindra dia fitaovana amin'ny fanaraha-maso sy fanaraha-maso ny lalan'ny famonoana. Izy ireo dia mamela anao hamantatra ny olana toy izany (indrisy, tsy ny DBMS rehetra no manome fitaovana toy izany).

Sarotra ny fifindra-monina an-tserasera saingy azo atao

Ny fifindra-monina an-tserasera, ny fifindra-monina mivantana, na ny fifindra-monina amin'ny fotoana tena izy dia midika hoe mifindra avy amin'ny angon-drakitra iray mankany amin'ny iray hafa tsy misy fiatoana na kolikoly angona. Mora kokoa ny fifindra-monina mivantana raha ao anatin'ny DBMS/motera iray ihany no misy ny fifindrana. Lasa sarotra kokoa ny toe-javatra rehefa ilaina ny mifindra amin'ny DBMS vaovao miaraka amin'ny fepetra takian'ny schema sy ny fampisehoana.

Misy modely fifindra-monina samihafa amin'ny Internet. Ity ny iray amin'izy ireo:

  • Alefaso ny fidirana roa amin'ny angona roa. Ny angon-drakitra vaovao amin'ity dingana ity dia tsy manana ny angona rehetra, fa ny angona farany ihany no manaiky. Rehefa azonao antoka izany dia afaka mandroso amin'ny dingana manaraka ianao.
  • Alefaso ny famakiana avy amin'ny tahiry roa.
  • Ampifanaraho amin'ny rafitra vaovao ny famakiana sy fanoratana voalohany indrindra.
  • Atsaharo ny fanoratana amin'ny angona taloha raha mbola manohy mamaky angona avy aminy. Amin'ity dingana ity, ny angona vaovao dia mbola tsy misy angona sasany. Tokony hadika avy amin'ny angon-drakitra taloha izy ireo.
  • Ny angon-drakitra taloha dia vakiana fotsiny. Adikao ny angona tsy hita avy amin'ny angona taloha mankany amin'ny vaovao. Rehefa vita ny fifindra-monina, ampidio ny lalana mankany amin'ny angon-drakitra vaovao, ary atsaharo ny taloha ary vonoy amin'ny rafitra.

Raha mila fanazavana fanampiny dia manoro hevitra aho ny hifandray lahatsoratra, izay manazava ny paikadin'ny fifindran'i Stripe mifototra amin'ity maodely ity.

Ny fitomboana lehibe amin'ny angon-drakitra dia mitaky fitomboan'ny tsy ampoizina

Ny fitomboan'ny angon-drakitra dia miteraka olana tsy ampoizina mifandraika amin'ny habeny. Arakaraky ny hahafantarantsika ny firafitry ny angon-drakitra iray, no hahafantarantsika tsara kokoa ny habeny. Na izany aza, ny fotoana sasany dia mbola tsy hita mialoha.
Rehefa mitombo ny fototra dia mety ho lany andro ny vinavina sy ny andrasana teo aloha momba ny habetsaky ny angon-drakitra sy ny fitakiana bandwidth. Izany dia rehefa mipoitra ny fanontaniana momba ny fanavaozana ny famolavolana lehibe, ny fanatsarana ny fampandehanana goavana, ny famerenana ny fametrahana, na ny fifindra-monina any amin'ny DBMS hafa mba hisorohana ny olana mety hitranga.

Saingy aza mieritreritra fa ny fahalalana tsara momba ny rafitra anatiny amin'ny angon-drakitra misy no hany zavatra ilaina. Ny kirany vaovao dia hitondra zava-baovao tsy fantatra. Ny teboka fanaintainana tsy ampoizina, ny fizarana angon-drakitra tsy mitongilana, ny bandwidth tsy ampoizina sy ny olana momba ny fitaovana, ny fifamoivoizana tsy mitsaha-mitombo ary ny fizarana tambajotra vaovao dia hanery anao handinika indray ny fomba fiasanao amin'ny angona, ny maodely data, ny modely fametrahana ary ny haben'ny angona.

...

Tamin'ny fotoana nanombohako nieritreritra ny hamoahana ity lahatsoratra ity dia efa nisy singa dimy hafa tao amin'ny lisitra voalohany nataoko. Tonga dia maro be hevitra vaovao momba ny zavatra hafa azo rakofana. Noho izany, ny lahatsoratra dia mikasika ny olana faran'izay kely miharihary izay mitaky fiheverana ambony indrindra. Na izany aza, tsy midika izany fa lany ny lohahevitra ary tsy hiverina amin'ny fitaovana ho avy aho ary tsy hanova ny ankehitriny.

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment