{"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\/es\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","title":{"rendered":"Globales \u2014 espadas de almacenamiento de datos. Arrays dispersos. Parte 3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Globales \u2014 espadas de almacenamiento de datos. Arrays dispersos. Parte 3\" src=\"\/wp-content\/uploads\/2019\/07\/ac6eefbfb9d7cc28c3f2ca85c7d1adb2.jpg\" style=\"display:block;margin: 0 auto;\" \/>En partes anteriores (<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>) hablamos de los globales como \u00e1rboles, en esta parte examinaremos los globales como arreglos dispersos.<\/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\">Arreglo disperso<\/a><\/noindex> es una variedad de arreglo en la cual la mayor\u00eda de los valores toma el mismo valor.<\/p>\n<p>En la pr\u00e1ctica, a menudo se encuentran arreglos dispersos tan grandes que no tiene sentido ocupar memoria con elementos id\u00e9nticos. Por lo tanto, tiene sentido implementar arreglos dispersos de manera que no se gaste memoria en el almacenamiento de valores id\u00e9nticos.<br \/>\nEn algunos lenguajes de programaci\u00f3n, los arreglos dispersos est\u00e1n incluidos en el propio lenguaje, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jsoftware.com\/help\/dictionary\/d211.htm\">por ejemplo en J<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.mathworks.com\/help\/matlab\/ref\/sparse.html\">MATLAB<\/a><\/noindex>. En otros lenguajes de programaci\u00f3n, hay bibliotecas especiales que permiten implementarlos. Para C++ \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/eigen.tuxfamily.org\/dox-devel\/GettingStarted.html\">Eigen<\/a><\/noindex> y otros. <\/p>\n<p>Los globales son buenos candidatos para la implementaci\u00f3n de arreglos dispersos porque:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li>Almacenan valores solo de nodos espec\u00edficos y no almacenan valores indefinidos;<\/li>\n<li>La interfaz de acceso al valor de un nodo es extremadamente similar a c\u00f3mo se implementa el acceso a un elemento de un arreglo multidimensional en muchos lenguajes de programaci\u00f3n.\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 es una estructura bastante de bajo nivel para almacenar datos, por lo tanto, tiene caracter\u00edsticas de velocidad excepcionales (desde cientos de miles hasta decenas de millones de transacciones por segundo, dependiendo del hardware, v\u00e9ase <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/257501\/\">1<\/a><\/noindex>)<\/li>\n<\/ol>\n<p><\/p>\n<blockquote><p>Dado que el global es una estructura persistente, tiene sentido hacer arreglos dispersos sobre ellos cuando se sabe de antemano que el volumen de memoria RAM ser\u00e1 insuficiente.<\/p><\/blockquote>\n<p>\nUna de las propiedades de las implementaciones de arreglos dispersos es la devoluci\u00f3n de alg\u00fan valor por defecto si se accede a una celda indefinida.<\/p>\n<p>Esto se puede implementar utilizando la funci\u00f3n <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex> en COS. En este ejemplo se considera un arreglo tridimensional.<\/p>\n<pre><code>SET a = $GET(^a(x,y,z), defValue)<\/code><\/pre>\n<p>\n\u00bfEn qu\u00e9 tareas se requieren arreglos dispersos y c\u00f3mo pueden ayudar los globales?<\/p>\n<h2>Matriz de adyacencia (conectividad)<\/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\">Tales matrices<\/a><\/noindex> se utilizan para representar grafos:<\/p>\n<p><img decoding=\"async\" alt=\"Globales \u2014 espadas de almacenamiento de datos. Arrays dispersos. Parte 3\" src=\"\/wp-content\/uploads\/2019\/07\/a580c451610bcacbef154c161ef63939.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs evidente que cuanto m\u00e1s grande es el grafo, m\u00e1s ceros habr\u00e1 en la matriz. Si, por ejemplo, tomamos un grafo de red social y lo representamos en forma de matriz similar, casi completamente consistir\u00e1 en ceros, es decir, ser\u00e1 un arreglo disperso.<\/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>\nEn este ejemplo, almacenamos en el global <strong>^m<\/strong> la matriz de conectividad, as\u00ed como el n\u00famero de aristas en cada nodo (qui\u00e9n es amigo de qui\u00e9n y el n\u00famero de amigos).<\/p>\n<p>Si el n\u00famero de elementos en el gr\u00e1fico no supera los 29 millones (este n\u00famero se toma como el producto de 8 * <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache201512\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GORIENT_appx_limits_long_string\">el tama\u00f1o m\u00e1ximo de la cadena<\/a><\/noindex>), hay una forma a\u00fan m\u00e1s econ\u00f3mica de almacenar tales matrices: las cadenas de bits, ya que en su implementaci\u00f3n se optimizan de manera especial los grandes espacios vac\u00edos.<\/p>\n<p>Las manipulaciones con cadenas de bits se realizan mediante la funci\u00f3n <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\">; establecer un bit\nSET $BIT(rowID, positionID) = 1\n; obtener un bit\nWrite $BIT(rowID, positionID)\n<\/code><\/pre>\n<p><\/p>\n<h2>Tabla de transiciones de aut\u00f3mata finito<\/h2>\n<p>\nDado que el gr\u00e1fico de transiciones de un aut\u00f3mata finito es un gr\u00e1fico ordinario, la tabla de transiciones de un aut\u00f3mata finito es la misma matriz de adyacencia de la que se habl\u00f3 anteriormente.<\/p>\n<h2>Aut\u00f3matas celulares<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Globales \u2014 espadas de almacenamiento de datos. Arrays dispersos. Parte 3\" src=\"\/wp-content\/uploads\/2019\/07\/b9fedb51cd1c8fced79ca221a925349c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEl aut\u00f3mata celular m\u00e1s conocido es <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)\">el juego de la \"Vida\"<\/a><\/noindex>, que debido a sus reglas (cuando una c\u00e9lula tiene muchos vecinos, muere) representa un arreglo disperso.<\/p>\n<p>Stephen Wolfram considera que los aut\u00f3matas celulares son una <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/A_New_Kind_of_Science\">nueva \u00e1rea de la ciencia.<\/a><\/noindex>En 2002 public\u00f3 un libro de 1280 p\u00e1ginas titulado \"A New Kind of Science\", donde argumenta ampliamente que los logros en el campo de los aut\u00f3matas celulares no son aislados, sino bastante robustos y tienen gran relevancia para todas las ramas de la ciencia.<\/p>\n<p>Se ha demostrado que cualquier algoritmo que sea ejecutable en una computadora se puede realizar mediante un aut\u00f3mata celular. Los aut\u00f3matas celulares se utilizan para modelar entornos y sistemas din\u00e1micos, para resolver problemas algor\u00edtmicos y para otros fines.<\/p>\n<p>Si tenemos un inmenso campo y necesitamos registrar todos los estados intermedios de un aut\u00f3mata celular, tiene mucho sentido utilizar globales.<\/p>\n<h2>Cartograf\u00eda<\/h2>\n<p>\nLo primero que me viene a la mente cuando se habla de utilizar arreglos dispersos son las tareas cartogr\u00e1ficas.<\/p>\n<p>Por lo general, hay mucho espacio vac\u00edo en los mapas. Si se representa el mapa como grandes p\u00edxeles, el 71% de los p\u00edxeles de la Tierra estar\u00e1n ocupados por el oc\u00e9ano. Arreglo disperso. Y si solo se representan las obras de manos humanas, habr\u00e1 m\u00e1s del 95% de espacio vac\u00edo.<\/p>\n<p>Por supuesto, nadie guarda mapas en forma de arreglos rasterizados; se utiliza representaci\u00f3n vectorial.<br \/>\nPero, \u00bfqu\u00e9 son los mapas vectoriales? Es un marco que consiste en puntos, polil\u00edneas y pol\u00edgonos.<br \/>\nDe hecho, una base de datos de puntos y las conexiones entre ellos.<\/p>\n<p>Una de las tareas m\u00e1s ambiciosas de la cartograf\u00eda es la misi\u00f3n de mapear nuestra galaxia con el telescopio Gaia. En t\u00e9rminos figurados, nuestra galaxia, al igual que el universo, es un vasto y disperso enjambre: enormes espacios de vac\u00edo donde hay escasas peque\u00f1as manchas: estrellas. El espacio vac\u00edo representa el 99,999999\u2026%. Se eligi\u00f3 una base de datos en globales, Cach\u00e9, para almacenar el mapa de nuestra galaxia.<\/p>\n<p>No s\u00e9 la estructura exacta de los globals en este proyecto, pero puedo suponer que es algo como esto:<\/p>\n<pre><code class=\"bash\">Set ^galaxy(b, l, d) = 1; N\u00famero de la estrella en el cat\u00e1logo, si existe\nSet ^galaxy(b, l, d, \"name\") = \"Sol\"\nSet ^galaxy(b, l, d, \"type\") = \"normal\"; opciones 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) = \"Mercurio\"\nSet ^galaxy(b, l, d, \"planetes\", 1, weight) = 1E20\n...\n<\/code><\/pre>\n<p>\n<i>Donde b, l, d son <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wiki2.org\/wiki\/Sistema_de_coordenadas_gal\u00e1cticas\">coordenadas gal\u00e1cticas de latitud, longitud<\/a><\/noindex> y distancia al Sol.<\/i><\/p>\n<p>La estructura flexible de los globals permite almacenar cualquier caracter\u00edstica necesaria de las estrellas y planetas, ya que las bases en globals son sin esquema (scheme-less).<\/p>\n<p>Para almacenar el mapa de nuestro universo, Cach\u00e9 fue elegida no solo por su flexibilidad, sino tambi\u00e9n por su capacidad para guardar r\u00e1pidamente un flujo de datos, al tiempo que crea globals indexados para b\u00fasquedas r\u00e1pidas.<\/p>\n<p>Por volver a la Tierra, se crearon proyectos cartogr\u00e1ficos en globals <noindex><a rel=\"nofollow\" href=\"http:\/\/wiki.openstreetmap.org\/wiki\/Xapi\">OpenStreetMap XAPI<\/a><\/noindex> y el fork de OpenStreetMap \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.fosm.org\/\">FOSM<\/a><\/noindex>.<\/p>\n<p>Recientemente en <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/267459\/\">el hackat\u00f3n de Cach\u00e9<\/a><\/noindex> se implementaron \u00edndices geoespaciales <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-ru\/spatialindex\">Geospatial<\/a><\/noindex>. Esperamos detalles de implementaci\u00f3n de los autores del art\u00edculo.<\/p>\n<h3>Implementaci\u00f3n de \u00edndices espaciales en globals en OpenStreetMap XAPI<\/h3>\n<p>\nLas im\u00e1genes fueron tomadas de <noindex><a rel=\"nofollow\" href=\"http:\/\/www.slideshare.net\/george.james\/fosdem-2010-gtm-and-openstreetmap\">esta presentaci\u00f3n<\/a><\/noindex>.<\/p>\n<p>Toda la superficie terrestre se divide en cuadros, luego en subcuadrados, y los subcuadrados en sub-subcuadrados, y as\u00ed sucesivamente. En general, obtenemos una estructura jer\u00e1rquica para cuya almacenamiento se crearon globals.<\/p>\n<p><img decoding=\"async\" alt=\"Globales \u2014 espadas de almacenamiento de datos. Arrays dispersos. Parte 3\" src=\"\/wp-content\/uploads\/2019\/07\/239c54c201b8013f1897ecf1ccadcc9c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn cualquier momento, podemos solicitar pr\u00e1cticamente instant\u00e1neamente el cuadrado necesario o limpiarlo, y todos los subcuadrados tambi\u00e9n ser\u00e1n devueltos o limpiados.<\/p>\n<p>Un esquema similar en globals se puede implementar de varias maneras.<\/p>\n<p>Opci\u00f3n 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) = idDelPrimero\nSet ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 2) = idDelSegundo\n...<\/code><\/pre>\n<p>\nOpci\u00f3n 2:<\/p>\n<pre><code class=\"bash\">Set ^m('abacdabcdabacdabcda', 1) = idDelPrimero\nSet ^m('abacdabcdabacdabcda', 2) = idDelSegundo\n...<\/code><\/pre>\n<p>\nEn ambos casos, no es dif\u00edcil en COS\/M solicitar puntos que se encuentren en un cuadrado de cualquier nivel. Limpiar las secciones cuadradas del espacio de cualquier nivel ser\u00e1 un poco m\u00e1s f\u00e1cil en la primera opci\u00f3n, aunque esto rara vez es necesario.<\/p>\n<p>Ejemplo de uno de los cuadrados de nivel inferior:<\/p>\n<p><img decoding=\"async\" alt=\"Globales \u2014 espadas de almacenamiento de datos. Arrays dispersos. Parte 3\" src=\"\/wp-content\/uploads\/2019\/07\/1fba7eb9253c6af9206cb168c6d43f2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAqu\u00ed hay algunos globales del proyecto XAPI: representaci\u00f3n del \u00edndice en los globales:<\/p>\n<p><img decoding=\"async\" alt=\"Globales \u2014 espadas de almacenamiento de datos. Arrays dispersos. Parte 3\" src=\"\/wp-content\/uploads\/2019\/07\/3a80dd4c3fb23d0f2d3094703966f74b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGlobal <strong>^way<\/strong> se utiliza para almacenar puntos <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Polygonal_chain\">polil\u00edneas<\/a><\/noindex> (caminos, r\u00edos peque\u00f1os, etc.) y pol\u00edgonos (\u00e1reas cerradas: edificios, bosques, etc.).<\/p>\n<h2>Clasificaci\u00f3n grosera del uso de matrices dispersas en globales.<\/h2>\n<p><\/p>\n<ol>\n<li>Almacenamos las coordenadas de ciertos objetos y sus estados (mapeo, aut\u00f3matas celulares)<\/li>\n<li>Almacenamos matrices dispersas.<\/li>\n<\/ol>\n<p>\nPara el caso 2) al solicitar una coordenada espec\u00edfica donde no se ha asignado un valor al elemento, debemos obtener el valor del elemento de la matriz dispersa por defecto.<\/p>\n<h2>Bonos que obtenemos al almacenar matrices multidimensionales en globales<\/h2>\n<p>\n<b>Eliminaci\u00f3n r\u00e1pida y\/o selecci\u00f3n de secciones del espacio que son m\u00faltiplos de filas, planos, cubos, etc.<\/b> Para casos donde se utilizan \u00edndices enteros, puede ser \u00fatil la capacidad de eliminar y\/o seleccionar r\u00e1pidamente secciones del espacio que son m\u00faltiplos de filas, planos, cubos, etc.<\/p>\n<p>Con el comando <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ckill\">Eliminar<\/a><\/noindex> podemos eliminar tanto un elemento individual como una fila, e incluso un plano entero. Debido a las propiedades de los globales, esto ocurre muy r\u00e1pidamente, miles de veces m\u00e1s r\u00e1pido que la eliminaci\u00f3n elemento por elemento.<\/p>\n<p>En la imagen se muestra una matriz tridimensional en un global <strong>^a<\/strong> y diferentes tipos de eliminaciones.<\/p>\n<p><img decoding=\"async\" alt=\"Globales \u2014 espadas de almacenamiento de datos. Arrays dispersos. Parte 3\" src=\"\/wp-content\/uploads\/2019\/07\/cc85ee59d42595df0d72480d3e533a12.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPara seleccionar secciones del espacio por \u00edndices conocidos, se puede utilizar el comando <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_cmerge\">Fusionar<\/a><\/noindex>.<\/p>\n<p>Selecci\u00f3n de una columna de la matriz en la variable Column:<\/p>\n<pre><code class=\"bash\">; Definamos una matriz dispersa tridimensional 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\nFusionar Column = ^a(2,2)\n; Mostremos la variable Column\nZwrite Column\n<\/code><\/pre>\n<p>\nSalida:<\/p>\n<pre><code class=\"bash\">Column(0)=1\nColumn(2)=1\n<\/code><\/pre>\n<p>\nLo interesante es que en la variable Column tambi\u00e9n obtuvimos una matriz dispersa, a la que tambi\u00e9n necesitamos acceder a trav\u00e9s de <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex>, dado que los valores por defecto no se almacenan en ella.<\/p>\n<p>La selecci\u00f3n de secciones del espacio tambi\u00e9n se puede hacer a trav\u00e9s de un peque\u00f1o programa utilizando la funci\u00f3n <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_forder\">$Order<\/a><\/noindex>. Esto es especialmente conveniente en espacios cuyos \u00edndices no est\u00e1n cuantizados (cartograf\u00eda).<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>\nLos tiempos actuales plantean nuevas y ambiciosas tareas. Los grafos pueden consistir en miles de millones de v\u00e9rtices, los mapas en miles de millones de puntos, y alguien incluso podr\u00eda querer lanzar su propio universo en aut\u00f3matas celulares (<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>Cuando el volumen de datos de matrices dispersas ya no puede ser contenido en la memoria RAM y es necesario trabajar con ellos, se debe considerar la posibilidad de implementar proyectos similares en globales y COS.<\/p>\n<p>\u00a1Gracias por su atenci\u00f3n! Esperamos sus preguntas y comentarios.<\/p>\n<p><b>Descargo de responsabilidad<\/b>: <i>Este art\u00edculo y mis comentarios al respecto son mi opini\u00f3n personal y no representan la posici\u00f3n oficial de la corporaci\u00f3n InterSystems.<\/i><br \/>\n<br \/>Fuente: <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 - 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\/es\/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\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Globales \u2014 espadas legendarias para el almacenamiento de datos. Matrices dispersas. Parte 3 | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/36632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=36632"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/36632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/27432"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=36632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=36632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=36632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}