Bunachar sonraí Messenger (cuid 1): dearadh an bhunchreat
Conas is féidir leat riachtanais ghnó a aistriú go struchtúir sonraí ar leith ag baint úsáide as an sampla de dhearadh bunachar sonraí teachtairí ón tús.
Ní bheidh ár mbonn chomh mór agus a dháileadh, cosúil le Vkontakte nó Badoo, ach "ionas go raibh", ach bhí sé go maith - feidhmiúil, tapa agus oiriúnach ar fhreastalaí amháin PostgreSQL - ionas gur féidir leat sampla ar leith den tseirbhís a imscaradh áit éigin ar an taobh, mar shampla.
Mar sin, ní thabharfaimid aird ar na saincheisteanna a bhaineann le bearrtha, macasamhlú agus córais geo-dháilte, ach díreoimid ar réitigh chiorcaid laistigh den bhunachar sonraí.
Céim 1: Roinnt sonraí gnó
Ní dhearfaimid ár dteachtaireachtaí go teibí, ach déanfaimid iad a chomhtháthú leis an gcomhshaol líonra sóisialta corparáideach. Is é sin le rá, ní “chomhfhreagraíonn ár ndaoine amháin,” ach déanann siad cumarsáid lena chéile i gcomhthéacs fadhbanna áirithe gnó a réiteach.
Agus cad iad na cúraimí atá ar ghnó?.. Breathnaímid ar shampla Vasily, ceann na roinne forbartha.
“Nikolai, teastaíonn paiste uainn inniu don tasc seo!”
Ciallaíonn sé seo gur féidir comhfhreagras a dhéanamh i gcomhthéacs roinnt doiciméad.
“Kolya, an bhfuil tú ag dul go Dota tráthnóna inniu?”
Is é sin, is féidir fiú péire idirghabhálaithe amháin cumarsáid a dhéanamh go comhuaineach ar ábhair éagsúla.
“Féach Peadar, a Nikolay, sa cheangaltán don liosta praghsanna don fhreastalaí nua.”
Mar sin, is féidir teachtaireacht amháin a bheith acu roinnt faighteoirí. Sa chás seo, d'fhéadfadh go mbeadh an teachtaireacht Comhaid ceangailte.
"Semyon, féach freisin."
Agus ba cheart go mbeadh deis ann dul i mbun comhfhreagrais atá ann cheana féin cuireadh a thabhairt do bhall nua.
A ligean ar dwell ar an liosta seo de "soiléir" riachtanais do anois.
Gan tuiscint a fháil ar shainiúlachtaí feidhme na faidhbe agus na teorainneacha a thugtar di, dearadh éifeachtach scéimre bunachar sonraí a réiteach go bhfuil sé beagnach dodhéanta.
Céim 2: Ciorcad Loighic Íosta
Go dtí seo, oibríonn gach rud amach an-chosúil le comhfhreagras ríomhphoist - uirlis ghnó traidisiúnta. Sea, tá go leor fadhbanna gnó “algartamacha” cosúil lena chéile, mar sin beidh na huirlisí chun iad a réiteach cosúil le struchtúr.
Déanaimis an léaráid loighciúil a fuarthas cheana féin de chaidrimh eintitis a shocrú. Chun ár múnla a dhéanamh níos éasca le tuiscint, úsáidfimid an rogha taispeána is primitive Samhlacha ER gan aimhréidh na nodaireachta UML nó IDEF:
Inár sampla, is aonáin “seachtracha” duine, doiciméad agus “comhlacht” dhénártha an chomhaid atá ann go neamhspleách gan ár seirbhís. Mar sin, beimid ag breathnú orthu sa todhchaí mar naisc “áit éigin” le UUID.
Tarraing léaráidí chomh simplí agus is féidir - ní saineolaithe ar léamh UML/IDEF iad formhór na ndaoine a thaispeánfaidh tú dóibh. Ach a bheith cinnte a tharraingt.
Céim 3: Sceitseáil an struchtúr tábla
Maidir le tábla agus ainmneacha páirceIs féidir déileáil go héagsúil le hainmneacha "Rúisis" páirceanna agus táblaí, ach is ábhar blas é seo. Toisc go bhfuil an anseo ag Tensor níl aon fhorbróirí eachtracha ann, agus ligeann PostgreSQL dúinn ainmneacha a thabhairt fiú i hieroglyphs, má tá siad faoi iamh i Sleachta, ansin is fearr linn rudaí a ainmniú go soiléir agus go soiléir ionas nach mbeidh aon neamhréireachtaí ann.
Ós rud é go scríobhann go leor daoine teachtaireachtaí chugainn ag an am céanna, féadfaidh cuid acu é seo a dhéanamh fiú as líne, ansin is é an rogha is simplí bain úsáid as UUIDanna mar aitheantóirí ní hamháin d'eintitis sheachtracha, ach freisin do gach réad laistigh dár seirbhís. Thairis sin, is féidir iad a ghiniúint fiú ar thaobh an chliaint - cabhróidh sé seo linn tacú le teachtaireachtaí a sheoladh nuair nach bhfuil an bunachar sonraí ar fáil go sealadach, agus go bhfuil an dóchúlacht go dtarlóidh imbhualadh thar a bheith íseal.
Beidh cuma mar seo ar an dréachtstruchtúr tábla inár mbunachar sonraí: Táblaí: RU
Is é an rud is simplí agus tú ag cur síos ar fhormáid ná tosú ar an ngraf naisc a “scaoileadh”. ó tháblaí nach ndéantar tagairt dóibh iad féin do dhuine ar bith.
Céim 4: Faigh amach riachtanais nach bhfuil soiléir
Sin é, tá bunachar sonraí deartha againn inar féidir leat scríobh go foirfe agus ar bhealach éigin le léamh.
Cuirimis muid féin i mbróga úsáideoir ár seirbhíse - cad ba mhaith linn a dhéanamh leis?
Teachtaireachtaí deireanacha
Tá sé curtha in eagar go croineolaíoch clár teachtaireachtaí “mo” bunaithe ar chritéir éagsúla. Áit a bhfuil mé ar dhuine de na faighteoirí, áit ar mise an t-údar, áit ar scríobh siad chugam agus nár fhreagair mé, áit nár fhreagair siad mé, ...
Rannpháirtithe an chomhfhreagrais
Cé atá rannpháirteach fiú sa chomhrá fada fada seo?
Ligeann ár struchtúr dúinn an dá fhadhb seo a réiteach “go ginearálta,” ach ní go tapa. Is í an fhadhb atá ann le haghaidh sórtáil laistigh den chéad tasc in ann innéacs a chruthú, oiriúnach do gach ceann de na rannpháirtithe (agus beidh ort na taifid go léir a bhaint as), agus an dara ceann a theastaíonn uait a réiteach sliocht gach teachtaireacht ar an ábhar seo.
Seans go gcuirfí trom ar thascanna úsáideora neamhbheartaithe cros ar tháirgiúlacht.
Céim 5: Denormalization Cliste
Déanfar an dá fhadhb atá againn a réiteach le táblaí breise ina ndéanfaimid cuid de na sonraí a dhúbailt, is gá chun innéacsanna oiriúnacha dár dtascanna a fhoirmiú orthu.
Anseo tá dhá chur chuige tipiciúil curtha i bhfeidhm againn a úsáidtear agus táblaí cúnta á gcruthú:
Taifid a iolrú
Ag baint úsáide as taifead teachtaireachta tosaigh amháin, cruthaímid roinnt taifead leantacha i gcineálacha éagsúla clár d'úinéirí éagsúla - don seoltóir agus don fhaighteoir araon. Ach titeann gach ceann de na cláir ar an innéacs anois - tar éis an tsaoil, i gcás tipiciúil, beidh muid ag iarraidh a fheiceáil ach an chéad leathanach.
Taifid uathúla
Gach uair a sheolann tú teachtaireacht laistigh d’ábhar ar leith, is leor a sheiceáil an bhfuil iontráil den sórt sin ann cheana féin. Mura bhfuil, cuir lenár “bhfoclóir” é.