He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2E hoʻomaka - e ʻike i ka ʻāpana 1.

3. Nā ʻano like ʻole o nā hale i ka wā e hoʻohana ai i ka honua

ʻO kahi hale e like me ka lāʻau kauoha ʻia nā hihia kūikawā like ʻole. E noʻonoʻo kākou i nā mea i loaʻa ka waiwai kūpono i ka hana ʻana me ka honua.

3.1 Ka hihia kūikawā 1. Hoʻokahi node me nā lālā ʻole


He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2Hiki ke hoʻohana ʻia nā globals ʻaʻole wale e like me kahi array, akā e like me nā loli maʻamau. No ka laʻana, ma ke ʻano he counter:

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

I kēia hihia, hiki ke loaʻa nā lālā o ka honua, me ka hoʻohui ʻana i kona ʻano. ʻAʻole hoʻokaʻawale kekahi i kekahi.

3.2 Ka hihia kūikawā 2. Hoʻokahi vertex a me nā lālā he nui

Ma keʻano laulā, he kumu waiwai kī maʻamau kēia. A inā mākou e mālama i kahi tuple o nā waiwai ma ke ʻano he waiwai, e loaʻa iā mākou kahi papa maʻamau me kahi kī nui.

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2

No ka hoʻokō ʻana i kahi papaʻaina ma ka honua, pono mākou e hana i nā lālani iā ​​mākou iho mai nā koina kolamu, a laila mālama iā lākou i ka honua me ke kī mua. I mea e hiki ai ke puunaue hou i ke kaula i na kolamu i ka heluhelu ana, hiki ia oe ke hoohana:

  1. nā huaʻōlelo hoʻokaʻawale.
    Set ^t(id1) = "col11/col21/col31"
    Set ^t(id2) = "col12/col22/col32"
  2. he hoʻolālā paʻa kahi e noho ai kēlā me kēia kahua i kahi helu paita i koho mua ʻia. E like me ka hana ʻana i nā waihona pili.
  3. he hana kūikawā $LB (loaʻa i loko o ka Cache), e hana ana i ke kaula o nā waiwai.
    Set ^t(id1) = $LB("col11", "col21", "col31")
    Set ^t(id2) = $LB("col12", "col22", "col32")

ʻO ka mea e mahalo ai, ʻaʻole paʻakikī ka hoʻohana ʻana i nā honua e hana i kahi mea e like me nā helu helu lua ma nā ʻikepili pili. E kāhea kākou i kēlā mau hale index globals. He lāʻau kōkua ka index global no ka ʻimi wikiwiki ʻana i nā kahua ʻaʻole i ʻāpana o ke kī nui o ka honua nui. No ka hoʻopiha a hoʻohana ʻana, pono ʻoe e kākau i nā code hou.

E hana kākou i papa kuhikuhi honua ma ke kolamu mua.

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

I kēia manawa, e ʻimi wikiwiki i ka ʻike ma ke kolamu mua, pono mākou e nānā i ka honua ^i a e huli i nā kī kumu (id) e pili ana i ka waiwai i makemake ʻia o ke kolamu mua.

Ke hoʻokomo i kahi waiwai, hiki iā mākou ke hana koke i ka waiwai a me ka index globals no nā māla i makemake ʻia. A no ka hilinaʻi, e hoʻopili mākou i nā mea āpau i kahi kālepa.

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

Nā kikoʻī e pili ana i ka hana ʻana ma M nā papa ma ka honua, ka hoʻolikelike ʻana o nā papa kuhikuhi lua.

E holo wikiwiki ana ia mau papa e like me ka ʻikepili kuʻuna (a ʻoi aku ka wikiwiki) inā kākau ʻia nā hana no ka hoʻokomo ʻana/hōʻano a holoi i nā lālani ma COS/M a hōʻuluʻulu ʻia.Ua nānā au i kēia ʻōlelo me nā hoʻāʻo ʻana ma ka nui INSERT a me SELECT i hoʻokahi papaʻaina ʻelua kolamu, me ka hoʻohana ʻana i nā kauoha TSTART a me TCOMMIT (transactions).

ʻAʻole au i hoʻāʻo i nā hiʻohiʻona paʻakikī me ka loaʻa like ʻana a me nā hana like.

Me ka ʻole o ka hoʻohana ʻana i nā kālepa, ʻo ka helu hoʻokomo ʻana he 778 inserts / kekona no kēlā me kēia miliona waiwai.
Me 300 miliona mau waiwai - 422 hoʻokomo / kekona.

I ka hoʻohana ʻana i nā kālepa - 572 inserts/second no 082M inserts. Ua hana ʻia nā hana a pau mai ka M code i hui ʻia.
He mea maʻamau ka paʻakikī, ʻaʻole SSD. RAID5 me Kākau-hoʻi. Phenom II 1100T kaʻina hana.

No ka ho'āʻoʻana i kahi waihona SQL ma keʻano like, ponoʻoe e kākau i kahi kaʻina hana mālama e hana i nā hoʻokomo i loko o ka loop. Ke hoʻāʻo nei ʻo MySQL 5.5 (InnoDB storage), me ka hoʻohana ʻana i kēia ʻano i loaʻa iaʻu nā helu ma mua o 11K hoʻokomo i kekona.
ʻAe, ʻoi aku ka paʻakikī o ka hoʻokō ʻana i nā papa ma ka honua ma mua o nā ʻikepili pili. No laila, loaʻa iā SQL nā ʻikepili ʻenehana ma ka honua e hoʻomaʻamaʻa i ka hana me ka ʻikepili tabular.

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2Ma keʻano laulā, inā ʻaʻole e loli pinepine ka schema data, ʻaʻole koʻikoʻi ka wikiwiki o ka hoʻokomo ʻana a hiki ke hōʻike maʻalahi ʻia ka ʻikepili holoʻokoʻa ma ke ʻano o nā papa maʻamau, a laila ʻoi aku ka maʻalahi o ka hana me SQL, no ka mea, hāʻawi ia i kahi kiʻekiʻe o ka abstraction. .

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2Ma kēia hihia kūikawā makemake wau e hōʻike i kēlā Hiki i nā globals ke hana ma ke ʻano he mea kūkulu no ka hana ʻana i nā ʻikepili ʻē aʻe. E like me kahi hui i hiki ke kākau ʻia i nā ʻōlelo ʻē aʻe. Eia nā laʻana o ka hana ʻana i nā analogues ma ka honua ka waiwai kī, nā papa inoa, nā pūʻulu, ka papa helu, nā waihona waihona palapala.

Inā pono ʻoe e hana i kekahi ʻano ʻikepili maʻamau ʻole me ka hoʻoikaika liʻiliʻi, a laila pono ʻoe e nānā i ka honua.

3.3 Ka hihia kūikawā 3. ʻElua lāʻau pae, ʻo kēlā me kēia node o ka pae ʻelua he helu paʻa o nā lālā.

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2Manaʻo paha ʻoe: he hoʻokō ʻokoʻa kēia o nā papa ma ka honua. E hoʻohālikelike kākou i kēia hoʻokō me ka mua.

Nā papa ma luna o kahi lāʻau pae ʻelua vs. ma kahi lāʻau pae hoʻokahi.

Минусы
Плюсы

  1. ʻOi aku ka mālie no ka hoʻokomo ʻana, no ka mea pono ʻoe e hoʻonohonoho i ka helu o nā nodes e like me ka helu o nā kolamu.
  2. ʻOi aku ka hoʻohana ʻana i ka lewa disk. No ka mea, ʻo nā papa kuhikuhi honua (i hoʻomaopopo ʻia he mau kuhikuhi kikoʻī) me nā inoa kolamu e lawe i ka hakahaka disk a ua kope ʻia no kēlā me kēia lālani.

  1. ʻOi aku ka wikiwiki o ke komo ʻana i nā waiwai o nā kolamu pākahi, no ka mea ʻaʻohe pono e paʻi i ke kaula. Wahi a kaʻu mau hoʻāʻo, ʻoi aku ka wikiwiki o 11,5% ma nā kolamu 2 a ʻoi aku ka nui o nā kolamu.
  2. E maʻalahi ka hoʻololi ʻana i ka ʻikepili
  3. ʻOi aku ka ʻōlelo akaka

Panina: ʻaʻole no nā mea a pau. No ka mea, ʻo ka wikiwiki kekahi o nā pōmaikaʻi nui loa o ka honua, ʻaʻohe wahi liʻiliʻi o ka hoʻohana ʻana i kēia hoʻokō, no ka mea, ʻaʻole ʻoi aku ka wikiwiki o ka hana ma mua o nā papa ma nā ʻikepili pili.

3.4 Hihia nui. Nā lāʻau a me nā lāʻau kauoha

ʻO kēlā me kēia ʻano ʻikepili i hiki ke hōʻike ʻia ma ke ʻano he kumulāʻau kūpono loa me nā honua.

3.4.1 Nā mea me nā kumuhana

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2

ʻO kēia kahi o ka hoʻohana kuʻuna o ka honua. I ka lāʻau lapaʻau he nui ka nui o nā maʻi, nā lāʻau lapaʻau, nā hōʻailona, ​​​​a me nā ʻano lapaʻau. He mea kūponoʻole ka hanaʻana i kahi papaʻaina me kahi miliona mau māla no kēlā me kēia maʻi. Eia kekahi, ʻo 99% o nā māla e nele.

E noʻonoʻo i kahi waihona SQL o nā papa: "maʻi" ~ 100 kahua, "Lapaʻau" - 000 mau kahua, "Therapy" - 100 mau kahua, "Complications" - 000 mau kahua, etc. a laila. A i ʻole hiki iā ʻoe ke hana i kahi waihona o nā kaukani papa ʻaina, kēlā me kēia no kahi ʻano maʻi kūikawā (a hiki iā lākou ke overlap!), nā lāʻau lapaʻau, nā lāʻau lapaʻau, a me nā kaukani hou aku no nā pilina ma waena o kēia mau papa.

He kūpono nā Globals no ka lāʻau lapaʻau, ʻoiai lākou e ʻae iā ʻoe e hana no kēlā me kēia maʻi i ka wehewehe pololei o kāna mōʻaukala olakino, nā ʻano lapaʻau like ʻole, a me nā hana o nā lāʻau lapaʻau, ma ke ʻano o kahi lāʻau, me ka ʻole o ka hoʻopau ʻana i kahi diski ʻokoʻa ma nā kolamu ʻole, e like me ka ka hihia ma ka hihia pili.

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2ʻO ka hoʻohana ʻana i ka honua he mea maʻalahi ia e hana i kahi waihona me ka ʻikepili e pili ana i nā kānaka, i ka wā he mea nui e hōʻiliʻili a hoʻonohonoho i ka nui o nā ʻike like ʻole e pili ana i ka mea kūʻai aku. Pono kēia i ka lāʻau lapaʻau, ka waihona kālā, ke kūʻai aku, ka waihona a me nā wahi ʻē aʻe

.
ʻOiaʻiʻo, ma SQL hiki iā ʻoe ke hoʻohālike i kahi lāʻau me nā papa liʻiliʻi wale nō (EAV, 1,2,3,4,5,6,7,8,9,10), akā naʻe, ʻoi aku ka paʻakikī a ʻoi aku ka lohi. ʻO ka mea nui, pono ʻoe e kākau i kahi honua e hana ana ma nā papa a hūnā i nā hana āpau me nā papa ma lalo o kahi papa abstraction. He hewa ka hoʻohana ʻana i ka ʻenehana haʻahaʻa haʻahaʻa (global) me ka hoʻohana ʻana i ka ʻenehana kiʻekiʻe (SQL). Kupono ole.

ʻAʻole ia he mea huna i ka hoʻololi ʻana i ka schema data ma nā papa nui (ALTER TABLE) hiki ke lawe i kahi manawa kūpono. ʻO MySQL, no ka laʻana, hana ʻo ALTER TABLE ADD|DROP COLUMN ma ke kope piha ʻana i ka ʻike mai ka papaʻaina kahiko i ka papaʻaina hou (i hoʻāʻo ʻia ʻo MyISAM, InnoDB engines). Hiki iā ia ke kau i kahi waihona hana me nā piliona o nā moʻolelo no nā lā, inā ʻaʻole he pule.

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2ʻO ka hoʻololi ʻana i ke ʻano o ka ʻikepili inā mākou e hoʻohana i nā globals ʻaʻohe mea e uku iā mākou. I kēlā me kēia manawa hiki iā mākou ke hoʻohui i nā waiwai hou e pono ai mākou i kekahi mea, ma kēlā me kēia pae o ka hierarchy. Hiki ke hoʻololi ʻia nā hoʻololi e pili ana i ka hoʻololi ʻana i nā lālā ma ke kua ma kahi waihona e holo ana.


No laila, i ka wā e mālama ai i nā mea me ka nui o nā waiwai koho, he koho maikaʻi loa ka honua.

Eia kekahi, e hoʻomanaʻo wau iā ʻoe he hikiwawe ke komo i kekahi o nā waiwai, ʻoiai ma ka honua nā ala āpau he B-lāʻau.

ʻO nā ʻikepili honua, ma ke ʻano laulā, he ʻano o ka waihona waihona palapala me ka hiki ke mālama i ka ʻike hierarchical. No laila, hiki i nā waihona waihona palapala ke hoʻokūkū me nā honua ma ke kahua o ka mālama ʻana i nā moʻolelo olakino. Akā, ʻaʻole like loa iaE lawe kākou iā MongoDB no ka hoʻohālikelike. Ma keia kahua lilo ia i ka honua no kēia mau kumu:

  1. Nui palapala. He kikokikona ka waihona waihona ma ke ʻano JSON (ʻoi aku ka pololei o BSON) me ka nui o ka nui ma kahi o 16MB. Ua hana pono ʻia ka palena i ʻole e lohi ka waihona JSON i ka wā e hoʻopaʻa ʻia inā mālama ʻia kahi palapala JSON nui i loko a laila komo ʻia e nā māla. Pono i loko o kēia palapala nā ʻike a pau e pili ana i ka mea maʻi. ʻIke mākou a pau i ka mānoanoa o nā moʻolelo maʻi. ʻO ka nui kāleka kiʻekiʻe o 16MB e hoʻopau koke i nā poʻe maʻi i loaʻa nā kāleka maʻi i nā faila MRI, nā kiʻi X-ray a me nā haʻawina ʻē aʻe. Ma kahi lālā o ka honua hiki iā ʻoe ke loaʻa i nā gigabytes a me nā terabytes o ka ʻike. Ma ke kumu, hiki iā mākou ke hoʻopau i kēia, akā e hoʻomau wau.
  2. Ka manawa o ka ʻike/hoʻololi/holo ʻia o nā waiwai hou i ka pakuhi o ka mea maʻi. Pono ia waihona waihona e heluhelu i ka palapala ʻāina holoʻokoʻa i ka hoʻomanaʻo (he nui kēia!), E hoʻopau i ka BSON, hoʻohui / hoʻololi / holoi i kahi node hou, hōʻano hou i nā kuhikuhi, hoʻokomo i loko o BSON, a mālama iā ia i ka disk. Pono ka honua holoʻokoʻa e komo i kahi waiwai kikoʻī a hoʻopunipuni iā ​​​​ia.
  3. Loaʻa wikiwiki i nā waiwai pākahi. Me ka nui o nā waiwai i loko o kahi palapala a me kona hoʻolālā pae, ʻoi aku ka wikiwiki o ke komo ʻana i kēlā me kēia waiwai ma muli o ka ʻoiaʻiʻo ʻo kēlā me kēia ala i ka honua he B-lāʻau. Ma BSON, pono ʻoe e hoʻokaʻawale laina i ka palapala e ʻike ai i ka waiwai i makemake ʻia.

3.3.2 Hoʻohui hui

ʻO nā hui hui (ʻoiai me nā pūnana pūnana) kūpono loa i ka honua. No ka laʻana, e hōʻike ʻia kēlā ʻano papa mai PHP ma ke kiʻi mua 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 Nā palapala hierarchical: XML, JSON

Hoʻopaʻa maʻalahi hoʻi i ka honua. Hiki ke waiho ʻia ma nā ʻano like ʻole no ka mālama ʻana.

'ōkuene
ʻO ke ala maʻalahi loa e hoʻokaʻawale i ka XML i loko o ka honua, ʻo ia ka mālama ʻana i nā ʻano inoa inoa i nā nodes. A inā pono ke komo wikiwiki i nā ʻano hōʻailona, ​​a laila hiki iā mākou ke hoʻoneʻe iā lākou i nā lālā ʻokoʻa.

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2

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

Ma ka COS pili kēia i ke code:

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

Manaʻo: No XML, JSON, hui hui, hiki iā ʻoe ke hele mai me nā ʻano like ʻole o ka hōʻike ʻana ma ka honua. I kēia hihia, ʻaʻole mākou i noʻonoʻo i ka hoʻonohonoho ʻana o nā subtags i ka hōʻailona memo. Ma ke ao holoʻokoʻa ^xml e hōʻike ʻia nā subtags ma ke ʻano pīʻāpā. No ka noʻonoʻo pono ʻana i ke kauoha, hiki iā ʻoe ke hoʻohana, no ka laʻana, i kēia hōʻike:

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2
JSON.
Hōʻike ke kiʻi mua mai ka pauku 3.3.1 i kahi hōʻike o kēia palapala JSON:

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

3.3.4 Nā hale like i hoʻopili ʻia e nā pilina hierarchical

Nā laʻana: ke ʻano o nā keʻena kūʻai aku, kahi o nā poʻe i loko o kahi hoʻolālā MLM, ka waihona o nā wehe i ka chess.

ʻIkepili hoʻomaka. Hiki iā ʻoe ke hoʻohana i ka manaʻo kuhi stroke e like me ka waiwai kuhikuhi o ka node honua. A laila, i mea e koho ai i ka neʻe ikaika loa, e lawa ia e koho i ka lālā me ke kaumaha nui loa. Ma ke ao holoʻokoʻa, e hoʻokaʻawale ʻia nā lālā āpau ma kēlā me kēia pae e ka ikaika neʻe.

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2

ʻO ke ʻano o nā keʻena kūʻai, ke ʻano o ka poʻe ma MLM. Hiki i nā nodes ke mālama i kekahi mau waiwai caching e hōʻike ana i nā ʻano o ka subtree holoʻokoʻa. No ka laʻana, ka nui o ke kūʻai ʻana o kahi subtree i hāʻawi ʻia. I kēlā me kēia manawa hiki iā mākou ke kiʻi i kahi kiʻi e hōʻike ana i nā holomua o kēlā me kēia lālā.

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2

4. He aha ka mea e pono ai ka hoʻohana ʻana i ka honua?

Hōʻike ka kolamu mua i nā hihia kahi e loaʻa ai iā ʻoe ka wikiwiki nui ma ka hoʻohana ʻana i nā globals, a ʻo ka lua i ka wā e maʻalahi ai ka hoʻolālā a i ʻole ka ʻikepili.

ʻO ka wikiwiki
ʻO ka maʻalahi o ka hanaʻikepili / hōʻike

  1. Hoʻokomo [me ka hoʻokaʻawale ʻokoʻa ma kēlā me kēia pae], [ka kuhikuhi ʻana ma ke kī kumu]
  2. Ke wehe nei i nā lāʻau liʻiliʻi
  3. Nā mea me ka nui o nā waiwai pūnana e pono ai ke komo kanaka
  4. ʻO ke ʻano hierarchical me ka hiki ke kāpae i nā lālā keiki mai kekahi lālā, ʻoiai nā lālā ʻole
  5. Hohonu-ka hele mua o na kumulaau
  1. Nā mea/hui me ka heluna nui o nā waiwai koho [a/a i ʻole nested].
  2. ʻIkepili liʻiliʻi. Ke ʻike pinepine ʻia nā waiwai hou a nalowale nā ​​mea kahiko.
  3. Pono ʻoe e hana i kahi waihona maʻamau.
  4. Nā kumu ala a me nā kumu lāʻau hoʻoholo. I ka manawa kūpono e hōʻike i nā ala me he lāʻau lā.
  5. Wehe i nā hale hierarchical me ka hoʻohana ʻole ʻana i ka recursion

Holomua "He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. ʻO nā ʻāpana liʻiliʻi. Mahele 3".

Akahana: ʻO kēia ʻatikala a me kaʻu mau ʻōlelo i ia mea ʻo koʻu manaʻo a ʻaʻohe pili i ke kūlana kūhelu o InterSystems Corporation.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka