Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1

Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1 Pedang database nyata - globals - geus lila dipikawanoh, tapi masih saeutik nyaho kumaha carana make eta éféktif atawa teu boga superweapon ieu pisan.

Upami anjeun nganggo global dina ngarengsekeun masalah anu aranjeunna leres-leres saé, anjeun tiasa ngahontal hasil anu luar biasa. Boh dina produktivitas boh dina nyederhanakeun solusi masalah (1, 2).

Globals mangrupakeun cara husus pikeun nyimpen jeung ngolah data, sagemblengna béda ti tabel di SQL. Aranjeunna muncul dina 1966 dina basa M(UMPS) (perkembangan évolusionér - Cache ObjectScript, hereinafter COS) dina database médis sarta masih aya aktip dipaké, sarta ogé tembus kana sababaraha wewengkon séjén dimana reliabiliti jeung kinerja tinggi diperlukeun: keuangan, dagang, jsb.

Globals dina DBMSs modern ngarojong transaksi, logging, réplikasi, jeung partisi. Jelema. aranjeunna tiasa dianggo pikeun ngawangun sistem modern, dipercaya, disebarkeun sareng gancang.

Globals teu ngawatesan anjeun kana model relational. Aranjeunna masihan anjeun kabébasan pikeun ngembangkeun struktur data anu dioptimalkeun pikeun tugas khusus. Pikeun loba aplikasi, pamakéan pinter globals sabenerna bisa jadi pakarang rusiah, delivering kinerja anu pamekar aplikasi relational ukur bisa impian.

Globals salaku cara pikeun nyimpen data bisa dipaké dina loba basa program modern, duanana tingkat luhur jeung low. Ku alatan éta, dina artikel ieu kuring bakal museurkeun husus dina globals, sarta lain dina basa ti mana maranéhna pernah datangna.

2. Kumaha globals jalan

Hayu urang mimiti ngarti kumaha globals jalan jeung naon kaunggulan maranéhanana. Global tiasa ditingali tina sudut pandang anu béda. Dina bagian ieu artikel urang bakal kasampak di aranjeunna salaku tangkal. Atawa kawas gudang data hirarki.

Pikeun nempatkeun éta saderhana, global mangrupikeun susunan pengkuh. Array anu otomatis disimpen kana disk.
Hésé ngabayangkeun anu langkung saderhana pikeun nyimpen data. Dina kode (dina basa COS / M) éta béda ti Asép Sunandar Sunarya associative biasa ukur dina simbol ^ saméméh ngaran.

Pikeun nyimpen data sacara global, anjeun henteu kedah diajar basa query SQL; paréntah pikeun damel sareng aranjeunna saderhana pisan. Aranjeunna tiasa diajar dina sajam.

Hayu urang mimitian ku conto pangbasajanna. Tangkal tingkat tunggal sareng 2 cabang. Conto ditulis dina COS.

Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1

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



Nalika nyelapkeun inpormasi kana global (Set paréntah), 3 hal otomatis lumangsung:

  1. Nyimpen data kana disk.
  2. Indexing. Naon anu aya dina kurung mangrupikeun konci (dina literatur Inggris - "subscript"), sareng di sisi katuhu sami sareng nilai ("nilai titik").
  3. Asihan. Data diurutkeun dumasar konci. Dina mangsa nu bakal datang, nalika traversing Asép Sunandar Sunarya, unsur kahiji bakal "Sergey Smith", sarta kadua "John Sidorov". Lamun narima daptar pamaké ti global, database teu runtah waktu asihan. Leuwih ti éta, anjeun tiasa menta kaluaran daptar diurutkeun, mimitian ti sagala konci, sanajan hiji non-existent (kaluaran bakal mimitian ti konci nyata munggaran, nu asalna sanggeus hiji non-existent).

Sadaya operasi ieu lumangsung incredibly gancang. Dina komputer bumi kuring, kuring nampi nilai dugi ka 750 sisipan / detik dina hiji prosés. Dina prosesor multi-inti nilaina tiasa ngahontal puluhan juta sisipan / detik.

Tangtu, laju sisipan sorangan teu nyebutkeun loba. Anjeun tiasa, contona, gancang pisan nyerat inpormasi kana file téks - sapertos kieu nurutkeun gosip ngolah visa jalan. Tapi dina kasus globals, urang meunang gudang indéks terstruktur salaku hasilna, nu bisa gampang tur gancang digarap kalawan di mangsa nu bakal datang.

Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1

  • Kakuatan pangbadagna globals nyaéta laju dimana titik anyar tiasa diselapkeun.
  • Data di global sok diindeks. Traversing aranjeunna, duanana dina hiji tingkat tur jero kana tangkal, salawasna gancang.

Hayu urang tambahkeun sababaraha cabang tingkat kadua sareng katilu ka global.

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

Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1

Éta atra yén tangkal multi-tingkat bisa diwangun dumasar kana globals. Leuwih ti éta, aksés ka titik mana wae ampir sakedapan alatan otomatis-indexing salila sisipan. Sareng dina tingkat naon waé tangkal, sadaya dahan diurutkeun ku konci.

Sakumaha anjeun tiasa tingali, inpormasi tiasa disimpen dina konci sareng nilai. Panjang konci total (jumlah panjang sadaya indéks) tiasa ngahontal 511 bait, jeung nilai 3.6 MB pikeun Cache. Jumlah tingkat dina tangkal (jumlah diménsi) nyaéta 31.

titik metot séjén. Anjeun tiasa ngawangun tangkal tanpa nangtukeun nilai titik tingkat luhur.

Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1

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

Bunderan kosong mangrupikeun titik anu henteu ngagaduhan nilai anu dipasihkeun.

Pikeun langkung ngartos global, hayu urang bandingkeun sareng tangkal anu sanés: tangkal kebon sareng tangkal nami sistem file.

Hayu urang ngabandingkeun tatangkalan di global jeung struktur hirarki paling akrab ka urang: jeung tangkal biasa nu tumuwuh di kebon jeung sawah, kitu ogé jeung sistem file.

Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1

Sakumaha urang tingali dina tangkal kebon, daun sareng buah ngan ukur aya di tungtung dahan.
Sistem file - inpormasi disimpen ukur di tungtung cabang, anu mangrupikeun nami file anu mumpuni.

Sareng ieu mangrupikeun struktur data global.

Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1Bedana:

  1. Titik internal: informasi dina global bisa disimpen dina unggal titik, teu ngan di tungtung cabang.
  2. Node éksternal: Global kedah netepkeun nilai-nilai dina tungtung dahan, sedengkeun FS sareng tangkal kebon henteu.



Dina watesan titik internal, urang bisa disebutkeun yen struktur global mangrupa superset tina struktur tangkal ngaran dina sistem file na tangkal taman. Jelema. leuwih fléksibel.

Sacara umum, global nyaéta tangkal maréntahkeun kalawan kamampuhan pikeun nyimpen data dina unggal titik.

Pikeun langkung ngartos padamelan global, hayu urang bayangkeun naon anu bakal kajantenan upami panyipta sistem file nganggo pendekatan anu sami sareng global pikeun nyimpen inpormasi?

  1. Mupus hiji file dina hiji diréktori bakal otomatis ngahapus diréktori, kitu ogé sakabéh diréktori overlying ngandung ngan hiji diréktori anyar dihapus.
  2. Aya bakal teu kedah pikeun directories. Aya ngan saukur file sareng subfile sareng file tanpa subfile. Lamun dibandingkeun jeung tangkal biasa, unggal dahan bakal jadi buah.

    Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1

  3. Hal-hal sapertos file README.txt panginten henteu diperyogikeun. Sadayana anu kedah nyarios ngeunaan eusi diréktori tiasa ditulis kana file diréktori éta sorangan. Dina spasi jalur, nami file teu bisa dibédakeun tina ngaran diréktori, jadi ieu mungkin pikeun meunangkeun ku ngan file.
  4. Laju mupus diréktori nganggo subdirektori sareng file anu disarangkeun bakal ningkat sacara dramatis. Sababaraha kali dina Habré aya tulisan ngeunaan sabaraha lila sareng sesah ngahapus jutaan file leutik (1, 2). Sanajan kitu, lamun nyieun sistem pseudo-file dina global, bakal butuh sababaraha detik atawa fraksi eta. Nalika kuring diuji ngahapus subtrees dina komputer imah, dipiceun 1-96 juta titik tina tangkal dua tingkat dina HDD (teu SSD) dina 341 detik. Leuwih ti éta, urang ngobrol ngeunaan mupus bagian tina tangkal, teu ngan sakabéh file kalawan globals.

Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1
Ngahapus subtrees mangrupikeun titik anu kuat pikeun global. Anjeun teu kedah rekursi pikeun ieu. Ieu lumangsung incredibly gancang.

Dina tangkal urang ieu bisa dipigawé kalayan paréntah maehan.

Kill ^a("+7926X")

Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 1

Pikeun pamahaman hadé naon lampah sadia pikeun urang leuwih globals, Kuring baris nyadiakeun hiji méja pondok.

Paréntah sareng fungsi dasar pikeun damel sareng global di COS

Setel
Nyetel cabang kana titik (upami teu acan ditetepkeun) sareng nilai titik

ngumpulkeun
Nyalin subtree

maehan
Nyoplokkeun subtree

ZKill
Mupus nilai titik husus. Subtree anu muncul tina node henteu keuna

$Query
Lengkep ngaliwat tangkal, asup ka jero tangkal

$Pesenan
Ngaliwatan cabang tina titik khusus

$Data
Mariksa naha node ditetepkeun

$Tambahan
Atomically incrementing nilai node. Pikeun ngahindarkeun maca sareng nyerat, pikeun ACID. Nembe eta geus dianjurkeun pikeun ngarobah kana $Urutan

Hatur nuhun kana perhatian anjeun, kami siap ngajawab patarosan anjeun.

Bantahan: Tulisan ieu sareng koméntar kuring kana éta mangrupikeun pendapat kuring sareng henteu aya hubunganana sareng posisi resmi InterSystems Corporation.

ngahadean Globals mangrupakeun harta-pedang pikeun nyimpen data. Tatangkalan. Bagian 2. Anjeun bakal diajar naon jinis data anu tiasa ditampilkeun dina global sareng tugas naon anu aranjeunna masihan kauntungan anu maksimal.

sumber: www.habr.com

Tambahkeun komentar