Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2Tús a chur leis - féach cuid 1.

3. Athróga struchtúir nuair a úsáidtear cruinneoga

Tá cásanna speisialta éagsúla ag struchtúr cosúil le crann ordaithe. Déanaimis machnamh orthu siúd a bhfuil luach praiticiúil acu agus muid ag obair le cuideachtaí domhanda.

3.1 Cás speisialta 1. Nód amháin gan brainsí


Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2Is féidir cruinneoga a úsáid ní hamháin mar eagar, ach freisin mar athróga rialta. Mar shampla, mar chuntar:

Set ^counter = 0  ; установка счётчика
Set id=$Increment(^counter) ;  атомарное инкрементирование

Sa chás seo, is féidir brainsí a bheith ag an domhanda, sa bhreis ar a bhrí. Ní chuireann duine acu an ceann eile as an áireamh.

3.2 Cás speisialta 2. Rinn amháin agus go leor brainsí

Go ginearálta, is bonn clasaiceach eochairluacha é seo. Agus má shábhálann muid tuple luachanna mar luach, gheobhaidh muid tábla an-gnáth le príomh-eochair.

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2

Chun tábla ar dhomhanda a chur i bhfeidhm, beidh orainn sraitheanna a ghiniúint sinn féin ó na luachanna colún, agus ansin iad a shábháil chuig an domhanda ag baint úsáide as an eochair phríomhúil. Le gur féidir an teaghrán a roinnt ina colúin arís agus tú ag léamh, is féidir leat úsáid a bhaint as:

  1. carachtair teorannaithe.
    Set ^t(id1) = "col11/col21/col31"
    Set ^t(id2) = "col12/col22/col32"
  2. scéim dhian ina bhfuil líon réamhshocraithe beart i ngach réimse. Mar a dhéantar i mbunachair shonraí choibhneasta.
  3. feidhm speisialta $LB (ar fáil i Taisce), a chruthaíonn teaghrán luachanna.
    Set ^t(id1) = $LB("col11", "col21", "col31")
    Set ^t(id2) = $LB("col12", "col22", "col32")

Is díol spéise é nach bhfuil sé deacair domhandaithe a úsáid chun rud éigin cosúil le hinnéacsanna tánaisteacha a dhéanamh i mbunachair shonraí choibhneasta. A ligean ar a dtugtar struchtúir den sórt sin innéacs dhomhanda. Is crann cúnta é innéacs domhanda le cuardach tapa a dhéanamh ar réimsí nach cuid d'eochair phríomha an phríomhdhomhanda. Chun é a líonadh agus é a úsáid, ní mór duit cód breise a scríobh.

Cruthaímid innéacs domhanda ar an gcéad cholún.

Set ^i("col11", id1) = 1
Set ^i("col12", id2) = 1

Anois, le cuardach tapa a dhéanamh ar fhaisnéis sa chéad cholún, ní mór dúinn breathnú ar an eolas domhanda ^i agus faigh na heochracha príomhúla (id) a fhreagraíonn do luach inmhianaithe an chéad cholúin.

Agus luach á chur isteach, is féidir linn cruinneluacha agus innéacsanna domhanda a chruthú láithreach do na réimsí riachtanacha. Agus ar mhaithe le hiontaofacht, déanaimis é a fhilleadh in idirbheart.

TSTART
Set ^t(id1) = $LB("col11", "col21", "col31")
Set ^i("col11", id1) = 1
TCOMMIT

Tá sonraí maidir le conas é a dhéanamh ar M táblaí ar dhomhanda, aithris ar innéacsanna tánaisteacha.

Oibreoidh táblaí den sórt sin chomh tapa agus a dhéantar i mbunachair shonraí traidisiúnta (nó níos tapúla fós) má scríobhtar in COS/M na feidhmeanna chun sraitheanna a chur isteach/a nuashonrú/a scriosadh agus má chuirtear le chéile iad.Sheiceáil mé an ráiteas seo le tástálacha ar an mórchóir INSERT agus SELECT isteach i dtábla dhá cholún amháin, lena n-áirítear úsáid a bhaint as orduithe TSTART agus TCOMMIT (idirbhearta).

Ní dhearna mé tástáil ar chásanna níos casta le rochtain chomhthráthach agus idirbhearta comhthreomhara.

Gan idirbhearta a úsáid, ba é an ráta ionsáite ná 778 ionsáite/soicind in aghaidh an mhilliúin luach.
Le 300 milliún luach - 422 ionsá / soicind.

Agus idirbhearta á n-úsáid - 572 ionsá / soicind le haghaidh ionsá 082M. Rinneadh na hoibríochtaí go léir ó chód M tiomsaithe.
Tá tiomántáin chrua rialta, ní SSD. RAID5 le Scríobh ar ais. Próiseálaí Phenom II 1100T.

Chun bunachar sonraí SQL a thástáil ar an mbealach céanna, ní mór duit nós imeachta stóráilte a scríobh a dhéanfaidh ionsá i lúb. Agus an modh seo á thástáil agam MySQL 5.5 (stóráil InnoDB), fuair mé uimhreacha nach mó ná ionsá 11K in aghaidh an tsoicind.
Sea, tá cuma níos casta ar chur i bhfeidhm táblaí ar dhomhanda ná ar bhunachair shonraí choibhneasta. Mar sin, tá rochtain SQL ag bunachair shonraí tionsclaíochta ar dhomhanda chun obair le sonraí tábla a shimpliú.

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2Go ginearálta, mura n-athróidh scéimre na sonraí go minic, níl an luas ionsáite ríthábhachtach agus is féidir an bunachar sonraí iomlán a léiriú go héasca i bhfoirm táblaí normalaithe, ansin tá sé níos éasca oibriú le SQL, ós rud é go soláthraíonn sé leibhéal astarraingthe níos airde. .

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2Sa chás áirithe seo bhí mé ag iarraidh é sin a thaispeáint is féidir le globals feidhmiú mar chruthaitheoir chun bunachair shonraí eile a chruthú. Cosúil le cóimeálaí inar féidir teangacha eile a scríobh. Seo samplaí de conas is féidir leat analógacha a chruthú ar dhomhanda eochair-luach, liostaí, tacair, táblaí, bunachair shonraí doiciméad-dhírithe.

Más gá duit bunachar sonraí neamhchaighdeánach de chineál éigin a chruthú gan mórán iarrachta, ba cheart duit breathnú i dtreo domhanda.

3.3 Cás speisialta 3. Crann dhá leibhéal, tá líon seasta brainsí ag gach nód den dara leibhéal

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2Is dócha gur mheas tú é: is cur i bhfeidhm eile é seo ar tháblaí ar dhomhanda. Déanaimis an cur i bhfeidhm seo a chur i gcomparáid leis an gceann roimhe seo.

Táblaí ar chrann dhá leibhéal vs. ar chrann aon-leibhéil.

CONS
Son

  1. Níos moille le cur isteach, ós rud é go gcaithfidh tú líon na nóid a shocrú comhionann le líon na gcolún.
  2. Tomhaltas spás diosca níos mó. Ós rud é go n-úsáideann innéacsanna domhanda (a thuigtear mar innéacsanna eagair) le hainmneacha colún spás diosca agus déantar iad a mhacasamhlú do gach ró.

  1. Rochtain níos tapúla ar luachanna na gcolún aonair, ós rud é nach gá an teaghrán a pharsáil. De réir mo thástálacha, tá sé 11,5% níos tapúla ar 2 cholún agus níos mó ar líon níos mó colúin.
  2. Scéimre sonraí a athrú níos éasca
  3. Cód níos soiléire

Conclúid: ní do gach duine. Ós rud é go bhfuil luas ar cheann de na príomhbhuntáistí a bhaineann le domhandaithe, is beag an tairbhe an cur i bhfeidhm seo a úsáid, mar is dócha nach bhfeidhmeoidh sé níos tapúla ná táblaí i mbunachair shonraí choibhneasta.

3.4 Cás ginearálta. Crainn agus crainn ordaithe

Oireann aon struchtúr sonraí is féidir a léiriú mar chrann go foirfe le struchtúir dhomhanda.

3.4.1 Réada a bhfuil ábhair acu

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2

Is é seo an réimse úsáide traidisiúnta na cruinne. Sa réimse leighis tá líon mór galair, cógais, comharthaí agus modhanna cóireála. Tá sé neamhréasúnach tábla a chruthú le milliún réimse do gach othar. Ina theannta sin, beidh 99% de na réimsí folamh.

Samhlaigh bunachar sonraí de tháblaí SQL: “othar” ~ 100 réimse, “Leigheas” - 000 réimsí, “Teiripí” - 100 réimsí, “Aimhréidh” - 000 réimsí, etc. agus mar sin de. Nó is féidir leat bunachar sonraí a chruthú ina bhfuil na mílte táblaí, gach ceann acu le haghaidh cineál sonrach othar (agus féadfaidh siad forluí!), cóireálacha, cógais, agus na mílte tábla eile le haghaidh naisc idir na táblaí seo.

Tá cruinneoga oiriúnach don leigheas, mar go gceadaíonn siad duit cur síos cruinn a chruthú do gach othar ar a stair leighis, ar theiripí éagsúla, agus ar ghníomhartha cógas, i bhfoirm crann, gan spás diosca breise a chur amú ar cholúin fholmha, mar a bheadh. bheith amhlaidh i gcás gaolmhar.

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2Ag baint úsáide as globals tá sé áisiúil bunachar sonraí a chruthú le sonraí faoi dhaoine, nuair a bhíonn sé tábhachtach uasmhéid faisnéise éagsúla faoin gcliant a charnadh agus a chórasú. Tá éileamh air seo i gcúrsaí leighis, baincéireachta, margaíochta, cartlannaithe agus réimsí eile

.
Ar ndóigh, in SQL is féidir leat freisin aithris a dhéanamh ar chrann le cúpla tábla (EAV, 1,2,3,4,5,6,7,8,9,10), áfach, tá sé seo i bhfad níos casta agus beidh sé níos moille. Go bunúsach, bheadh ​​ort cruinneachán a scríobh a oibríonn ar tháblaí agus an obair ar fad a cheilt le táblaí faoi shraith astarraingthe. Tá sé mícheart aithris a dhéanamh ar theicneolaíocht leibhéal níos ísle (domhanda) ag baint úsáide as teicneolaíocht ardleibhéil (SQL). Míchuí.

Ní rún ar bith é go dtógfaidh sé cuid mhaith ama an scéimre sonraí ar tháblaí ollmhóra a athrú (ALTER TABLE). Déanann MySQL, mar shampla, ALTER TABLE ADD|DÍOLÚ COLÚN trí fhaisnéis a chóipeáil go hiomlán ón sean tábla go dtí an tábla nua (innill tástálaithe MyISAM, InnoDB). Is féidir a chrochadh suas le bunachar sonraí oibre le billiúin taifead ar feadh laethanta, más rud é nach seachtain.

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2Ní chosnaíonn athrú ar an struchtúr sonraí má úsáidimid cruinneoga rud ar bith dúinn. Ag am ar bith is féidir linn aon airíonna nua a theastaíonn uainn a chur le réad ar bith, ag aon leibhéal den ordlathas. Is féidir athruithe a bhaineann le craobhacha a athainmniú sa chúlra ar bhunachar sonraí reatha.


Dá bhrí sin, nuair a thagann sé chun rudaí a stóráil le líon mór airíonna roghnacha, is rogha iontach é cruinneoga.

Thairis sin, lig dom a mheabhrú duit go bhfuil rochtain láithreach ar aon cheann de na hairíonna, ós rud é ar fud an domhain is crainn B iad gach cosán.

Go ginearálta, is cineál bunachar sonraí doiciméad-dhírithe iad bunachair shonraí dhomhanda agus a bhfuil ar a gcumas faisnéis ordlathach a stóráil. Mar sin, is féidir le bunachair shonraí doiciméad-dhírithe dul san iomaíocht le domhanda i réimse na taifid leighis a stóráil. Ach níl sé sách mar an gcéanna fósGlacaimis MongoDB le haghaidh comparáide. Sa bhfearann ​​seo cailleann sé do na cruinne ar na cúiseanna seo a leanas:

  1. Méid an doiciméid. Is é an t-aonad stórála ná téacs i bhformáid JSON (BSON níos cruinne) le huasmhéid de thart ar 16MB. Rinneadh an srian go sonrach ionas nach dtiocfaidh moill ar bhunachar sonraí JSON le linn parsála má tá doiciméad ollmhór JSON stóráilte ann agus ansin rochtain ag réimsí air. Ba cheart go mbeadh gach faisnéis faoin othar sa doiciméad seo. Tá a fhios againn go léir cé chomh tiubh is féidir le taifid othar a bheith. Cuireann uasmhéid cárta 16MB deireadh láithreach le hothair a bhfuil comhaid MRI, scanadh X-gha agus staidéir eile ar a gcárta galair. I mbrainse amháin den domhan is féidir ghigibheart agus teiraibítí faisnéise a bheith agat. I bprionsabal, is féidir linn deireadh a chur leis seo, ach leanfaidh mé ar aghaidh.
  2. Am comhfhiosachta/athrú/scriosadh maoine nua i gcairt an othair. Ní mór do bhunachar sonraí dá leithéid an léarscáil ar fad a léamh i gcuimhne (tá sé seo cuid mhór!), BSON a pharsáil, nód nua a chur leis/athrú/scrios, innéacsanna a nuashonrú, é a phacáil isteach i BSON, agus é a shábháil ar diosca. Ní gá do dhomhanda ach rochtain a fháil ar mhaoin shonrach agus í a ionramháil.
  3. Rochtain thapa ar mhaoin aonair. Le go leor maoine i ndoiciméad agus a struchtúr il-leibhéil, beidh rochtain ar airíonna aonair níos tapúla mar gheall ar an bhfíric gur crann B é gach cosán sa domhan. I BSON, caithfidh tú an doiciméad a pharsáil go líneach chun an t-airí atá ag teastáil a fháil.

3.3.2 Eagair chumannacha

Tagann eagair chomhthiomsaitheach (fiú le heagair neadaithe) go foirfe ar dhomhanda. Mar shampla, taispeánfar eagar den sórt sin ó PHP sa chéad phictiúr 3.3.1.

$a = array(
  "name" => "Vince Medvedev",
  "city" => "Moscow",
  "threatments" => array(
    "surgeries" => array("apedicectomy", "biopsy"),
    "radiation" => array("gamma", "x-rays"),
    "physiotherapy" => array("knee", "shoulder")
  )
);

3.3.3 Doiciméid ordlathacha: XML, JSON

Chomh maith leis sin a stóráil go héasca i globals. Is féidir é a leagan amach ar bhealaí éagsúla le haghaidh stórála.

XML
Is é an bealach is éasca chun XML a dhianscaoileadh ina dhomhanda ná tréithe clibeanna a stóráil i nóid. Agus má tá gá le rochtain tapa ar shaintréithe clibeanna, ansin is féidir linn iad a aistriú isteach i mbrainsí ar leith.

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2

<note id=5>
<to>Вася</to>
<from>Света</from>
<heading>Напоминание</heading>
<body>Позвони мне завтра!</body>
</note>

Ar COS bheadh ​​sé seo ag teacht leis an gcód:

Set ^xml("note")="id=5"
Set ^xml("note","to")="Саша"
Set ^xml("note","from")="Света"
Set ^xml("note","heading")="Напоминание"
Set ^xml("note","body")="Позвони мне завтра!"

Tráchtaireacht: I gcás XML, JSON, eagair chomhthiomsaíocha, is féidir leat teacht ar go leor bealaí éagsúla le taispeáint ar dhomhanda. Sa chás seo, níor léirigh muid ord na bhfochlibeanna sa chlib nótaí. Go domhanda ^xml taispeánfar na fochlibeanna in ord aibítre. Chun an t-ordú a léiriú go docht, is féidir leat an taispeáint seo a leanas a úsáid, mar shampla:

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2
JSON.
Léiríonn an chéad phictiúr ó chuid 3.3.1 léiriú ar an doiciméad JSON seo:

var document = {
  "name": "Vince Medvedev",
  "city": "Moscow",
  "threatments": {
    "surgeries": ["apedicectomy", "biopsy"],
    "radiation": ["gamma", "x-rays"],
    "physiotherapy": ["knee", "shoulder"]
  },
};

3.3.4 Struchtúir chomhionanna a cheanglaíonn caidrimh ordlathacha

Samplaí: struchtúr na n-oifigí díolacháin, suíomh daoine i struchtúr MLM, bunachar sonraí oscailtí fichille.

Bunachar sonraí tús. Is féidir leat an meastachán fórsa stróc a úsáid mar luach innéacs an nód domhanda. Ansin, d'fhonn an t-aistriú is láidre a roghnú, beidh sé go leor an brainse a bhfuil an meáchan is mó a roghnú. Sa domhan, déanfar gach brainse ag gach leibhéal a shórtáil de réir neart gluaiseachta.

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2

Struchtúr na n-oifigí díolacháin, struchtúr na ndaoine i MLM. Is féidir le nóid luachanna caching áirithe a stóráil a léiríonn tréithe an fhochrainn iomláin. Mar shampla, an méid díolacháin d'fhochrainn ar leith. Ag am ar bith is féidir linn figiúr a fháil a léiríonn éachtaí aon bhrainse.

Is claíomh taisce iad na cruinne chun sonraí a stóráil. Crainn. Cuid 2

4. Cad iad na cásanna is mó tairbhí úsáid a bhaint as domhandaithe?

Cuireann an chéad cholún cásanna i láthair ina bhfaighidh tú gnóthachan luais suntasach trí úsáid a bhaint as cruinneoga, agus sa dara colún nuair a dhéanfar an dearadh nó an tsamhail sonraí a shimpliú.

Speed
Éascaíocht próiseála/cur i láthair sonraí

  1. Ionsáigh [le sórtáil uathoibríoch ag gach leibhéal], [innéacsú de réir máistir-eochair]
  2. Fochrainn a bhaint
  3. Rudaí le go leor maoine neadaithe a dteastaíonn rochtain aonair uathu
  4. Struchtúr ordlathach leis an gcumas brainsí leanaí a sheachbhóthar ó aon bhrainse, fiú cinn nach bhfuil ann
  5. Trasnú doimhneacht-an chéad fochrainn
  1. Cuspóirí/eintitis a bhfuil líon mór réadmhaoine/aonáin roghnacha [agus/nó neadaithe] acu
  2. Gan sonraí scéimre. Nuair is féidir le hairíonna nua le feiceáil go minic agus na sean-imíonn siad.
  3. Ní mór duit bunachar sonraí saincheaptha a chruthú.
  4. Bunanna cosáin agus crainn chinnidh. Nuair a bhíonn sé áisiúil cosáin a léiriú mar chrann.
  5. Struchtúir ordlathacha a bhaint gan úsáid a bhaint as atarlú

Síneadh “Claidhimh taisce iad na cruinne chun sonraí a stóráil. Arrays tanaí. Cuid 3".

Séanadh: Is é an t-alt seo agus mo chuid tuairimí dó mo thuairim agus níl aon bhaint acu le seasamh oifigiúil InterSystems Corporation.

Foinse: will.com

Add a comment