{"id":36632,"date":"2019-10-31T22:12:47","date_gmt":"2019-10-31T19:12:47","guid":{"rendered":"https:\/\/prohoster.info\/blog\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3\/"},"modified":"2019-10-31T22:12:47","modified_gmt":"2019-10-31T19:12:47","slug":"globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","title":{"rendered":"Glob\u00e1lisok \u2013 adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l\u00f3 sz\u00f3rt t\u00f6mb\u00f6k. Sz\u00f3rt t\u00f6mb\u00f6k. 3. r\u00e9sz","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Glob\u00e1lisok \u2013 adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l\u00f3 sz\u00f3rt t\u00f6mb\u00f6k. Sz\u00f3rt t\u00f6mb\u00f6k. 3. r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/07\/ac6eefbfb9d7cc28c3f2ca85c7d1adb2.jpg\" style=\"display:block;margin: 0 auto;\" \/>A kor\u00e1bbi r\u00e9szekben (<noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/263791\/\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/264173\/\">2<\/a><\/noindex>) a glob\u00e1lisokr\u00f3l mint f\u00e1r\u00f3l besz\u00e9lt\u00fcnk, ebben a r\u00e9szben a glob\u00e1lisokat sz\u00f3rt t\u00f6mb\u00f6kk\u00e9nt fogjuk vizsg\u00e1lni.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D0%B7%D1%80%D0%B5%D0%B6%D1%91%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2\">Sz\u00f3rt t\u00f6mb<\/a><\/noindex> \u2013 egy olyan t\u00f6mb t\u00edpusa, amelyben a legt\u00f6bb \u00e9rt\u00e9k azonos \u00e9rt\u00e9ket vesz fel.<\/p>\n<p>A gyakorlatban gyakran el\u0151fordulnak olyan hatalmas sz\u00f3rt t\u00f6mb\u00f6k, hogy nincs \u00e9rtelme mem\u00f3ri\u00e1t foglalni az azonos elemekkel. Ez\u00e9rt \u00e9rdemes sz\u00f3rt t\u00f6mb\u00f6ket megval\u00f3s\u00edtani \u00fagy, hogy ne pazaroljunk mem\u00f3ri\u00e1t az azonos \u00e9rt\u00e9kek t\u00e1rol\u00e1s\u00e1ra.<br \/>\nN\u00e9h\u00e1ny programoz\u00e1si nyelvben a sz\u00f3rt t\u00f6mb\u00f6k magukban foglalj\u00e1k a nyelvet, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jsoftware.com\/help\/dictionary\/d211.htm\">p\u00e9ld\u00e1ul a J<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.mathworks.com\/help\/matlab\/ref\/sparse.html\">MATLAB<\/a><\/noindex>. M\u00e1s programoz\u00e1si nyelvekben speci\u00e1lis k\u00f6nyvt\u00e1rak \u00e1llnak rendelkez\u00e9sre, amelyek lehet\u0151v\u00e9 teszik a megval\u00f3s\u00edt\u00e1st. C++-hoz: <noindex><a rel=\"nofollow\" href=\"http:\/\/eigen.tuxfamily.org\/dox-devel\/GettingStarted.html\">Eigen<\/a><\/noindex> \u00e9s m\u00e1sok. <\/p>\n<p>A glob\u00e1lisok j\u00f3 jel\u00f6ltek a sz\u00f3rt t\u00f6mb\u00f6k megval\u00f3s\u00edt\u00e1s\u00e1ra, mert:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li>Csak a bizonyos csom\u00f3pontok \u00e9rt\u00e9keit t\u00e1rolj\u00e1k, \u00e9s nem t\u00e1rolj\u00e1k a meghat\u00e1rozatlan \u00e9rt\u00e9keket;<\/li>\n<li>A csom\u00f3pont \u00e9rt\u00e9k\u00e9hez val\u00f3 hozz\u00e1f\u00e9r\u00e9s interf\u00e9sze rendk\u00edv\u00fcl hasonl\u00f3 ahhoz, ahogyan sok programoz\u00e1si nyelvben megval\u00f3s\u00edtj\u00e1k a t\u00f6bbr\u00e9t\u0171 t\u00f6mb elemeihez val\u00f3 hozz\u00e1f\u00e9r\u00e9st.\n<pre><code class=\"bash\">Set ^a(1, 2, 3)=5\nWrite ^a(1, 2, 3)<\/code><\/pre>\n<p>\n<\/li>\n<li>A glob\u00e1lis egy el\u00e9g alacsony szint\u0171 adatstrukt\u00fara, ez\u00e9rt kiemelked\u0151 sebess\u00e9ggel rendelkezik (sz\u00e1zezrekt\u0151l t\u00f6bb t\u00edzmilli\u00f3 tranzakci\u00f3ig m\u00e1sodpercenk\u00e9nt, az eszk\u00f6z\u00f6kt\u0151l f\u00fcgg\u0151en, l\u00e1sd: <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/257501\/\">1<\/a><\/noindex>)<\/li>\n<\/ol>\n<p><\/p>\n<blockquote><p>Mivel a glob\u00e1lis egy tart\u00f3s strukt\u00fara, a sz\u00f3rt t\u00f6mb\u00f6ket akkor \u00e9rdemes megval\u00f3s\u00edtani, amikor el\u0151re tudjuk, hogy az operat\u00edv mem\u00f3ria mennyis\u00e9ge nem lesz elegend\u0151.<\/p><\/blockquote>\n<p>\nA sz\u00f3rt t\u00f6mb\u00f6k megval\u00f3s\u00edt\u00e1sainak egyik jellemz\u0151je, hogy alap\u00e9rtelmezett \u00e9rt\u00e9ket adnak vissza, ha egy meghat\u00e1rozatlan cell\u00e1hoz fordulunk.<\/p>\n<p>Ezt meg lehet val\u00f3s\u00edtani az <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex> haszn\u00e1lat\u00e1val a COS-ban. Ebben a p\u00e9ld\u00e1ban egy 3 dimenzi\u00f3s t\u00f6mb\u00f6t vizsg\u00e1lunk.<\/p>\n<pre><code>SET a = $GET(^a(x,y,z), defValue)<\/code><\/pre>\n<p>\nMilyen feladatokhoz sz\u00fcks\u00e9gesek a sz\u00f3rt t\u00f6mb\u00f6k, \u00e9s hogyan seg\u00edthetnek a glob\u00e1lisok?<\/p>\n<h2>Kapcsolati m\u00e1trix<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D1%81%D0%BC%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">Az ilyen m\u00e1trixokat<\/a><\/noindex> a grafikonok \u00e1br\u00e1zol\u00e1s\u00e1ra haszn\u00e1lj\u00e1k:<\/p>\n<p><img decoding=\"async\" alt=\"Glob\u00e1lisok \u2013 adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l\u00f3 sz\u00f3rt t\u00f6mb\u00f6k. Sz\u00f3rt t\u00f6mb\u00f6k. 3. r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/07\/a580c451610bcacbef154c161ef63939.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNyilv\u00e1nval\u00f3, hogy min\u00e9l nagyobb a grafikon, ann\u00e1l t\u00f6bb null\u00e1nak kell lennie a m\u00e1trixban. Ha p\u00e9ld\u00e1ul egy k\u00f6z\u00f6ss\u00e9gi h\u00e1l\u00f3zat grafikonj\u00e1t vessz\u00fck, \u00e9s hasonl\u00f3 m\u00e1trixban \u00e1br\u00e1zoljuk, akkor az majdnem teljes eg\u00e9sz\u00e9ben null\u00e1kb\u00f3l fog \u00e1llni, azaz sz\u00f3rt t\u00f6mb lesz.<\/p>\n<pre><code class=\"bash\">\u00c1ll\u00edtsa be ^m(id1, id2) = 1 \n\u00c1ll\u00edtsa be ^m(id1, id3) = 1 \n\u00c1ll\u00edtsa be ^m(id1, id4) = 1 \n\u00c1ll\u00edtsa be ^m(id1) = 3 \n\u00c1ll\u00edtsa be ^m(id2, id4) = 1 \n\u00c1ll\u00edtsa be ^m(id2, id5) = 1 \n\u00c1ll\u00edtsa be ^m(id2) = 2\n....\n<\/code><\/pre>\n<p>\nEbben a p\u00e9ld\u00e1ban glob\u00e1lisan t\u00e1rolunk <strong>^m<\/strong> a kapcsolatm\u00e1trixot, valamint a cs\u00facsokhoz tartoz\u00f3 \u00e9lek sz\u00e1m\u00e1t (ki kivel bar\u00e1tkozik \u00e9s h\u00e1ny bar\u00e1tja van).<\/p>\n<p>Ha a gr\u00e1f elemeinek sz\u00e1ma nem haladja meg a 29 milli\u00f3t (ezt a sz\u00e1mot 8 * <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache201512\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GORIENT_appx_limits_long_string\">maxim\u00e1lis sztring m\u00e9rete<\/a><\/noindex>), akkor van egy m\u00e9g gazdas\u00e1gosabb m\u00f3dszer ezen m\u00e1trixok t\u00e1rol\u00e1s\u00e1ra \u2014 bitstringek, mivel a megval\u00f3s\u00edt\u00e1suk sor\u00e1n k\u00fcl\u00f6n\u00f6sen optimaliz\u00e1ltak a nagy h\u00e9zagok.<\/p>\n<p>A bitstringekkel v\u00e9gzett manipul\u00e1ci\u00f3kat a <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fbit\">$BIT<\/a><\/noindex>. <\/p>\n<pre><code class=\"bash\">funkci\u00f3 v\u00e9gzi; bit be\u00e1ll\u00edt\u00e1sa\nSET $BIT(rowID, positionID) = 1\n; bit lek\u00e9rdez\u00e9se\nWrite $BIT(rowID, positionID)\n<\/code><\/pre>\n<p><\/p>\n<h2>A v\u00e9gleges automata \u00e1tmeneti t\u00e1bl\u00e1zata<\/h2>\n<p>\nMivel a v\u00e9gleges automata \u00e1tmeneti gr\u00e1f egy hagyom\u00e1nyos gr\u00e1f, ez\u00e9rt a v\u00e9gleges automata \u00e1tmeneti t\u00e1bl\u00e1zata is ugyanaz a szomsz\u00e9ds\u00e1gi m\u00e1trix, amir\u0151l m\u00e1r kor\u00e1bban sz\u00f3 esett.<\/p>\n<h2>Sejtes automat\u00e1k<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Glob\u00e1lisok \u2013 adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l\u00f3 sz\u00f3rt t\u00f6mb\u00f6k. Sz\u00f3rt t\u00f6mb\u00f6k. 3. r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/07\/b9fedb51cd1c8fced79ca221a925349c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA legismertebb sejtes automata \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%96%D0%B8%D0%B7%D0%BD%D1%8C_(%D0%B8%D0%B3%D1%80%D0%B0)\">a '\u00c9let' j\u00e1t\u00e9k<\/a><\/noindex>, amely a szab\u00e1lyai miatt (amikor a sejtnek sok szomsz\u00e9dja van \u2014 elhal) egy ritka t\u00f6mb\u00f6t k\u00e9pvisel.<\/p>\n<p>Stephen Wolfram \u00fagy v\u00e9li, hogy a sejtes automata egy <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/A_New_Kind_of_Science\">\u00faj tudom\u00e1ny\u00e1g<\/a><\/noindex>. 2002-ben megjelenteti 1280 oldalas k\u00f6nyv\u00e9t, az 'A New Kind of Science'-t, amelyben sz\u00e9lesk\u00f6r\u0171en \u00e9rvel, hogy a sejtes automat\u00e1k ter\u00e9n el\u00e9rt eredm\u00e9nyek nem izol\u00e1ltak, hanem meglehet\u0151sen tart\u00f3sak \u00e9s nagy jelent\u0151s\u00e9ggel b\u00edrnak a tudom\u00e1ny minden ter\u00fclet\u00e9n.<\/p>\n<p>Bizony\u00edtott\u00e1k, hogy b\u00e1rmely sz\u00e1m\u00edt\u00f3g\u00e9pen v\u00e9grehajthat\u00f3 algoritmus megval\u00f3s\u00edthat\u00f3 sejtes automat\u00e1val. A sejtes automat\u00e1kat dinamikus k\u00f6rnyezetek \u00e9s rendszerek modellez\u00e9s\u00e9re, algoritmikus feladatok megold\u00e1s\u00e1ra \u00e9s egy\u00e9b c\u00e9lokra haszn\u00e1lj\u00e1k.<\/p>\n<p>Ha hatalmas mez\u0151nk van, \u00e9s r\u00f6gz\u00edten\u00fcnk kell a sejtes automata minden k\u00f6zbens\u0151 \u00e1llapot\u00e1t, \u00e9rdemes glob\u00e1lis v\u00e1ltoz\u00f3kat haszn\u00e1lni.<\/p>\n<h2>T\u00e9rk\u00e9p\u00e9szet<\/h2>\n<p>\nAz els\u0151 dolog, ami eszembe jut, amikor ritka t\u00f6mb\u00f6k haszn\u00e1lat\u00e1r\u00f3l van sz\u00f3 \u2014 a t\u00e9rk\u00e9p\u00e9szeti feladatok.<\/p>\n<p>\u00c1ltal\u00e1ban a t\u00e9rk\u00e9peken nagyon sok \u00fcres t\u00e9r tal\u00e1lhat\u00f3. Ha a t\u00e9rk\u00e9pet nagy pixelek form\u00e1j\u00e1ban k\u00e9pzelj\u00fck el, a F\u00f6ld pixeljeinek 71%-a az \u00f3ce\u00e1nnal lesz elfoglalva. Ritka t\u00f6mb. Ha pedig csak az emberi kezek \u00e1ltal l\u00e9trehozott dolgokat \u00e1br\u00e1zoljuk, akkor az \u00fcres ter\u00fclet t\u00f6bb mint 95%-ot tesz ki.<\/p>\n<p>Term\u00e9szetesen senki sem t\u00e1rolja a t\u00e9rk\u00e9peket raszteres t\u00f6mb\u00f6k form\u00e1j\u00e1ban, vektoros \u00e1br\u00e1zol\u00e1st haszn\u00e1lnak.<br \/>\nDe mit is jelentenek a vektor t\u00e9rk\u00e9pek? Ez egyfajta keret, amely pontokb\u00f3l, poliline\u00e1kb\u00f3l \u00e9s poligonokb\u00f3l \u00e1ll.<br \/>\nTulajdonk\u00e9ppen ez egy pontokb\u00f3l \u00e9s k\u00f6zt\u00fck l\u00e9v\u0151 kapcsolatokb\u00f3l \u00e1ll\u00f3 adatb\u00e1zis.<\/p>\n<p>A galaxisunk t\u00e9rk\u00e9pez\u00e9s\u00e9nek egyik legambici\u00f3zusabb feladata a Gaia-teleszk\u00f3ppal val\u00f3 t\u00e9rk\u00e9pez\u00e9s. \u00c1tvitt \u00e9rtelemben galaxisunk, ak\u00e1rcsak az eg\u00e9sz univerzum, egy hatalmas, ritk\u00e1san elosztott t\u00e9r: \u00f3ri\u00e1si \u00fcres terek, ahol ritka apr\u00f3 pontok \u2013 csillagok \u2013 tal\u00e1lhat\u00f3k. Az \u00fcres helyek ar\u00e1nya 99,999999...%. Galaxisunk t\u00e9rk\u00e9p\u00e9nek t\u00e1rol\u00e1s\u00e1ra a glob\u00e1lis adatb\u00e1zis, a Cach\u00e9 ker\u00fclt kiv\u00e1laszt\u00e1sra.<\/p>\n<p>Nem ismerem pontosan a glob\u00e1lok strukt\u00far\u00e1j\u00e1t ebben a projektben, de felt\u00e9telezem, hogy valami hasonl\u00f3 lehet:<\/p>\n<pre><code class=\"bash\">Set ^galaxy(b, l, d) = 1; A csillag katalogus sz\u00e1ma, ha van\nSet ^galaxy(b, l, d, \"name\") = \"Nap\"\nSet ^galaxy(b, l, d, \"type\") = \"norm\u00e1l\"; lehet\u0151s\u00e9gek: fekete lyuk, kvaz\u00e1r, v\u00f6r\u00f6s t\u00f6rpe stb.\nSet ^galaxy(b, l, d, \"weight\") = 14E50\nSet ^galaxy(b, l, d, \"planetes\") = 7\nSet ^galaxy(b, l, d, \"planetes\", 1) = \"Merk\u00far\"\nSet ^galaxy(b, l, d, \"planetes\", 1, weight) = 1E20\n...\n<\/code><\/pre>\n<p>\n<i>Ahol b, l, d \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wiki2.org\/wiki\/Galaktikus_rendszer_koordin\u00e1t\u00e1k\">galaktikus koordin\u00e1t\u00e1k sz\u00e9less\u00e9g, hossz\u00fas\u00e1g<\/a><\/noindex> \u00e9s a Napig terjed\u0151 t\u00e1vols\u00e1g.<\/i><\/p>\n<p>A glob\u00e1lok rugalmas strukt\u00far\u00e1ja lehet\u0151v\u00e9 teszi b\u00e1rmilyen sz\u00fcks\u00e9ges jellemz\u0151 t\u00e1rol\u00e1s\u00e1t a csillagok \u00e9s bolyg\u00f3k eset\u00e9ben, mivel a glob\u00e1lis adatb\u00e1zisok s\u00e9ma n\u00e9lk\u00fcli (scheme-less).<\/p>\n<p>A galaxisunk t\u00e9rk\u00e9p\u00e9nek t\u00e1rol\u00e1s\u00e1ra a Cach\u00e9t nemcsak a rugalmass\u00e1ga miatt v\u00e1lasztott\u00e1k, hanem az\u00e9rt is, mert rendk\u00edv\u00fcl gyorsan k\u00e9pes adatfolyamokat t\u00e1rolni, mik\u00f6zben mell\u00e9kesen index glob\u00e1lokat hoz l\u00e9tre a gyors keres\u00e9shez.<\/p>\n<p>Ha visszat\u00e9r\u00fcnk a F\u00f6ldre, glob\u00e1lokon t\u00e9rk\u00e9pez\u00e9si projekteket hoztak l\u00e9tre. <noindex><a rel=\"nofollow\" href=\"http:\/\/wiki.openstreetmap.org\/wiki\/Xapi\">OpenStreetMap XAPI<\/a><\/noindex> \u00e9s az OpenStreetMap fork \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.fosm.org\/\">FOSM<\/a><\/noindex>.<\/p>\n<p>Nemr\u00e9g a <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/267459\/\">Cach\u00e9 hackathonon<\/a><\/noindex> geogr\u00e1fiai indexeket val\u00f3s\u00edtottak meg. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-ru\/spatialindex\">Geospatial<\/a><\/noindex>. V\u00e1rjuk a cikk szerz\u0151it\u00f3l a megval\u00f3s\u00edt\u00e1s r\u00e9szleteit.<\/p>\n<h3>A t\u00e9rbeli indexek megval\u00f3s\u00edt\u00e1sa a glob\u00e1lban az OpenStreetMap XAPI-ban.<\/h3>\n<p>\nA k\u00e9pek ebb\u0151l a <noindex><a rel=\"nofollow\" href=\"http:\/\/www.slideshare.net\/george.james\/fosdem-2010-gtm-and-openstreetmap\">prezent\u00e1ci\u00f3b\u00f3l sz\u00e1rmaznak.<\/a><\/noindex>.<\/p>\n<p>A F\u00f6ld felsz\u00edn\u00e9t n\u00e9gyzetekre osztj\u00e1k, majd azokat aln\u00e9gyzetekre, az aln\u00e9gyzeteket pedig \u00fajabb aln\u00e9gyzetekre \u00e9s \u00edgy tov\u00e1bb. Ez\u00e1ltal hierarchikus strukt\u00far\u00e1t kapunk, amelynek t\u00e1rol\u00e1s\u00e1ra glob\u00e1lokat hoztak l\u00e9tre.<\/p>\n<p><img decoding=\"async\" alt=\"Glob\u00e1lisok \u2013 adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l\u00f3 sz\u00f3rt t\u00f6mb\u00f6k. Sz\u00f3rt t\u00f6mb\u00f6k. 3. r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/07\/239c54c201b8013f1897ecf1ccadcc9c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nB\u00e1rmikor szinte azonnal k\u00e9rhetj\u00fck a sz\u00fcks\u00e9ges n\u00e9gyzetet vagy annak t\u00f6rl\u00e9s\u00e9t, mik\u00f6zben az \u00f6sszes aln\u00e9gyzetet is visszakapjuk vagy t\u00f6r\u00f6lj\u00fck.<\/p>\n<p>Hasonl\u00f3 elrendez\u00e9st a glob\u00e1lokon t\u00f6bbf\u00e9lek\u00e9ppen meg lehet val\u00f3s\u00edtani.<\/p>\n<p>1. lehet\u0151s\u00e9g:<\/p>\n<pre><code class=\"bash\">Set ^m(a, b, a, c, d, a, b, c, d, a, b, a, c, d, a, b, c, d, a, 1) = azEls\u0151PontIdje\nSet ^m(a, b, a, c, d, a, b, c, d, a, b, a, c, d, a, b, c, d, a, 2) = aM\u00e1sodikPontIdje\n...<\/code><\/pre>\n<p>\n2. lehet\u0151s\u00e9g:<\/p>\n<pre><code class=\"bash\">Set ^m('abacdabcdabacdabcda', 1) = idEls\u0151Pont\nSet ^m('abacdabcdabacdabcda', 2) = idM\u00e1sodikPont\n...<\/code><\/pre>\n<p>\nMindk\u00e9t esetben nem neh\u00e9z a COS\/M-on megk\u00e9rni a tetsz\u0151leges szint\u0171 n\u00e9gyzetben tal\u00e1lhat\u00f3 pontokat. Az els\u0151 esetben k\u00f6nnyebb lesz a tetsz\u0151leges szint\u0171 n\u00e9gyzetek ter\u00fcleteinek tiszt\u00edt\u00e1sa, de erre ritk\u00e1n van sz\u00fcks\u00e9g.<\/p>\n<p>Egy als\u00f3 szint\u0171 n\u00e9gyzet p\u00e9ld\u00e1ja:<\/p>\n<p><img decoding=\"async\" alt=\"Glob\u00e1lisok \u2013 adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l\u00f3 sz\u00f3rt t\u00f6mb\u00f6k. Sz\u00f3rt t\u00f6mb\u00f6k. 3. r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/07\/1fba7eb9253c6af9206cb168c6d43f2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nItt van n\u00e9h\u00e1ny glob\u00e1lis a XAPI projektb\u0151l: indukci\u00f3s index a glob\u00e1lisban:<\/p>\n<p><img decoding=\"async\" alt=\"Glob\u00e1lisok \u2013 adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l\u00f3 sz\u00f3rt t\u00f6mb\u00f6k. Sz\u00f3rt t\u00f6mb\u00f6k. 3. r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/07\/3a80dd4c3fb23d0f2d3094703966f74b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGlob\u00e1lis <strong>^way<\/strong> pontok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Polygonal_chain\">vonalvezet\u00e9sek<\/a><\/noindex> (utak, kis foly\u00f3k stb.) \u00e9s soksz\u00f6gek (z\u00e1rt ter\u00fcletek: \u00e9p\u00fcletek, erd\u0151k stb.).<\/p>\n<h2>Durva oszt\u00e1lyoz\u00e1s a ritka t\u00f6mb\u00f6k glob\u00e1lis felhaszn\u00e1l\u00e1s\u00e1r\u00f3l.<\/h2>\n<p><\/p>\n<ol>\n<li>T\u00e1rhelyezz\u00fck bizonyos objektumok koordin\u00e1t\u00e1it \u00e9s \u00e1llapotait (t\u00e9rk\u00e9pez\u00e9s, sejtekkel m\u0171k\u00f6d\u0151 autom\u00e1t\u00e1k)<\/li>\n<li>Ritka m\u00e1trixokat t\u00e1rolunk.<\/li>\n<\/ol>\n<p>\nA 2. esetben, amikor egy adott koordin\u00e1t\u00e1t k\u00e9r\u00fcnk, ahol az elemnek nincs hozz\u00e1rendelt \u00e9rt\u00e9ke, az alap\u00e9rtelmezett \u00e9rt\u00e9k\u00e9t kell kapnunk a ritka t\u00f6mbb\u0151l.<\/p>\n<h2>El\u0151ny\u00f6k, amelyeket a t\u00f6bbdimenzi\u00f3s m\u00e1trixok glob\u00e1lis t\u00e1rol\u00e1s\u00e1val kapunk<\/h2>\n<p>\n<b>Gyors t\u00f6rl\u00e9s \u00e9s\/vagy ter\u00fcletek v\u00e1laszt\u00e1sa, amelyek a sorok, s\u00edkok, kock\u00e1k stb. t\u00f6bb\u00e9vesek.<\/b> Olyan esetekben, amikor eg\u00e9sz sz\u00e1m\u00fa indexeket haszn\u00e1lnak, hasznos lehet a ter\u00fcletek gyors t\u00f6rl\u00e9s\u00e9nek \u00e9s\/vagy v\u00e1laszt\u00e1s\u00e1nak lehet\u0151s\u00e9ge, amelyek a sorok, s\u00edkok, kock\u00e1k stb. t\u00f6bbsz\u00f6r\u00f6sei.<\/p>\n<p>A parancs <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ckill\">Kill<\/a><\/noindex> t\u00f6r\u00f6lhet\u00fcnk egyedi elemet, sort, s\u0151t ak\u00e1r egy eg\u00e9sz s\u00edkot is. A glob\u00e1lisok jellemz\u0151inek k\u00f6sz\u00f6nhet\u0151en ez nagym\u00e9rt\u00e9kben felgyorsul \u2013 ezerrel gyorsabb, mint az elemenk\u00e9nti t\u00f6rl\u00e9s.<\/p>\n<p>Az \u00e1br\u00e1n egy h\u00e1romdimenzi\u00f3s t\u00f6mb l\u00e1that\u00f3 glob\u00e1lisan <strong>^a<\/strong> \u00e9s k\u00fcl\u00f6nb\u00f6z\u0151 t\u00f6rl\u00e9si m\u00f3dok.<\/p>\n<p><img decoding=\"async\" alt=\"Glob\u00e1lisok \u2013 adatok t\u00e1rol\u00e1s\u00e1ra szolg\u00e1l\u00f3 sz\u00f3rt t\u00f6mb\u00f6k. Sz\u00f3rt t\u00f6mb\u00f6k. 3. r\u00e9sz\" src=\"\/wp-content\/uploads\/2019\/07\/cc85ee59d42595df0d72480d3e533a12.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA ter\u00fcletek kiv\u00e1laszt\u00e1s\u00e1hoz ismert indexek alapj\u00e1n a <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_cmerge\">Merge<\/a><\/noindex>.<\/p>\n<p>A m\u00e1trix oszlop\u00e1nak kiv\u00e1laszt\u00e1sa a Column v\u00e1ltoz\u00f3ba:<\/p>\n<pre><code class=\"bash\">; Adjuk meg a h\u00e1romdimenzi\u00f3s ritka t\u00f6mb\u00f6t 3x3x3\nSet ^a(0,0,0)=1,^a(2,2,0)=1,^a(2,0,1)=1,^a(0,2,1)=1,^a(2,2,2)=1,^a(2,1,2)=1\nMerge Column = ^a(2,2)\n; Hozzuk l\u00e9tre a Column v\u00e1ltoz\u00f3t\nZwrite Column\n<\/code><\/pre>\n<p>\nK\u00f6vetkeztet\u00e9s:<\/p>\n<pre><code class=\"bash\">Column(0)=1\nColumn(2)=1\n<\/code><\/pre>\n<p>\nAmi \u00e9rdekes, hogy a Column v\u00e1ltoz\u00f3ban is egy ritka t\u00f6mb keletkezett, amelyre szint\u00e9n a <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex>, mivel az alap\u00e9rtelmezett \u00e9rt\u00e9kek nincsenek benne t\u00e1rolva.<\/p>\n<p>A ter\u00fcletek kiv\u00e1laszt\u00e1sa egy kis programon kereszt\u00fcl is lehets\u00e9ges a $Order <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_forder\">haszn\u00e1lat\u00e1val. Ez k\u00fcl\u00f6n\u00f6sen k\u00e9nyelmes olyan ter\u00fcleteken, ahol az indexek nem kvant\u00e1ltak (t\u00e9rk\u00e9pez\u00e9s).<\/a><\/noindex>.<\/p>\n<h2>Z\u00e1r\u00e1s<\/h2>\n<p>\nA jelenlegi id\u0151szak \u00faj, ambici\u00f3zus feladatok el\u00e9 \u00e1ll\u00edt minket. A gr\u00e1fok milli\u00e1rdokb\u00f3l \u00e1ll\u00f3 cs\u00facsokb\u00f3l, a t\u00e9rk\u00e9pek pedig milli\u00e1rdokb\u00f3l \u00e1ll\u00f3 pontokb\u00f3l \u00e1llhatnak, \u00e9s valaki ak\u00e1r a saj\u00e1t univerzuma l\u00e9trehoz\u00e1s\u00e1t is meg k\u00edv\u00e1nja val\u00f3s\u00edtani sejtes automat\u00e1k seg\u00edts\u00e9g\u00e9vel (<noindex><a rel=\"nofollow\" href=\"http:\/\/lenta.ru\/news\/2009\/08\/28\/universe\/\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.worldscientific.com\/worldscibooks\/10.1142\/4702\">2<\/a><\/noindex>).<\/p>\n<p>Amikor a sz\u00f3rt t\u00f6mb\u00f6k adatmennyis\u00e9ge m\u00e1r nem f\u00e9r el a mem\u00f3ri\u00e1ban, de sz\u00fcks\u00e9g van a vel\u00fck val\u00f3 munk\u00e1ra, \u00e9rdemes megfontolni a hasonl\u00f3 projektek megval\u00f3s\u00edt\u00e1s\u00e1t glob\u00e1lis platformokon \u00e9s COS-on.<\/p>\n<p>K\u00f6sz\u00f6nj\u00fck a figyelmet! V\u00e1rjuk a k\u00e9rd\u00e9seiket \u00e9s javaslataikat a megjegyz\u00e9sekben.<\/p>\n<p><b>Megjegyz\u00e9s<\/b>: <i>Ez a cikk \u00e9s az ehhez f\u0171z\u00f6tt megjegyz\u00e9seim a saj\u00e1t v\u00e9lem\u00e9nyemet t\u00fckr\u00f6zik, \u00e9s nem \u00e1llnak kapcsolatban az InterSystems v\u00e1llalat hivatalos \u00e1ll\u00e1spontj\u00e1val.<\/i><br \/>\n<br \/>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/268465\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 (1, 2) \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 \u043a\u0430\u043a \u043e \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u0445, \u0432 \u044d\u0442\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044b \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0447\u0442\u043e \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27432,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36632","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0427\u0430\u0441\u0442\u044c 3 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:12:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:12:47+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47A glob\u00e1lis platformok - a t\u00e1rolt adatok kincsei. Sz\u00f3rt t\u00f6mb\u00f6k. 3. r\u00e9sz | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0427\u0430\u0441\u0442\u044c 3 | ProHoster","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:12:47+00:00","article:modified_time":"2019-10-31T19:12:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36632","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 04:12:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:41:52","updated":"2026-01-22 04:12:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/36632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=36632"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/36632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/27432"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=36632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=36632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=36632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}