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

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 1 ʻO nā pahi kaua ʻikepili maoli - globals - ua ʻike lōʻihi ʻia, akā he kakaikahi wale nō ka ʻike pehea e hoʻohana pono ai iā lākou a ʻaʻole loaʻa iā lākou kēia superweapon.

Inā ʻoe e hoʻohana i ka honua i ka hoʻoponopono ʻana i kēlā mau pilikia i maikaʻi loa lākou, hiki iā ʻoe ke loaʻa nā hopena koʻikoʻi. Ma ka huahua a ma ka maʻalahi paha o ka hoʻonā o ka pilikia (1, 2).

He ala kūikawā ka honua no ka mālama ʻana a me ka hoʻoili ʻana i ka ʻikepili, ʻokoʻa loa mai nā papa ma SQL. Ua ʻike ʻia lākou i ka makahiki 1966 ma ka ʻōlelo M(UMPS) (ka hoʻomohala hoʻomohala - Cache ObjectScript, ma hope iho nei COS) i loko o ka waihona lapaʻau a aia nō hoohana ikaika, a komo pū i kekahi mau wahi ʻē aʻe kahi e pono ai ka hilinaʻi a me ka hana kiʻekiʻe: kālā, kālepa, etc.

Kākoʻo ke ao holoʻokoʻa i nā DBMS hou i nā kālepa, logging, replication, a me ka hoʻokaʻawale ʻana. ʻO kēlā mau. hiki ke hoʻohana ʻia e kūkulu i nā ʻōnaehana hou, hilinaʻi, puʻunaue a wikiwiki hoʻi.

ʻAʻole kaupalena nā honua iā ʻoe i ke kumu hoʻohālike pili. Hāʻawi lākou iā ʻoe i ke kūʻokoʻa e hoʻomohala i nā kūkulu ʻikepili i hoʻopaʻa ʻia no nā hana kikoʻī. No nā noi he nui, hiki i ka hoʻohana akamai o ka honua ke lilo i mea kaua huna, e hāʻawi ana i ka hana i hiki i nā mea hoʻomohala pili pili ke moeʻuhane.

Hiki ke hoʻohana ʻia nā globals ma ke ʻano e mālama ai i ka ʻikepili i nā ʻōlelo hoʻolālā hou, nā pae kiʻekiʻe a me ka pae haʻahaʻa. No laila, i loko o kēia ʻatikala e nānā pono au i ka honua, ʻaʻole i ka ʻōlelo i hele mai ai lākou.

2. Pehea e hana ai nā honua

E hoʻomaopopo mua kākou i ka hana ʻana o ka honua a me ko lākou ikaika. Hiki ke nānā ʻia nā honua mai nā manaʻo like ʻole. Ma kēia ʻāpana o ka ʻatikala e nānā mākou iā lākou he mau lāʻau. A i ʻole e like me nā hale waihona ʻikepili hierarchical.

No ka hoʻopuka maʻalahi, ʻo ka honua kahi ʻano hoʻomau. He pūʻulu i mālama ʻia i ka disk.
He paʻakikī ke noʻonoʻo i kahi mea maʻalahi no ka mālama ʻana i ka ʻikepili. Ma ke code (ma nā ʻōlelo COS/M) ʻokoʻa ia mai kahi hui hui maʻamau ma ka hōʻailona wale nō ^ mamua o ka inoa.

No ka mālama ʻana i ka ʻikepili i ka honua, ʻaʻole pono ʻoe e aʻo i ka ʻōlelo query SQL; maʻalahi loa nā kauoha no ka hana ʻana me lākou. Hiki ke aʻo ʻia lākou i hoʻokahi hola.

E hoʻomaka kākou me ka laʻana maʻalahi loa. Laau pae hookahi me 2 lala. Ua kākau ʻia nā laʻana ma COS.

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

Set ^a("+7926X") = "John Sidorov"
Set ^a("+7916Y") = "Sergey Smith"



I ka hoʻokomo ʻana i ka ʻike i loko o ka honua (Set command), 3 mau mea e hiki koke mai:

  1. Mālama i ka ʻikepili i ka disk.
  2. Ka helu helu. ʻO ka mea i loko o nā pale ke kī (ma ka palapala Pelekane - "subscript"), a ma ka ʻākau o nā mea like ka waiwai ("node value").
  3. Hoʻokaʻawale. Hoʻokaʻawale ʻia ka ʻikepili ma ke kī. I ka wā e hiki mai ana, i ka wā e hele ai i ka laina, ʻo ka mea mua ʻo "Sergey Smith", a ʻo ka lua "John Sidorov". I ka loaʻa ʻana o kahi papa inoa o nā mea hoʻohana mai ka honua, ʻaʻole hoʻopau ka ʻikepili i ka manawa. Eia kekahi, hiki iā ʻoe ke noi i ka hoʻopuka o kahi papa inoa i hoʻokaʻawale ʻia, e hoʻomaka ana mai kekahi kī, ʻoiai kahi kī ʻole (e hoʻomaka ana ka hoʻopuka mai ke kī maoli mua, e hele mai ana ma hope o ka mea ʻole).

Hiki koke kēia mau hana a pau. Ma kaʻu kamepiula home, loaʻa iaʻu nā waiwai a hiki i 750 inserts/sec i hoʻokahi kaʻina hana. Ma nā kaʻina hana multi-core hiki ke loaʻa nā waiwai umi miliona hoʻokomo/sec.

ʻOiaʻiʻo, ʻaʻole ʻōlelo nui ka wikiwiki hoʻokomo. Hiki iā ʻoe, no ka laʻana, ke kākau wikiwiki i ka ʻike i loko o nā faila kikokikona - e like me kēia e like me ka lono Nā hana hoʻoponopono Visa. Akā i ka hihia o ka honua, loaʻa iā mākou kahi waihona i kuhikuhi ʻia ma muli o ka hopena, hiki ke maʻalahi a hana wikiwiki me ka wā e hiki mai ana.

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

  • ʻO ka ikaika nui o ka honua ka wikiwiki e hiki ai ke hoʻokomo i nā node hou.
  • ʻIke mau ʻia ka ʻikepili i ka honua. ʻO ka hele ʻana iā lākou, ma ka pae hoʻokahi a hohonu i ka lāʻau, wikiwiki mau.

E hoʻohui i kekahi mau lālā o ka pae ʻelua a me ke kolu i ka honua.

Set ^a("+7926X", "city") = "Moscow"
Set ^a("+7926X", "city", "street") = "Req Square"
Set ^a("+7926X", "age") = 25
Set ^a("+7916Y", "city") = "London"
Set ^a("+7916Y", "city", "street") = "Baker Street"
Set ^a("+7916Y", "age") = 36

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

ʻIke ʻia e hiki ke kūkulu ʻia nā lāʻau multi-level ma muli o ka honua. Eia kekahi, ʻaneʻane hikiwawe ke komo ʻana i kekahi node ma muli o ka kuhikuhi ʻana i ka auto-index i ka wā hoʻokomo. A ma kēlā me kēia pae o ka lāʻau, hoʻokaʻawale ʻia nā lālā a pau ma ke kī.

E like me kāu e ʻike ai, hiki ke mālama ʻia ka ʻike ma kahi kī a me kahi waiwai. Hiki ke hōʻea i ka lōʻihi o ke kī (ka huina o nā lōʻihi o nā kuhikuhina a pau). 511 bytes, a me na waiwai 3.6 MB no Cache. ʻO ka helu o nā pae i ka lāʻau (helu o nā ana) ʻo 31.

ʻO kekahi mea hoihoi. Hiki iā ʻoe ke kūkulu i kahi lāʻau me ka ʻole e kuhikuhi i nā waiwai o nā nodes o nā pae kiʻekiʻe.

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

Set ^b("a", "b", "c", "d") = 1
Set ^b("a", "b", "c", "e") = 2
Set ^b("a", "b", "f", "g") = 3

ʻO nā pōʻai haʻahaʻa he mau node ʻaʻohe waiwai i hāʻawi ʻia.

I mea e hoʻomaopopo maikaʻi ai i ka honua, e hoʻohālikelike kākou me nā lāʻau ʻē aʻe: nā kumulāʻau māla a me nā lāʻau inoa ʻōnaehana file.

E hoʻohālikelike kākou i nā lāʻau ma ka honua me nā hale hierarchical maʻamau iā mākou: me nā lāʻau maʻamau e ulu ana ma nā māla a me nā kula, a me nā ʻōnaehana faila.

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

E like me kā mākou e ʻike ai i nā kumulāʻau māla, ʻike ʻia nā lau a me nā hua ma nā wēlau o nā lālā.
Pūnaehana waihona - mālama ʻia ka ʻike ma nā wēlau o nā lālā, ʻo ia nā inoa faila kūpono piha.

A eia ka ʻōnaehana ʻikepili honua.

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

  1. Nā node kūloko: Hiki ke mālama ʻia ka ʻike i loko o ke ao holoʻokoʻa i kēlā me kēia node, ʻaʻole wale ma nā wēlau o nā lālā.
  2. Nā node waho: Pono ka honua i wehewehe i nā waiwai ma nā wēlau o nā lālā, ʻoiai ʻaʻole ʻo FS a me nā lāʻau māla.



Ma nā ʻōlelo o nā nodes i loko, hiki iā mākou ke ʻōlelo ʻo ke ʻano o ka honua he superset o ke ʻano o nā kumu lāʻau i nā ʻōnaehana faila a me nā kumulāʻau māla. ʻO kēlā mau. ʻoi aku ka maʻalahi.

Ma ka laulā, ʻo ka honua lāʻau kauoha me ka hiki ke mālama i ka ʻikepili i kēlā me kēia node.

No ka hoʻomaopopo maikaʻi ʻana i ka hana o ka honua, e noʻonoʻo i ka mea e hana inā hoʻohana nā mea hana o nā ʻōnaehana faila i kahi ala e like me ka honua e mālama i ka ʻike?

  1. ʻO ka holoi ʻana i hoʻokahi faila i loko o kahi papa kuhikuhi e hoʻopau ʻokoʻa i ka papa kuhikuhi, a me nā papa kuhikuhi ma luna o ka papa kuhikuhi hoʻokahi wale nō i holoi ʻia.
  2. ʻAʻole pono nā papa kuhikuhi. E loaʻa wale nā ​​faila me nā waihona a me nā faila me ka ʻole o nā faila. Inā hoʻohālikelike ʻia me ka lāʻau maʻamau, a laila lilo kēlā me kēia lālā i hua.

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

  3. ʻAʻole pono paha nā faila README.txt. ʻO nā mea a pau e pono e ʻōlelo ʻia e pili ana i nā mea o ka papa kuhikuhi hiki ke kākau ʻia i loko o ka faila waihona ponoʻī. Ma ke ala ala, ʻaʻole ʻike ʻia ka inoa faila mai ka inoa papa kuhikuhi, no laila hiki ke loaʻa me nā faila wale nō.
  4. E piʻi nui ana ka wikiwiki o ka holoi ʻana i nā papa kuhikuhi me nā subdirectories pūnana a me nā faila. Nui nā manawa ma Habré i loaʻa nā ʻatikala e pili ana i ka lōʻihi a me ka paʻakikī o ka holoi ʻana i nā miliona o nā faila liʻiliʻi (1, 2). Eia nō naʻe, inā ʻoe e hana i kahi ʻōnaehana pseudo-file ma ka honua, e mau kekona a i ʻole nā ​​hapa o ia mea. I koʻu hoʻāʻo ʻana i ka holoi ʻana i nā subtrees ma kahi kamepiula home, ua wehe ʻo ia i 1-96 miliona nodes mai kahi lāʻau ʻelua-papa ma kahi HDD (ʻaʻole SSD) i 341 kekona. Eia kekahi, ke kamaʻilio nei mākou no ka holoi ʻana i kahi ʻāpana o ka lāʻau, ʻaʻole wale i ka faila holoʻokoʻa me ka honua.

He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 1
ʻO ka wehe ʻana i nā subtrees kekahi wahi ikaika o ka honua. ʻAʻole pono ʻoe i ka recursion no kēia. Hiki koke kēia.

I ko mākou lāʻau hiki ke hana i kēia me ke kauoha pepehi.

Kill ^a("+7926X")

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

No ka hoʻomaopopo maikaʻi ʻana i nā hana i loaʻa iā mākou ma luna o ka honua, e hāʻawi wau i kahi papaʻaina pōkole.

Nā kauoha kumu a me nā hana no ka hana pū ʻana me ka honua ma COS

hoʻonoho
Hoʻonohonoho i nā lālā i kahi node (inā ʻaʻole i wehewehe ʻia) a me nā waiwai node

Hoʻohui
Ke kope ʻana i kahi subtree

pepehi
Ka wehe ʻana i kahi kumulāʻau

ZKill
Holoi i ka waiwai o kekahi node kiko'ī. ʻAʻole hoʻopā ʻia ka subtree e puka mai ana mai ka node

$Nīnau
Holo piha i ka lāʻau, hele hohonu i ka lāʻau

$Kauoha
Kaʻahele ʻana i nā lālā o kahi node kikoʻī

$ʻIkepili
Ke nānā nei inā i wehewehe ʻia kahi node

$Hoʻonui
Hoʻonui ʻana i kahi waiwai node. No ka pale ʻana i ka heluhelu a me ke kākau ʻana, no ACID. I kēia mau lā ua ʻōlelo ʻia e hoʻololi i $Sequence

Mahalo iā ʻoe no kou nānā ʻana, ua mākaukau mākou e pane i kāu mau nīnau.

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.

Holomua He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili. Nā lāʻau. Mahele 2. E aʻo ʻoe i ke ʻano o ka ʻikepili hiki ke hōʻike ʻia ma ka honua a me nā hana a lākou e hāʻawi ai i ka pōmaikaʻi nui loa.

Source: www.habr.com

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