{"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\/fr\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","title":{"rendered":"Globaux \u2014 \u00e9p\u00e9es-treillis pour le stockage des donn\u00e9es. Matrices clairsem\u00e9es. Partie 3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Globaux \u2014 \u00e9p\u00e9es-treillis pour le stockage des donn\u00e9es. Matrices clairsem\u00e9es. Partie 3\" src=\"\/wp-content\/uploads\/2019\/07\/ac6eefbfb9d7cc28c3f2ca85c7d1adb2.jpg\" style=\"display:block;margin: 0 auto;\" \/>Dans les parties pr\u00e9c\u00e9dentes (<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>) nous avons parl\u00e9 des globales comme des arbres, dans celle-ci nous allons consid\u00e9rer les globales comme des tableaux clairsem\u00e9s.<\/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\">Un tableau clairsem\u00e9<\/a><\/noindex> est un type de tableau dans lequel la plupart des valeurs prennent la m\u00eame valeur.<\/p>\n<p>Dans la pratique, il existe souvent des tableaux clairsem\u00e9s si \u00e9normes qu'il n'y a aucun sens \u00e0 occuper de la m\u00e9moire avec des \u00e9l\u00e9ments identiques. Par cons\u00e9quent, il est judicieux de mettre en \u0153uvre des tableaux clairsem\u00e9s de mani\u00e8re \u00e0 ne pas gaspiller de m\u00e9moire pour stocker des valeurs identiques.<br \/>\nDans certains langages de programmation, les tableaux clairsem\u00e9s sont int\u00e9gr\u00e9s dans le langage lui-m\u00eame, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jsoftware.com\/help\/dictionary\/d211.htm\">par exemple en J<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.mathworks.com\/help\/matlab\/ref\/sparse.html\">MATLAB.<\/a><\/noindex>Dans d'autres langages de programmation, il existe des biblioth\u00e8ques sp\u00e9ciales qui permettent de les impl\u00e9menter. Pour C++, <noindex><a rel=\"nofollow\" href=\"http:\/\/eigen.tuxfamily.org\/dox-devel\/GettingStarted.html\">GLM (OpenGL Mathematics)<\/a><\/noindex> et autres. <\/p>\n<p>Les globales sont de bons candidats pour la mise en \u0153uvre de tableaux clairsem\u00e9s, car :<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li>Ils stockent uniquement les valeurs de certains n\u0153uds et ne stockent pas les valeurs ind\u00e9finies ;<\/li>\n<li>L'interface d'acc\u00e8s \u00e0 la valeur d'un n\u0153ud est tr\u00e8s similaire \u00e0 la mani\u00e8re dont l'acc\u00e8s \u00e0 un \u00e9l\u00e9ment d'un tableau multidimensionnel est r\u00e9alis\u00e9 dans de nombreux langages de programmation.\n<pre><code class=\"bash\">Set ^a(1, 2, 3)=5\nWrite ^a(1, 2, 3)<\/code><\/pre>\n<p>\n<\/li>\n<li>La globale est une structure suffisamment bas niveau pour le stockage de donn\u00e9es, donc elle offre des performances exceptionnelles (de centaines de milliers \u00e0 des dizaines de millions de transactions par seconde en fonction du mat\u00e9riel, voir. <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/257501\/\">1<\/a><\/noindex>)<\/li>\n<\/ol>\n<p><\/p>\n<blockquote><p>Comme la globale est une structure persistante, il est sens\u00e9 d'appliquer des tableaux clairsem\u00e9s sur elle lorsque l'on sait \u00e0 l'avance que le volume de m\u00e9moire vive sera insuffisant.<\/p><\/blockquote>\n<p>\nUne des caract\u00e9ristiques des impl\u00e9mentations de tableaux clairsem\u00e9s est le retour d'une certaine valeur par d\u00e9faut si l'acc\u00e8s se fait \u00e0 une cellule ind\u00e9finie.<\/p>\n<p>Cela peut \u00eatre r\u00e9alis\u00e9 en utilisant la fonction <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex> dans COS. Dans cet exemple, un tableau tridimensionnel est trait\u00e9.<\/p>\n<pre><code>SET a = $GET(^a(x,y,z), defValue)<\/code><\/pre>\n<p>\nDans quelles t\u00e2ches les tableaux clairsem\u00e9s sont-ils n\u00e9cessaires et comment les globales peuvent-elles \u00eatre utiles ?<\/p>\n<h2>La matrice d'adjacence (connectivit\u00e9)<\/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\">De telles matrices<\/a><\/noindex> sont utilis\u00e9es pour repr\u00e9senter des graphes :<\/p>\n<p><img decoding=\"async\" alt=\"Globaux \u2014 \u00e9p\u00e9es-treillis pour le stockage des donn\u00e9es. Matrices clairsem\u00e9es. Partie 3\" src=\"\/wp-content\/uploads\/2019\/07\/a580c451610bcacbef154c161ef63939.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl est \u00e9vident que plus le graphe est grand, plus il y aura de z\u00e9ros dans la matrice. Si, par exemple, on prend un graphe de r\u00e9seau social et on le repr\u00e9sente sous la forme d'une telle matrice, il sera presque enti\u00e8rement constitu\u00e9 de z\u00e9ros, c'est-\u00e0-dire qu'il s'agira d'un tableau clairsem\u00e9.<\/p>\n<pre><code class=\"bash\">Set ^m(id1, id2) = 1 \nSet ^m(id1, id3) = 1 \nSet ^m(id1, id4) = 1 \nSet ^m(id1) = 3 \nSet ^m(id2, id4) = 1 \nSet ^m(id2, id5) = 1 \nSet ^m(id2) = 2\n....\n<\/code><\/pre>\n<p>\nDans cet exemple, nous stockons dans la globale <strong>^m<\/strong> la matrice de connectivit\u00e9, ainsi que le nombre de liens de chaque n\u0153ud (qui est ami avec qui et le nombre d'amis).<\/p>\n<p>Si le nombre d'\u00e9l\u00e9ments dans le graphe ne d\u00e9passe pas 29 millions (ce nombre est pris comme produit de 8 * <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache201512\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GORIENT_appx_limits_long_string\">la taille maximale d'une cha\u00eene<\/a><\/noindex>), il existe une m\u00e9thode de stockage encore plus \u00e9conomique pour de telles matrices : les cha\u00eenes de bits, car leur impl\u00e9mentation optimise de mani\u00e8re sp\u00e9ciale les grands intervalles.<\/p>\n<p>Les manipulations avec les cha\u00eenes de bits sont effectu\u00e9es par la fonction <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\">; d\u00e9finir un bit\nSET $BIT(rowID, positionID) = 1\n; obtenir un bit\nWrite $BIT(rowID, positionID)\n<\/code><\/pre>\n<p><\/p>\n<h2>Table des transitions de l'automate fini<\/h2>\n<p>\n\u00c9tant donn\u00e9 que le graphe des transitions de l'automate fini est un graphe ordinaire, la table des transitions de l'automate fini est \u00e9galement la m\u00eame matrice d'adjacence mentionn\u00e9e ci-dessus.<\/p>\n<h2>Automates cellulaires<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Globaux \u2014 \u00e9p\u00e9es-treillis pour le stockage des donn\u00e9es. Matrices clairsem\u00e9es. Partie 3\" src=\"\/wp-content\/uploads\/2019\/07\/b9fedb51cd1c8fced79ca221a925349c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'automate cellulaire le plus connu est <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)\">le jeu \"La Vie\"<\/a><\/noindex>, qui, en raison de ses r\u00e8gles (quand une cellule a trop de voisins, elle meurt), repr\u00e9sente un tableau clairsem\u00e9.<\/p>\n<p>Stephen Wolfram estime que les automates cellulaires sont <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/A_New_Kind_of_Science\">un nouveau domaine de la science.<\/a><\/noindex>En 2002, il publie un livre de 1280 pages intitul\u00e9 \u00ab A New Kind of Science \u00bb, o\u00f9 il argumente largement que les r\u00e9alisations dans le domaine des automates cellulaires ne sont pas isol\u00e9es, mais tr\u00e8s robustes et ont une grande importance pour tous les domaines de la science.<\/p>\n<p>Il a \u00e9t\u00e9 prouv\u00e9 que tout algorithme ex\u00e9cutable sur un ordinateur peut \u00eatre r\u00e9alis\u00e9 par le biais d'un automate cellulaire. Les automates cellulaires sont utilis\u00e9s pour mod\u00e9liser des environnements et des syst\u00e8mes dynamiques, pour r\u00e9soudre des probl\u00e8mes algorithmiques et d'autres objectifs.<\/p>\n<p>Si nous avons un champ immense et que nous devons enregistrer tous les \u00e9tats interm\u00e9diaires de l'automate cellulaire, il est tout \u00e0 fait raisonnable d'utiliser des globales.<\/p>\n<h2>Cartographie<\/h2>\n<p>\nLa premi\u00e8re chose qui me vient \u00e0 l'esprit lorsqu'on parle de l'utilisation des tableaux clairsem\u00e9s est les t\u00e2ches cartographiques.<\/p>\n<p>En r\u00e8gle g\u00e9n\u00e9rale, les cartes contiennent beaucoup d'espace vide. Si une carte est repr\u00e9sent\u00e9e sous forme de grands pixels, 71 % des pixels de la Terre seront occup\u00e9s par l'oc\u00e9an. Tableau clairsem\u00e9. Et si nous ne repr\u00e9sentons que les \u0153uvres des mains humaines, alors l'espace vide repr\u00e9sentera plus de 95 %.<\/p>\n<p>Bien s\u00fbr, personne ne conserve des cartes sous forme de tableaux raster, une repr\u00e9sentation vectorielle est utilis\u00e9e.<br \/>\nMais que sont les cartes vectorielles ? C'est un cadre contenant des polylignes et des polygones constitu\u00e9s de points.<br \/>\nEn fait, c'est une base de donn\u00e9es de points et des relations entre eux.<\/p>\n<p>L'une des t\u00e2ches les plus ambitieuses de cartographie consiste \u00e0 cartographier notre galaxie avec le t\u00e9lescope Gaia. En quelque sorte, notre galaxie, tout comme l'univers, est un vaste champ dispers\u00e9 : d'\u00e9normes espaces vides parsem\u00e9s de rares petits points \u2014 des \u00e9toiles. L'espace vide repr\u00e9sente 99,999999\u2026%. Une base de donn\u00e9es globale, Cach\u00e9, a \u00e9t\u00e9 choisie pour stocker la carte de notre galaxie.<\/p>\n<p>Je ne connais pas la structure exacte des globals dans ce projet, je peux supposer que c'est quelque chose comme :<\/p>\n<pre><code class=\"bash\">Set ^galaxy(b, l, d) = 1; Num\u00e9ro d'\u00e9toile selon le catalogue, s'il existe\nSet ^galaxy(b, l, d, \"name\") = \"Soleil\"\nSet ^galaxy(b, l, d, \"type\") = \"normal\" ; options blackhole, quasar, red_dwarf, etc.\nSet ^galaxy(b, l, d, \"weight\") = 14E50\nSet ^galaxy(b, l, d, \"planetes\") = 7\nSet ^galaxy(b, l, d, \"planetes\", 1) = \"Mercure\"\nSet ^galaxy(b, l, d, \"planetes\", 1, weight) = 1E20\n...\n<\/code><\/pre>\n<p>\n<i>O\u00f9 b, l, d sont <noindex><a rel=\"nofollow\" href=\"https:\/\/fr.wiki2.org\/wiki\/Syst\u00e8me_galactique_de_coordonn\u00e9es\">les coordonn\u00e9es galactiques de latitude, longitude<\/a><\/noindex> et la distance au soleil.<\/i><\/p>\n<p>La structure flexible des globals permet de sauvegarder toutes les caract\u00e9ristiques n\u00e9cessaires des \u00e9toiles et des plan\u00e8tes, car les bases sur des globals sont sans sch\u00e9ma (scheme-less).<\/p>\n<p>Pour stocker la carte de notre univers, Cach\u00e9 a \u00e9t\u00e9 choisie non seulement pour sa flexibilit\u00e9, mais aussi pour sa capacit\u00e9 \u00e0 sauvegarder tr\u00e8s rapidement des flux de donn\u00e9es, tout en cr\u00e9ant en parall\u00e8le des globals index\u00e9s pour une recherche rapide.<\/p>\n<p>En revenant \u00e0 la Terre, des projets cartographiques ont \u00e9t\u00e9 cr\u00e9\u00e9s sur des globals <noindex><a rel=\"nofollow\" href=\"http:\/\/wiki.openstreetmap.org\/wiki\/Xapi\">OpenStreetMap XAPI<\/a><\/noindex> et un fork d'OpenStreetMap \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.fosm.org\/\">FOSM<\/a><\/noindex>.<\/p>\n<p>R\u00e9cemment, lors du <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/267459\/\">hackathon Cach\u00e9<\/a><\/noindex> des index g\u00e9ospatiaux ont \u00e9t\u00e9 impl\u00e9ment\u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-ru\/spatialindex\">Geospatial<\/a><\/noindex>. Nous attendons des auteurs de l'article les d\u00e9tails de l'impl\u00e9mentation.<\/p>\n<h3>Mise en \u0153uvre des index spatiaux sur un global dans OpenStreetMap XAPI<\/h3>\n<p>\nLes images proviennent de <noindex><a rel=\"nofollow\" href=\"http:\/\/www.slideshare.net\/george.james\/fosdem-2010-gtm-and-openstreetmap\">de cette pr\u00e9sentation<\/a><\/noindex>.<\/p>\n<p>L'ensemble de la plan\u00e8te est d\u00e9coup\u00e9 en carr\u00e9s, puis en sous-carr\u00e9s, et les sous-carr\u00e9s en sous-sous-carr\u00e9s et ainsi de suite. En g\u00e9n\u00e9ral, on obtient une structure hi\u00e9rarchique pour le stockage de laquelle des globals ont \u00e9t\u00e9 cr\u00e9\u00e9s.<\/p>\n<p><img decoding=\"async\" alt=\"Globaux \u2014 \u00e9p\u00e9es-treillis pour le stockage des donn\u00e9es. Matrices clairsem\u00e9es. Partie 3\" src=\"\/wp-content\/uploads\/2019\/07\/239c54c201b8013f1897ecf1ccadcc9c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c0 tout moment, nous pouvons demander presque instantan\u00e9ment le carr\u00e9 dont nous avons besoin ou l'effacer, les sous-carr\u00e9s seront \u00e9galement retourn\u00e9s ou effac\u00e9s.<\/p>\n<p>Une telle sch\u00e9ma sur des globals peut \u00eatre r\u00e9alis\u00e9 de plusieurs mani\u00e8res.<\/p>\n<p>Option 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) = idPremi\u00e8rePoint\nSet ^m(a, b, a, c, d, a, b, c, d, a, b, a, c, d, a, b, c, d, a, 2) = idDeuxi\u00e8mePoint\n...<\/code><\/pre>\n<p>\nOption 2 :<\/p>\n<pre><code class=\"bash\">Set ^m('abacdabcdabacdabcda', 1) = idPremi\u00e8rePoint\nSet ^m('abacdabcdabacdabcda', 2) = idDeuxi\u00e8mePoint\n...<\/code><\/pre>\n<p>\nDans les deux cas, il est facile sur COS\/M de r\u00e9clamer des points situ\u00e9s dans le carr\u00e9 de n'importe quel niveau. Il sera un peu plus facile de nettoyer les morceaux carr\u00e9s d'espace de n'importe quel niveau dans la premi\u00e8re variante, mais cela est rarement n\u00e9cessaire.<\/p>\n<p>Exemple d'un des petits carr\u00e9s de niveau inf\u00e9rieur :<\/p>\n<p><img decoding=\"async\" alt=\"Globaux \u2014 \u00e9p\u00e9es-treillis pour le stockage des donn\u00e9es. Matrices clairsem\u00e9es. Partie 3\" src=\"\/wp-content\/uploads\/2019\/07\/1fba7eb9253c6af9206cb168c6d43f2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVoici quelques globales du projet XAPI : pr\u00e9sentation de l'index sur les globales :<\/p>\n<p><img decoding=\"async\" alt=\"Globaux \u2014 \u00e9p\u00e9es-treillis pour le stockage des donn\u00e9es. Matrices clairsem\u00e9es. Partie 3\" src=\"\/wp-content\/uploads\/2019\/07\/3a80dd4c3fb23d0f2d3094703966f74b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nG\u00e9n\u00e9ralit\u00e9 <strong>^way<\/strong> est utilis\u00e9 pour stocker des points <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Polygonal_chain\">polylignes<\/a><\/noindex> (routes, petites rivi\u00e8res, etc.) et des polygones (zones ferm\u00e9es : b\u00e2timents, for\u00eats, etc.).<\/p>\n<h2>Classification grossi\u00e8re de l'utilisation des matrices creuses sur les globales.<\/h2>\n<p><\/p>\n<ol>\n<li>Nous stockons les coordonn\u00e9es de certains objets et leurs \u00e9tats (cartographie, automates cellulaires)<\/li>\n<li>Nous stockons des matrices creuses.<\/li>\n<\/ol>\n<p>\nDans le cas 2), lors de la demande d'une certaine coordonn\u00e9e o\u00f9 l'\u00e9l\u00e9ment n'a pas de valeur assign\u00e9e, nous devons obtenir la valeur de l'\u00e9l\u00e9ment de la matrice creuse par d\u00e9faut.<\/p>\n<h2>Les avantages que nous obtenons en stockant des matrices multidimensionnelles dans les globales<\/h2>\n<p>\n<b>Suppression rapide et\/ou \u00e9chantillonnage de morceaux d'espace, multiples de lignes, plans, cubes, etc.<\/b> Pour les cas o\u00f9 des indices entiers sont utilis\u00e9s, il peut \u00eatre utile d'avoir la possibilit\u00e9 de supprimer rapidement et\/ou d'\u00e9chantillonner des morceaux d'espace, multiples de lignes, plans, cubes, etc.<\/p>\n<p>Avec la commande <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ckill\">Kill<\/a><\/noindex> nous pouvons supprimer \u00e0 la fois un \u00e9l\u00e9ment individuel, une ligne, et m\u00eame tout un plan. Gr\u00e2ce aux propri\u00e9t\u00e9s des globales, cela se fait tr\u00e8s rapidement - des milliers de fois plus vite qu'une suppression \u00e9l\u00e9ment par \u00e9l\u00e9ment.<\/p>\n<p>La figure montre un tableau tridimensionnel dans la globale <strong>^a<\/strong> et diff\u00e9rents types de suppressions.<\/p>\n<p><img decoding=\"async\" alt=\"Globaux \u2014 \u00e9p\u00e9es-treillis pour le stockage des donn\u00e9es. Matrices clairsem\u00e9es. Partie 3\" src=\"\/wp-content\/uploads\/2019\/07\/cc85ee59d42595df0d72480d3e533a12.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPour l'\u00e9chantillonnage de morceaux d'espace par indices connus, la commande peut \u00eatre utilis\u00e9e <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_cmerge\">Fusion<\/a><\/noindex>.<\/p>\n<p>\u00c9chantillonnage d'une colonne de la matrice dans la variable Column :<\/p>\n<pre><code class=\"bash\">; D\u00e9finissons un tableau creux tridimensionnel 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; Affichons la variable Column\nZwrite Column\n<\/code><\/pre>\n<p>\nConclusion :<\/p>\n<pre><code class=\"bash\">Column(0)=1\nColumn(2)=1\n<\/code><\/pre>\n<p>\nCe qui est int\u00e9ressant, c'est que dans la variable Column, nous avons \u00e9galement obtenu une matrice creuse, \u00e0 laquelle il faut acc\u00e9der aussi via <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex>, car les valeurs par d\u00e9faut ne sont pas stock\u00e9es en elle.<\/p>\n<p>L'\u00e9chantillonnage de morceaux d'espace peut \u00e9galement se faire via un petit programme utilisant la fonction <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_forder\">$Order<\/a><\/noindex>. C'est particuli\u00e8rement pratique dans des espaces dont les indices ne sont pas quantifi\u00e9s (cartographie).<\/p>\n<h2>Conclusion<\/h2>\n<p>\nLes temps actuels posent de nouveaux d\u00e9fis ambitieux. Les graphes peuvent contenir des milliards de sommets, les cartes des milliards de points, et certains pourraient m\u00eame vouloir lancer leur propre univers sur des automates cellulaires (<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>Lorsque le volume de donn\u00e9es des matrices \u00e9parses ne peut plus \u00eatre contenu dans la m\u00e9moire vive, mais qu'il est n\u00e9cessaire de travailler avec, il est judicieux d'envisager la r\u00e9alisation de tels projets sur des Global et COS.<\/p>\n<p>Merci de votre attention ! Nous attendons vos questions et suggestions dans les commentaires.<\/p>\n<p><b>Avertissement<\/b>: <i>Cet article et mes commentaires \u00e0 son sujet repr\u00e9sentent mon avis et ne refl\u00e8tent pas la position officielle de l'entreprise InterSystems.<\/i><br \/>\n<br \/>Source : <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.2.1 - 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\/fr\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Les Global sont des pierres angulaires pour le stockage de donn\u00e9es. Matrices \u00e9parses. Partie 3 | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/36632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=36632"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/36632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/27432"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=36632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=36632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=36632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}