3. Caochlaidhean de structaran nuair a thathar a' cleachdadh cruinneagan
Tha grunn chùisean sònraichte aig structar leithid craobh òrdaichte. Beachdaichidh sinn air an fheadhainn aig a bheil luach practaigeach nuair a bhios sinn ag obair le cruinne-cè.
3.1 Cùis shònraichte 1. Aon nód gun mheuran
Faodar cruinneagan a chleachdadh chan ann a-mhàin mar raon, ach cuideachd mar chaochladairean cunbhalach. Mar eisimpleir, mar chuntar:
Set ^counter = 0 ; установка счётчика
Set id=$Increment(^counter) ; атомарное инкрементирование
Anns a 'chùis seo, faodaidh meuran a bhith aig a' chruinne-cè, a bharrachd air a bhrìgh. Chan eil aon a 'dùnadh a-mach an tè eile.
3.2 Cùis shònraichte 2. Aon vertex agus iomadh meur
San fharsaingeachd, is e bunait prìomh luach clasaigeach a tha seo. Agus ma shàbhaileas sinn tuple de luachan mar luach, gheibh sinn clàr gu math àbhaisteach le prìomh iuchair.
Gus clàr air cruinnean a chuir an gnìomh, feumaidh sinn sreathan a ghineadh sinn fhìn bho luachan nan colbhan, agus an uairsin a shàbhaladh don chruinne-cè a’ cleachdadh a ’phrìomh iuchair. Gus am bi e comasach an sreang a roinn ann an colbhan a-rithist nuair a bhios tu a’ leughadh, faodaidh tu:
- caractaran delimiter.
Set ^t(id1) = "col11/col21/col31" Set ^t(id2) = "col12/col22/col32"
- sgeama teann anns a bheil gach raon a’ gabhail a-steach àireamh ro-shuidhichte de bytes. Mar a tha air a dhèanamh ann an stòran-dàta dàimh.
- gnìomh sònraichte $LB (ri fhaighinn ann an Cache), a chruthaicheas sreath de luachan.
Set ^t(id1) = $LB("col11", "col21", "col31") Set ^t(id2) = $LB("col12", "col22", "col32")
Gu inntinneach, chan eil e doirbh cruinneagan a chleachdadh gus rudeigin coltach ri clàran-amais àrd-sgoile ann an stòran-dàta dàimheach a dhèanamh. Canaidh sinn clàran-amais nan structaran sin mar chruinne-cè. Tha clàr-amais cruinne na chraobh taice airson raointean a tha a’ rannsachadh gu sgiobalta nach eil nam pàirt de phrìomh iuchair a’ phrìomh chruinneil. Gus a lìonadh agus a chleachdadh, feumaidh tu còd a bharrachd a sgrìobhadh.
Cruthaichidh sinn clàr-amais cruinne air a’ chiad cholbh.
Set ^i("col11", id1) = 1
Set ^i("col12", id2) = 1
A-nis, gus fiosrachadh a lorg gu sgiobalta anns a’ chiad cholbh, feumaidh sinn coimhead a-steach don chruinne-cè ^i agus lorg na prìomh iuchraichean (id) a fhreagras air an luach a tha thu ag iarraidh sa chiad cholbh.
Nuair a chuireas sinn luach a-steach, is urrainn dhuinn an dà chuid cruinnean luach agus clàr-amais a chruthachadh airson nan raointean a tha a dhìth. Agus airson earbsachd, leigidh sinn a h-uile càil ann an gnothach.
TSTART
Set ^t(id1) = $LB("col11", "col21", "col31")
Set ^i("col11", id1) = 1
TCOMMIT
Fiosrachadh air mar a nì thu e air M
Obraichidh clàran mar seo cho luath ‘s a tha iad ann an stòran-dàta traidiseanta (no eadhon nas luaithe) ma tha na gnìomhan airson sreathan a chuir a-steach / ùrachadh / cuir às air an sgrìobhadh ann an COS / M agus air an cur ri chèile.Thug mi sùil air an aithris seo le deuchainnean air mòr INSERT agus SELECT ann an aon chlàr dà-cholbh, a’ toirt a-steach cleachdadh òrdughan TSTART agus TCOMMIT (gnìomh).
Cha do rinn mi deuchainn air suidheachaidhean nas iom-fhillte le ruigsinneachd co-shìnte agus gnothaichean co-shìnte.
Gun a bhith a’ cleachdadh ghnothaichean, b’ e an ìre cuir a-steach 778 cuir a-steach / diog gach millean luachan.
Le 300 millean luachan - 422 cuir a-steach / diog.
Nuair a bhios tu a’ cleachdadh ghnothaichean - cuir a-steach 572 / diog airson cuir a-steach 082M. Chaidh a h-uile gnìomh a dhèanamh bho chòd M a chaidh a chur ri chèile.
Tha draibhearan cruaidh cunbhalach, chan e SSD. RAID5 le Sgrìobhadh air ais. Pròiseasar Phenom II 1100T.
Gus stòr-dàta SQL a dhearbhadh san aon dòigh, feumaidh tu modh-obrach a tha air a stòradh a sgrìobhadh a nì cuir a-steach ann an lùb. Nuair a rinn mi deuchainn air MySQL 5.5 (stòradh InnoDB), a’ cleachdadh an dòigh seo fhuair mi àireamhan gun a bhith nas motha na cuir a-steach 11K gach diog.
Tha, tha buileachadh chlàran air cruinne a’ coimhead nas iom-fhillte na ann an stòran-dàta co-cheangailte. Mar sin, tha cothrom aig stòran-dàta gnìomhachais air cruinnean SQL gus obair a dhèanamh nas sìmplidhe le dàta clàir.
San fharsaingeachd, mura h-atharraich an sgeama dàta gu tric, chan eil an astar cuir a-steach deatamach agus faodar an stòr-dàta gu lèir a riochdachadh gu furasta ann an cruth chlàran àbhaisteach, tha e nas fhasa obrachadh le SQL, leis gu bheil e a ’toirt seachad ìre nas àirde de tharraing. .
Anns a 'chùis shònraichte seo bha mi airson sin a shealltainn faodaidh cruinnean a bhith nan neach-togail airson stòran-dàta eile a chruthachadh. Coltach ri assembler anns am faodar cànanan eile a sgrìobhadh. Seo eisimpleirean de mar as urrainn dhut analogues a chruthachadh air cruinnean
Ma dh’ fheumas tu stòr-dàta neo-àbhaisteach de sheòrsa air choreigin a chruthachadh le glè bheag oidhirp, bu chòir dhut coimhead gu cruinne.
3.3 Cùis sònraichte 3. Craobh dà-ìre, tha àireamh stèidhichte de mheuran aig gach nód den dàrna ìre
Is dòcha gun do smaoinich thu e: is e seo buileachadh eile de chlàran air cruinne. Dèanamaid coimeas eadar a’ bhuileachadh seo agus an tè roimhe.
Clàran air craobh dà-ìre vs. air craobh aon-ìre.
Минусы
Плюсы
- Nas slaodaiche airson cuir a-steach, oir feumaidh tu an àireamh de nodan a shuidheachadh co-ionann ris an àireamh de cholbhan.
- Barrachd caitheamh àite diosc. Leis gu bheil clàran-amais cruinne (air an tuigsinn mar chlàran-amais rèite) le ainmean colbh a’ gabhail àite diosc agus gan dùblachadh airson gach sreath.
- Cothrom nas luaithe air luachan colbhan fa leth, leis nach eil feum air an t-sreang a pharsadh. A rèir mo dheuchainnean, tha e 11,5% nas luaithe air 2 cholbh agus barrachd air àireamh nas motha de cholbhan.
- Sgeama dàta atharrachadh nas fhasa
- Còd nas soilleire
Co-dhùnadh: chan ann airson a h-uile duine. Leis gur e astar aon de na prìomh bhuannachdan a tha aig cruinne-cè, chan eil mòran feum ann a bhith a’ cleachdadh a’ ghnìomhachais seo, oir tha e coltach nach bi e a’ coileanadh nas luaithe na clàran ann an stòran-dàta co-cheangailte.
3.4 Cùis choitcheann. Craobhan agus craobhan òrdaichte
Bidh structar dàta sam bith a dh'fhaodar a riochdachadh mar chraobh a 'freagairt gu foirfe ri cruinne.
3.4.1 Nithean le cuspairean
Is e seo an raon de chleachdadh traidiseanta de chruinneil. Anns an raon meidigeach tha àireamh mhòr de ghalaran, cungaidhean-leigheis, comharraidhean agus dòighean làimhseachaidh. Tha e neo-reusanta clàr a chruthachadh le millean raon airson gach euslainteach. A bharrachd air an sin, bidh 99% de na raointean falamh.
Smaoinich air stòr-dàta SQL de chlàran: “euslainteach” ~ achaidhean 100, “Cungaidh-leigheis” - achaidhean 000, “Therapy” - achaidhean 100, “Toraidhean” - raointean 000, msaa. Agus mar sin air adhart. No faodaidh tu stòr-dàta de mhìltean de chlàran a chruthachadh, gach fear airson seòrsa sònraichte de dh’ euslainteach (agus faodaidh iad a dhol thairis air!), leigheasan, cungaidhean-leigheis, agus mìltean eile de chlàran airson ceanglaichean eadar na bùird sin.
Tha cruinneagan air leth freagarrach airson cungaidh-leigheis, oir leigidh iad leat cunntas ceart a chruthachadh airson gach euslainteach air an eachdraidh mheidigeach aige, diofar leigheasan, agus gnìomhan cungaidh-leigheis, ann an cruth craoibhe, gun a bhith a’ caitheamh àite diosc a bharrachd air colbhan falamh, mar a bhiodh. biodh a chùis ann an cùis dàimh.
A’ cleachdadh globals tha e goireasach stòr-dàta a chruthachadh le dàta mu dhaoine, nuair a tha e cudromach cruinneachadh agus siostamachadh aig a’ char as àirde de dhiofar fiosrachaidh mun neach-dèiligidh. Tha iarrtas mòr air seo ann an cungaidh-leigheis, bancaireachd, margaidheachd, tasglann agus raointean eile
.
Gu dearbh, ann an SQL faodaidh tu cuideachd craobh ath-aithris le dìreach beagan chlàran (
Chan eil e na dhìomhaireachd gum faod atharrachadh an sgeama dàta air bùird mòra (ALTER TABLE) ùine mhath a thoirt. Bidh MySQL, mar eisimpleir, a’ dèanamh ALTER TABLE ADD | Drop COLUMN le bhith a’ dèanamh lethbhreac iomlan de dh’ fhiosrachadh bhon t-seann chlàr chun chlàr ùr (deuchainn MyISAM, einnseanan InnoDB). A dh’ fhaodas stòr-dàta obrach a chrochadh le billeanan de chlàran airson làithean, mura h-eil seachdainean.
Cha chosg atharrachadh structar an dàta ma chleachdas sinn cruinneachan dad dhuinn. Aig àm sam bith is urrainn dhuinn feartan ùra sam bith a dh’ fheumas sinn a chur ri nì sam bith, aig ìre sam bith den rangachd. Faodar atharrachaidhean co-cheangailte ri ath-ainmeachadh mheuran a ruith air a’ chùl air stòr-dàta ruith.
Mar sin, nuair a thig e gu bhith a 'stòradh stuthan le àireamh mhòr de fheartan roghainneil, tha cruinneagan na dheagh roghainn.
A bharrachd air an sin, leig dhomh do chuimhneachadh gu bheil ruigsinneachd gu gin de na togalaichean sa bhad, leis gu bheil a h-uile slighe air feadh na cruinne mar chraobhan B.
Tha stòran-dàta cruinne, san fharsaingeachd, nan seòrsa de stòr-dàta stèidhichte air sgrìobhainnean le comas fiosrachadh rangachd a stòradh. Mar sin, faodaidh stòran-dàta stèidhichte air sgrìobhainnean farpais ri cruinne ann an raon stòradh chlàran meidigeach. Ach chan eil e buileach mar an ceudnaGabhamaid MongoDB airson coimeas. Anns an raon seo bidh e a’ call dha na cruinne airson na h-adhbharan a leanas:
- Meud an sgrìobhainn. Is e teacsa a th’ anns an aonad stòraidh ann an cruth JSON (BSON nas mionaidiche) le meud as motha de mu 16MB. Chaidh an cuingealachadh a dhèanamh gu sònraichte gus nach bi stòr-dàta JSON a’ slaodadh sìos aig àm parsadh ma tha sgrìobhainn JSON mòr air a stòradh ann agus an uairsin faighinn thuige le raointean. Bu chòir a h-uile fiosrachadh mun euslainteach a bhith anns an sgrìobhainn seo. Tha fios againn uile cho tiugh sa dh’ fhaodadh clàran euslaintich a bhith. Bidh meud cairt as àirde de 16MB a’ cur stad sa bhad air euslaintich aig a bheil cairt galair a’ toirt a-steach faidhlichean MRI, sganaidhean X-ray agus sgrùdaidhean eile. Ann an aon mheur den t-saoghal faodaidh tu gigabytes agus terabytes fiosrachaidh a bhith agad. Ann am prionnsabal, faodaidh sinn crìoch a chur air seo, ach leanaidh mi air adhart.
- Ùine mothachaidh / atharrachadh / cuir às do thogalaichean ùra ann an clàr an euslaintich. Feumaidh stòr-dàta mar seo am mapa gu lèir a leughadh mar chuimhne (is e tòrr mòr a tha seo!), BSON a pharsadh, cuir/atharraich/sguab às nod ùr, ùraich clàran-amais, pacaich a-steach e ann am BSON, agus sàbhail gu diosc e. Chan fheum cruinne-cruinne ach faighinn gu togalach sònraichte agus a làimhseachadh.
- Cothrom luath air togalaichean fa leth. Le mòran thogalaichean ann an sgrìobhainn agus an structar ioma-ìre aige, bidh ruigsinneachd air togalaichean fa-leth nas luaithe leis gu bheil gach slighe sa chruinne-cè na chraobh B. Ann am BSON, feumaidh tu an sgrìobhainn a pharsadh gu sreathach gus an togalach a tha thu ag iarraidh a lorg.
3.3.2 Eagrachaidhean co-cheangail
Bidh arrays ceangail (eadhon le arrays neadachaidh) a ’freagairt gu foirfe air cruinnean. Mar eisimpleir, thèid an leithid de raon bho PHP a thaisbeanadh anns a’ chiad dealbh 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 Sgrìobhainnean rangachd: XML, JSON
Cuideachd air a stòradh gu furasta ann an cruinneagan. Faodar a dhealbhadh ann an diofar dhòighean airson stòradh.
XML
Is e an dòigh as fhasa XML a pharsadh gu cruinneagan a bhith a’ stòradh buadhan tagaichean ann an nodan. Agus ma tha feum air ruigsinneachd luath air buadhan tagaichean, is urrainn dhuinn an gluasad gu geugan fa leth.
<note id=5>
<to>Вася</to>
<from>Света</from>
<heading>Напоминание</heading>
<body>Позвони мне завтра!</body>
</note>
Air COS bhiodh seo a’ freagairt ris a’ chòd:
Set ^xml("note")="id=5"
Set ^xml("note","to")="Саша"
Set ^xml("note","from")="Света"
Set ^xml("note","heading")="Напоминание"
Set ^xml("note","body")="Позвони мне завтра!"
Nota: Airson XML, JSON, arrays com-pàirteach, faodaidh tu iomadh dòigh eadar-dhealaichte a chruthachadh airson taisbeanadh air cruinnean. Anns a’ chùis seo, cha do sheall sinn òrdugh nan subtags anns an taga nota. Gu cruinneil ^xml thèid subtags a thaisbeanadh ann an òrdugh na h-aibideil. Gus an òrdugh a nochdadh gu teann, faodaidh tu, mar eisimpleir, an taisbeanadh a leanas a chleachdadh:
JSON.
Tha a’ chiad dealbh bho earrann 3.3.1 a’ sealltainn faileas den sgrìobhainn JSON seo:
var document = {
"name": "Vince Medvedev",
"city": "Moscow",
"threatments": {
"surgeries": ["apedicectomy", "biopsy"],
"radiation": ["gamma", "x-rays"],
"physiotherapy": ["knee", "shoulder"]
},
};
3.3.4 Structaran co-ionann ceangailte le dàimhean rangachd
Eisimpleirean: structar oifisean reic, suidheachadh dhaoine ann an structar MLM, stòr-dàta fosglaidhean ann an tàileasg.
Stòr-dàta deasbaid. Faodaidh tu an tuairmse feachd stròc a chleachdadh mar luach clàr-amais an nód cruinne. An uairsin, gus an gluasad as làidire a thaghadh, bidh e gu leòr am meur leis a 'chuideam as motha a thaghadh. Anns a 'chruinne-cè, thèid a h-uile meur aig gach ìre a rèiteachadh le neart gluasad.
Structar oifisean reic, structar dhaoine ann am MLM. Faodaidh nodan cuid de luachan tasgadan a stòradh a tha a’ nochdadh feartan an fho-chraobh gu lèir. Mar eisimpleir, meud reic fo-chraobh sònraichte. Aig àm sam bith gheibh sinn figear a tha a 'nochdadh coileanaidhean meur sam bith.
4. Dè na cùisean anns a bheil e nas buannachdail cruinneagan a chleachdadh?
Tha a’ chiad cholbh a’ taisbeanadh chùisean far am faigh thu buannachd astair mòr le bhith a’ cleachdadh chruinne-cè, agus an dàrna fear nuair a thèid an dealbhadh no am modail dàta a dhèanamh nas sìmplidhe.
Astar
Furasta a làimhseachadh / taisbeanadh dàta
- Cuir a-steach [le rèiteachadh fèin-ghluasadach aig gach ìre], [clàr-amais le prìomh iuchair]
- A 'toirt air falbh fo-chraobhan
- Rudan le mòran thogalaichean neadachaidh a dh’ fheumas ruigsinneachd fa-leth
- Structar rangachd leis a’ chomas a bhith a’ seachnadh meuran cloinne bho mheur sam bith, eadhon feadhainn nach eil ann
- Doimhneachd - an toiseach a 'dol thairis air fo-chraobhan
- Rudan / buidhnean le àireamh mhòr de thogalaichean / aonadan roghainneil [agus / no neadachadh]
- Dàta gun sgeama. Nuair a dh’ fhaodadh togalaichean ùra nochdadh gu tric agus seann fheadhainn à sealladh.
- Feumaidh tu stòr-dàta gnàthaichte a chruthachadh.
- Bunan slighe agus craobhan co-dhùnaidh. Nuair a tha e goireasach slighean a riochdachadh mar chraobh.
- A 'toirt air falbh structaran rangachd gun a bhith a' cleachdadh ath-chuairteachadh
A 'leantainn
Àicheadh: Is e an artaigil seo agus na beachdan agam dha mo bheachd agus chan eil dàimh sam bith agam ri suidheachadh oifigeil InterSystems Corporation.
Source: www.habr.com