Messenger database (bahin 1): pagdesinyo sa base framework
Giunsa nimo paghubad ang mga kinahanglanon sa negosyo sa piho nga istruktura sa datos gamit ang panig-ingnan sa pagdesinyo sa usa ka database sa messenger gikan sa wala.
Ang among base dili ingon kadako ug maapod-apod, sama sa VKontakte o Badoo, apan "mao nga kini", apan kini maayo - functional, paspas ug angay sa usa ka server PostgreSQL - aron mahimo nimong i-deploy ang usa ka lahi nga pananglitan sa serbisyo sa usa ka lugar sa kilid, pananglitan.
Busa, dili kami magtandog sa mga isyu sa sharding, replication ug geo-distributed nga mga sistema, apan mag-focus sa mga solusyon sa sirkito sulod sa database.
Lakang 1: Pipila ka mga detalye sa negosyo
Dili kami magdesinyo sa among mensahe nga abstract, apan i-integrate kini sa palibot corporate social network. Sa ato pa, ang atong mga tawo dili "nagsinabtanay lang," apan nakigsulti sa usag usa sa konteksto sa pagsulbad sa pipila nga mga problema sa negosyo.
Ug unsa ang mga buluhaton sa usa ka negosyo?.. Atong tan-awon ang panig-ingnan ni Vasily, ang pangulo sa departamento sa pagpauswag.
"Nikolai, alang niini nga buluhaton kinahanglan namon ang usa ka patch karon!"
Kini nagpasabot nga ang mga sulat mahimong ipahigayon sa konteksto sa pipila dokumento.
βKolya, moadto ka ba sa Dota karong gabii?β
Sa ato pa, bisan ang usa ka parisan sa mga interlocutors mahimo nga mag-istoryahanay nga dungan sa lain-laing mga topiko.
βPeter, Nikolay, tan-awa sa attachment ang listahan sa presyo sa bag-ong server.β
Busa, mahimong adunay usa ka mensahe pipila ka nakadawat. Sa kini nga kaso, ang mensahe mahimong adunay sulod Gilakip nga mga file.
βSemyon, tan-awa sab.β
Ug kinahanglan adunay usa ka higayon sa pagsulod sa kasamtangan nga mga sulat pagdapit ug bag-ong membro.
Atong hisgotan kini nga listahan sa "klaro" nga mga panginahanglan sa pagkakaron.
Kung wala'y pagsabut sa gipadapat nga mga detalye sa problema ug ang mga limitasyon nga gihatag niini, disenyo epektibo database schema sa pagsulbad niini mao ang hapit imposible.
Lakang 2: Minimal Logic Circuit
Sa pagkakaron, ang tanan nagtrabaho nga susama kaayo sa email nga sulat - usa ka tradisyonal nga himan sa negosyo. Oo, "algorithmically" daghang mga problema sa negosyo parehas sa usag usa, busa ang mga himan alang sa pagsulbad niini magkapareho sa istruktura.
Atong ayuhon ang nakuha na nga lohikal nga diagram sa mga relasyon sa mga entidad. Aron mas dali masabtan ang among modelo, among gamiton ang labing karaan nga kapilian sa pagpakita Mga modelo sa ER walay mga komplikasyon sa UML o IDEF notation:
Sa among pananglitan, ang tawo, dokumento ug binary nga "lawas" sa file mga "eksternal" nga mga entidad nga naglungtad nga independente nga wala ang among serbisyo. Busa, lantawon ra nato sila sa umaabot isip pipila ka mga link nga "sa usa ka dapit" sa UUID.
Pagdrowing mga diagram nga yano kutob sa mahimo - kadaghanan sa mga tawo nga imong ipakita kanila dili eksperto sa pagbasa sa UML/IDEF. Apan siguroha ang pagdrowing.
Lakang 3: Pag-sketch sa istruktura sa lamesa
Mahitungod sa mga ngalan sa lamesa ug umaAng "Russian" nga mga ngalan sa mga uma ug mga lamesa mahimong pagtratar sa lahi, apan kini usa ka butang sa lami. Tungod kay ang dinhi sa Tensor walay langyaw nga developers, ug PostgreSQL nagtugot kanato sa paghatag og mga ngalan bisan sa hieroglyphs, kon sila gilakip sa mga kinutlo, unya mas gusto namo nga hinganlan ang mga butang nga dili klaro ug klaro aron walay mga kalainan.
Tungod kay daghang mga tawo ang nagsulat kanamo sa usa ka higayon, ang pipila kanila mahimo pa gani nga mobuhat niini offline, unya ang pinakasimple nga kapilian mao gamita ang mga UUID isip mga identifier dili lamang alang sa mga eksternal nga entidad, apan alang usab sa tanan nga mga butang sa sulod sa among serbisyo. Dugang pa, mahimo silang mamugna bisan sa bahin sa kliyente - makatabang kini kanamo nga suportahan ang pagpadala sa mga mensahe kung ang database temporaryo nga wala magamit, ug ang posibilidad sa usa ka pagbangga gamay kaayo.
Ang draft nga istraktura sa lamesa sa among database mahimong ingon niini: Mga lamesa : RU
Ang pinakasimple nga butang kung naghulagway sa usa ka format mao ang pagsugod sa "pagtangtang" sa koneksyon graph gikan sa mga lamesa nga wala gi-refer sa ilang kaugalingon sa walay bisan kinsa.
Lakang 4: Pangitaa ang dili klaro nga mga panginahanglan
Mao ra kana, nagdisenyo kami usa ka database diin mahimo nimong isulat ang hingpit ug sa bisan unsa basaha.
Ibutang nato ang atong kaugalingon sa posisyon sa tiggamit sa atong serbisyo - unsay gusto natong buhaton niini?
Katapusan nga mga mensahe
kini kronolohikal nga pagkahan-ay usa ka rehistro sa "akong" mga mensahe base sa lain-laing mga criteria. Diin ako usa sa mga nakadawat, diin ako ang tagsulat, diin sila misulat kanako ug ako wala motubag, diin sila wala motubag kanako, ...
Mga partisipante sa sulat
Kinsa man ang nag-apil niining taas, taas nga chat?
Ang among istruktura nagtugot kanamo sa pagsulbad sa duha niini nga mga problema "sa kinatibuk-an," apan dili dayon. Ang problema mao nga alang sa paghan-ay sulod sa unang buluhaton dili makahimo sa index, angay alang sa matag usa sa mga partisipante (ug kinahanglan nimong kuhaon ang tanan nga mga rekord), ug aron masulbad ang ikaduha nga kinahanglan nimo kuhaa ang tanan nga mga mensahe sa niini nga hilisgutan.
Ang wala tuyoa nga mga buluhaton sa user mahimong magbutang ug bold krus sa produktibidad.
Lakang 5: Smart Denormalization
Ang duha sa among mga problema masulbad pinaagi sa dugang nga mga lamesa diin among buhaton duplicate nga bahin sa datos, gikinahanglan aron maporma sa kanila ang mga indeks nga angay alang sa atong mga buluhaton.
Dinhi among gipadapat ang duha ka kasagarang mga pamaagi nga gigamit sa paghimo og mga auxiliary table:
Pagpadaghan sa mga rekord
Gamit ang usa ka inisyal nga rekord sa mensahe, naghimo kami og daghang mga follow-up nga mga rekord sa lain-laing mga matang sa mga rehistro alang sa lain-laing mga tag-iya - alang sa nagpadala ug alang sa nakadawat. Apan ang matag usa sa mga rehistro karon nahulog sa indeks - pagkahuman, sa kasagaran nga kaso, gusto namon nga makita ra ang una nga panid.
Talagsaon nga mga rekord
Sa matag higayon nga magpadala ka usa ka mensahe sulod sa usa ka piho nga hilisgutan, igo na aron masusi kung ang ingon nga entry naglungtad na. Kung dili, idugang kini sa among "diksyonaryo".
Sa sunod nga bahin sa artikulo atong hisgotan pagpatuman sa partitioning sa istruktura sa among database.