{"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\/sv\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","title":{"rendered":"Globala \u2014 mappade lagringsl\u00f6sningar f\u00f6r data. Sparse-arrayer. Del 3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Globala \u2014 mappade lagringsl\u00f6sningar f\u00f6r data. Sparse-arrayer. Del 3\" src=\"\/wp-content\/uploads\/2019\/07\/ac6eefbfb9d7cc28c3f2ca85c7d1adb2.jpg\" style=\"display:block;margin: 0 auto;\" \/>I tidigare delar (<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>) har vi pratat om globaler som tr\u00e4d, i denna kommer vi att betrakta globaler som sparse-arrayer.<\/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\">Sparse-array<\/a><\/noindex> \u00e4r en typ av array d\u00e4r de flesta v\u00e4rdena har samma v\u00e4rde.<\/p>\n<p>I praktiken finns det ofta s\u00e5 stora sparse-arrayer att det inte finns n\u00e5got syfte att anv\u00e4nda minne f\u00f6r att lagra identiska element. D\u00e4rf\u00f6r \u00e4r det meningsfullt att implementera sparse-arrayer s\u00e5 att minnet inte gastar f\u00f6r att lagra samma v\u00e4rden.<br \/>\nI vissa programmeringsspr\u00e5k \u00e4r sparse-arrayer en del av spr\u00e5ket, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jsoftware.com\/help\/dictionary\/d211.htm\">till exempel i J<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.mathworks.com\/help\/matlab\/ref\/sparse.html\">MATLAB<\/a><\/noindex>. I andra programmeringsspr\u00e5k finns det speciella bibliotek som till\u00e5ter deras implementering. F\u00f6r C++ \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/eigen.tuxfamily.org\/dox-devel\/GettingStarted.html\">Eigen<\/a><\/noindex> och andra. <\/p>\n<p>Globala \u00e4r bra kandidater f\u00f6r implementering av sparse-arrayer, eftersom:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li>De lagrar v\u00e4rden endast f\u00f6r specifika noder och lagrar inga v\u00e4rden f\u00f6r icke-definierade;<\/li>\n<li>Gr\u00e4nssnittet f\u00f6r att f\u00e5 tillg\u00e5ng till v\u00e4rdet av en nod liknar mycket det s\u00e4tt som tillg\u00e5ng till ett element i en flerdimensionell array implementeras i m\u00e5nga programmeringsspr\u00e5k.\n<pre><code class=\"bash\">Set ^a(1, 2, 3)=5\nWrite ^a(1, 2, 3)<\/code><\/pre>\n<p>\n<\/li>\n<li>Global \u00e4r en tillr\u00e4ckligt l\u00e5g niv\u00e5 struktur f\u00f6r datalagring, vilket ger utm\u00e4rkta hastighetskarakteristik (fr\u00e5n hundratusentals till tiotals miljoner transaktioner per sekund beroende p\u00e5 h\u00e5rdvara, se. <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/257501\/\">1<\/a><\/noindex>)<\/li>\n<\/ol>\n<p><\/p>\n<blockquote><p>Eftersom globalen \u00e4r en best\u00e4ndig struktur, har det mening att g\u00f6ra sparse-arrayer p\u00e5 dem n\u00e4r det p\u00e5 f\u00f6rhand \u00e4r k\u00e4nt att m\u00e4ngden RAM kommer att vara otillr\u00e4cklig.<\/p><\/blockquote>\n<p>\nEn av egenskaperna hos implementationerna av sparse-arrayer \u00e4r att de returnerar ett visst standardv\u00e4rde om en beg\u00e4ran g\u00f6rs till en icke-definierad cell.<\/p>\n<p>Detta kan implementeras med hj\u00e4lp av funktionen <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex> i COS. I detta exempel presenteras en 3-dimensionell array.<\/p>\n<pre><code>SET a = $GET(^a(x,y,z), defValue)<\/code><\/pre>\n<p>\nVilka uppgifter kr\u00e4ver d\u00e5 sparse-arrayer och hur kan globaler hj\u00e4lpa?<\/p>\n<h2>Adjacensmatris (koppling)<\/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\">S\u00e5dana matriser<\/a><\/noindex> anv\u00e4nds f\u00f6r att representera grafer:<\/p>\n<p><img decoding=\"async\" alt=\"Globala \u2014 mappade lagringsl\u00f6sningar f\u00f6r data. Sparse-arrayer. Del 3\" src=\"\/wp-content\/uploads\/2019\/07\/a580c451610bcacbef154c161ef63939.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet \u00e4r uppenbart att ju st\u00f6rre grafen \u00e4r, desto fler nollor kommer att finnas i matrisen. Om till exempel en social n\u00e4tverksgraf presenteras som en s\u00e5dan matris, kommer den att n\u00e4stan helt best\u00e5 av nollor, dvs. den kommer att vara en sparse-array.<\/p>\n<pre><code class=\"bash\">St\u00e4ll ^m(id1, id2) = 1 \nSt\u00e4ll ^m(id1, id3) = 1 \nSt\u00e4ll ^m(id1, id4) = 1 \nSt\u00e4ll ^m(id1) = 3 \nSt\u00e4ll ^m(id2, id4) = 1 \nSt\u00e4ll ^m(id2, id5) = 1 \nSt\u00e4ll ^m(id2) = 2\n....\n<\/code><\/pre>\n<p>\nI detta exempel sparar vi i globala <strong>^m<\/strong> kopplingsmatrisen samt antalet kontakter f\u00f6r varje nod (vem som \u00e4r v\u00e4nner med vem och antalet v\u00e4nner).<\/p>\n<p>Om antalet element i grafen inte \u00f6verstiger 29 miljoner (detta tal ber\u00e4knas som produkten av 8 * <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache201512\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GORIENT_appx_limits_long_string\">det maximala storleken p\u00e5 str\u00e4ngen<\/a><\/noindex>), finns det en \u00e4nnu mer ekonomisk metod f\u00f6r att lagra s\u00e5dana matriser - bitstr\u00e4ngar, eftersom stora luckor optimeras p\u00e5 ett s\u00e4rskilt s\u00e4tt i deras implementation.<\/p>\n<p>Manipulationer med bitstr\u00e4ngar utf\u00f6rs med funktionen <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\">; st\u00e4ll bit\nSET $BIT(rowID, positionID) = 1\n; h\u00e4mta bit\nSkriv $BIT(rowID, positionID)\n<\/code><\/pre>\n<p><\/p>\n<h2>\u00d6verg\u00e5ngstabell f\u00f6r en automat<\/h2>\n<p>\nEftersom \u00f6verg\u00e5ngsgrafen f\u00f6r en automat \u00e4r en vanlig graf, \u00e4r \u00f6verg\u00e5ngstabellen f\u00f6r en automat ocks\u00e5 samma typ av kopplingsmatris som n\u00e4mnts ovan.<\/p>\n<h2>Cell-automer<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Globala \u2014 mappade lagringsl\u00f6sningar f\u00f6r data. Sparse-arrayer. Del 3\" src=\"\/wp-content\/uploads\/2019\/07\/b9fedb51cd1c8fced79ca221a925349c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen mest k\u00e4nda cellautomaten \u00e4r <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)\">spelet 'Liv'<\/a><\/noindex>, vilket p\u00e5 grund av sina regler (n\u00e4r en cell har m\u00e5nga grannar - d\u00f6r den) utg\u00f6r en gles matris.<\/p>\n<p>Stephen Wolfram anser att cellautomer \u00e4r en <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/A_New_Kind_of_Science\">nytt forskningsomr\u00e5de<\/a><\/noindex>. \u00c5r 2002 publicerade han en 1280 sidor l\u00e5ng bok 'A New Kind of Science', d\u00e4r han brett argumenterar f\u00f6r att prestationer inom cellautomer inte \u00e4r isolerade, utan mycket stabila och har stor betydelse f\u00f6r alla vetenskapsomr\u00e5den.<\/p>\n<p>Det har bevisats att varje algoritm som kan utf\u00f6ras p\u00e5 en dator kan realiseras med hj\u00e4lp av en cellautomat. Cellautomer anv\u00e4nds f\u00f6r att modellera dynamiska milj\u00f6er och system, f\u00f6r att l\u00f6sa algoritmiska problem och f\u00f6r andra syften.<\/p>\n<p>Om vi har ett stort f\u00e4lt och beh\u00f6ver registrera alla mellanliggande tillst\u00e5nd f\u00f6r cellautomaten, \u00e4r det helt rimligt att anv\u00e4nda globala variabler.<\/p>\n<h2>Kartografi<\/h2>\n<p>\nDet f\u00f6rsta som kommer i \u00e5tanke n\u00e4r det handlar om att anv\u00e4nda glesa matriser \u00e4r kartografiska uppgifter.<\/p>\n<p>Som regel finns det mycket tomt utrymme p\u00e5 kartor. Om man f\u00f6rest\u00e4ller sig en karta som stora pixlar, skulle 71 % av pixlarna p\u00e5 jorden upptas av oceaner. En gles matris. Och om man bara markerade m\u00e4nskliga skapelser skulle mer \u00e4n 95 % vara tomt utrymme.<\/p>\n<p>Sj\u00e4lvklart lagrar ingen kartor som rastermatriser, ist\u00e4llet anv\u00e4nds vektorrepresentation.<br \/>\nMen vad \u00e4r vektorkartor? Det \u00e4r en viss ram som best\u00e5r av punkter, polylinjer och polygoner.<br \/>\nDet \u00e4r i praktiken en databas med punkter och relationer mellan dem.<\/p>\n<p>En av de mest ambiti\u00f6sa kartl\u00e4ggningsuppgifterna \u00e4r att kartl\u00e4gga v\u00e5r galax med hj\u00e4lp av Gaia-teleskopet. Bildligt talat \u00e4r v\u00e5r galax, precis som hela universum, en genomg\u00e5ende gles struktur: enorma tomrum d\u00e4r s\u00e4llsynta sm\u00e5 punkter \u2013 stj\u00e4rnor \u2013 finns. 99,999999...% av platsen \u00e4r tom. F\u00f6r att lagra kartan \u00f6ver v\u00e5r galax valdes en databas p\u00e5 globaler \u2013 Cach\u00e9.<\/p>\n<p>Jag k\u00e4nner inte den exakta strukturen f\u00f6r globaler i det h\u00e4r projektet, men jag kan anta att det ungef\u00e4r ser ut som:<\/p>\n<pre><code class=\"bash\">Set ^galaxy(b, l, d) = 1; Stj\u00e4rnnummer enligt katalogen, om det finns\nSet ^galaxy(b, l, d, \"name\") = \"Sol\"\nSet ^galaxy(b, l, d, \"type\") = \"normal\"; alternativ blackhole, quazar, red_dwarf etc.\nSet ^galaxy(b, l, d, \"weight\") = 14E50\nSet ^galaxy(b, l, d, \"planetes\") = 7\nSet ^galaxy(b, l, d, \"planetes\", 1) = \"Merkurius\"\nSet ^galaxy(b, l, d, \"planetes\", 1, weight) = 1E20\n...\n<\/code><\/pre>\n<p>\n<i>D\u00e4r b, l, d \u2014 \u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wiki2.org\/wiki\/Galaktiska_systemet_av_koordinater\">galaktiska koordinater latitud, longitud<\/a><\/noindex> och avst\u00e5ndet till solen.<\/i><\/p>\n<p>Den flexibla strukturen av globaler g\u00f6r det m\u00f6jligt att lagra alla n\u00f6dv\u00e4ndiga egenskaper hos stj\u00e4rnor och planeter, eftersom databaser p\u00e5 globaler \u00e4r schemasl\u00f6sa.<\/p>\n<p>F\u00f6r lagring av kartan \u00f6ver v\u00e5rt universum valdes Cach\u00e9 inte bara f\u00f6r sin flexibilitet utan ocks\u00e5 f\u00f6r sin snabbhet i datafl\u00f6deslagring, samtidigt som den genererar indexglobaler f\u00f6r snabb s\u00f6kning.<\/p>\n<p>Tillbaka till jorden, s\u00e5 skapades kartl\u00e4ggningsprojekt p\u00e5 globaler. <noindex><a rel=\"nofollow\" href=\"http:\/\/wiki.openstreetmap.org\/wiki\/Xapi\">OpenStreetMap XAPI<\/a><\/noindex> och en fork av OpenStreetMap \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.fosm.org\/\">FOSM<\/a><\/noindex>.<\/p>\n<p>Nyligen p\u00e5 <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/267459\/\">Cach\u00e9-hackathonet<\/a><\/noindex> genomf\u00f6rdes geospatiala index <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-ru\/spatialindex\">Geospatial<\/a><\/noindex>. Vi v\u00e4ntar p\u00e5 detaljer om implementationen fr\u00e5n artikelf\u00f6rfattarna.<\/p>\n<h3>Implementeringen av rumsliga index p\u00e5 globaler i OpenStreetMap XAPI<\/h3>\n<p>\nBilderna \u00e4r h\u00e4mtade fr\u00e5n <noindex><a rel=\"nofollow\" href=\"http:\/\/www.slideshare.net\/george.james\/fosdem-2010-gtm-and-openstreetmap\">denna presentation.<\/a><\/noindex>.<\/p>\n<p>Hela jordklotet delas upp i kvadrater, sedan underkvadrater och underkvadrater till underunderkvadrater och s\u00e5 vidare. I stort sett f\u00e5r vi en hierarkisk struktur f\u00f6r lagring, f\u00f6r vilken globaler har skapats.<\/p>\n<p><img decoding=\"async\" alt=\"Globala \u2014 mappade lagringsl\u00f6sningar f\u00f6r data. Sparse-arrayer. Del 3\" src=\"\/wp-content\/uploads\/2019\/07\/239c54c201b8013f1897ecf1ccadcc9c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVid varje tillf\u00e4lle kan vi n\u00e4stan omedelbart beg\u00e4ra den n\u00f6dv\u00e4ndiga kvadraten eller rensa den, och alla underkvadrater returneras eller rensas ocks\u00e5.<\/p>\n<p>En liknande struktur kan implementeras p\u00e5 globaler p\u00e5 flera s\u00e4tt.<\/p>\n<p>Alternativ 1:<\/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) = idF\u00f6rstaPunkten\nSet ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 2) = idAndraPunkten\n...<\/code><\/pre>\n<p>\nAlternativ 2:<\/p>\n<pre><code class=\"bash\">Set ^m('abacdabcdabacdabcda', 1) = idF\u00f6rstaPunkten\nSet ^m('abacdabcdabacdabcda', 2) = idAndraPunkten\n...<\/code><\/pre>\n<p>\nI b\u00e5da fallen \u00e4r det enkelt att beg\u00e4ra punkterna som ligger inom en kvadrat av valfri storlek p\u00e5 COS\/M. Det \u00e4r n\u00e5got l\u00e4ttare att rensa kvadrater av valfri storlek i det f\u00f6rsta alternativet, men det beh\u00f6vs s\u00e4llan.<\/p>\n<p>Ett exempel p\u00e5 en av de l\u00e4gre niv\u00e5ernas kvadrater:<\/p>\n<p><img decoding=\"async\" alt=\"Globala \u2014 mappade lagringsl\u00f6sningar f\u00f6r data. Sparse-arrayer. Del 3\" src=\"\/wp-content\/uploads\/2019\/07\/1fba7eb9253c6af9206cb168c6d43f2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOch h\u00e4r \u00e4r n\u00e5gra globala fr\u00e5n projektet XAPI: visning av index p\u00e5 globala:<\/p>\n<p><img decoding=\"async\" alt=\"Globala \u2014 mappade lagringsl\u00f6sningar f\u00f6r data. Sparse-arrayer. Del 3\" src=\"\/wp-content\/uploads\/2019\/07\/3a80dd4c3fb23d0f2d3094703966f74b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGlobal <strong>^way<\/strong> anv\u00e4nds f\u00f6r att lagra punkter <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Polygonal_chain\">polylinjer<\/a><\/noindex> (v\u00e4gar, sm\u00e5 floder etc.) och polygoner (slutna omr\u00e5den: byggnader, skogar etc.).<\/p>\n<h2>Grov klassificering av anv\u00e4ndningen av glesa matrisar p\u00e5 globala.<\/h2>\n<p><\/p>\n<ol>\n<li>Vi lagrar koordinater f\u00f6r vissa objekt och deras tillst\u00e5nd (kartl\u00e4ggning, cellul\u00e4ra automater)<\/li>\n<li>Vi lagrar glesa matriser.<\/li>\n<\/ol>\n<p>\nI fall 2) vid beg\u00e4ran om en viss koordinat, d\u00e4r ett element inte har n\u00e5got tilldelat v\u00e4rde, m\u00e5ste vi f\u00e5 v\u00e4rdet f\u00f6r det glesa matrisens element som standard.<\/p>\n<h2>Bonusarna vi f\u00e5r genom att lagra flerdimensionella matriser p\u00e5 globala<\/h2>\n<p>\n<b>Snabb borttagning och\/eller urval av omr\u00e5den som \u00e4r multipler av rader, plan, kuber etc.<\/b> F\u00f6r fall d\u00e4r heltalsindex anv\u00e4nds, kan m\u00f6jligheten till snabb borttagning och\/eller urval av omr\u00e5den som \u00e4r multipler av rader, plan, kuber etc. visa sig vara anv\u00e4ndbar.<\/p>\n<p>Kommandot <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ckill\">Kill<\/a><\/noindex> kan vi ta bort b\u00e5de ett enskilt element, en rad och till och med ett helt plan. Tack vare egenskaperna hos globala sker detta mycket snabbt \u2014 tusentals g\u00e5nger snabbare \u00e4n elementspecifik borttagning.<\/p>\n<p>Illustrationen visar en tredimensionell matris i det globala <strong>^a<\/strong> och olika typer av borttagningar.<\/p>\n<p><img decoding=\"async\" alt=\"Globala \u2014 mappade lagringsl\u00f6sningar f\u00f6r data. Sparse-arrayer. Del 3\" src=\"\/wp-content\/uploads\/2019\/07\/cc85ee59d42595df0d72480d3e533a12.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r att v\u00e4lja omr\u00e5den i rummet efter k\u00e4nda index kan kommandot anv\u00e4ndas <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>Urval av kolumnen i matrisen till variabeln Column:<\/p>\n<pre><code class=\"bash\">; Vi definierar en tredimensionell gles matris 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; Vi skriver ut variabeln Column\nZwrite Column\n<\/code><\/pre>\n<p>\nSlutsats:<\/p>\n<pre><code class=\"bash\">Column(0)=1\nColumn(2)=1\n<\/code><\/pre>\n<p>\nIntressant nog fick vi ocks\u00e5 en gles matris i variabeln Column, som ocks\u00e5 m\u00e5ste refereras till via <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex>, eftersom standardv\u00e4rdena inte lagras i den.<\/p>\n<p>Urval av omr\u00e5den kan ocks\u00e5 g\u00f6ras via ett litet program med hj\u00e4lp av funktionen <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_forder\">$Order<\/a><\/noindex>. Detta \u00e4r s\u00e4rskilt praktiskt i rum d\u00e4r indexen inte \u00e4r kvantifierade (kartl\u00e4ggning).<\/p>\n<h2>Slutsats<\/h2>\n<p>\nNutidens tider st\u00e4ller nya ambiti\u00f6sa m\u00e5l. Grafer kan best\u00e5 av miljarder noder, kartor av miljarder punkter, och n\u00e5gon kan till och med vilja starta sitt eget universum p\u00e5 cellul\u00e4ra automater (<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>N\u00e4r m\u00e4ngden data fr\u00e5n glesa matriser inte l\u00e4ngre f\u00e5r plats i RAM-minnet och man beh\u00f6ver arbeta med dem, b\u00f6r man \u00f6verv\u00e4ga att implementera s\u00e5dana projekt p\u00e5 globala system och COS.<\/p>\n<p>Tack f\u00f6r uppm\u00e4rksamheten! Vi ser fram emot era fr\u00e5gor och \u00f6nskem\u00e5l i kommentarerna.<\/p>\n<p><b>Ansvarsfriskrivning<\/b>: <i>Denna artikel och mina kommentarer till den \u00e4r min \u00e5sikt och har ingen koppling till f\u00f6retagets officiella st\u00e4llning, InterSystems.<\/i><br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Globala system \u2013 skattkistor f\u00f6r lagring av data. Glesa matriser. Del 3 | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/36632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=36632"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/36632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/27432"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=36632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=36632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=36632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}