{"id":36634,"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-derevya-chast-1\/"},"modified":"2019-10-31T22:12:47","modified_gmt":"2019-10-31T19:12:47","slug":"globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1","title":{"rendered":"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/263791\/\"><img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/83b8e36bff66516e2c331d75d8434e13.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex> As verdadeiras \"espadas\" dos bancos de dados \u2014 os globais \u2014 s\u00e3o bem conhecidas, mas ainda assim poucas pessoas sabem us\u00e1-las de forma eficiente ou n\u00e3o dominam esse superpoder.<\/p>\n<p>Se os globais forem usados para resolver problemas em que realmente se destacam, resultados impressionantes podem ser alcan\u00e7ados, seja em desempenho ou na simplifica\u00e7\u00e3o da solu\u00e7\u00e3o do problema (<noindex><a rel=\"nofollow\" href=\"http:\/\/www.intersystems.ru\/press\/2013\/gaia-mission-1yr-later.html\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/intersystems.ru\/cache\/technology\/techguide\/cache_tech-guide_01.html\">2<\/a><\/noindex>).<\/p>\n<p>Os globais s\u00e3o uma forma especial de armazenar e processar dados, completamente diferente das tabelas em SQL. Eles surgiram em 1966 na linguagem <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/MUMPS\">M(UMPS)<\/a><\/noindex> (uma evolu\u00e7\u00e3o de \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.intersystems.com\/our-products\/cache\/tech-guide\/chapter-3\/#cache-objectscript\">Cach\u00e9 ObjectScript<\/a><\/noindex>, seguido de COS) em bancos de dados m\u00e9dicos e at\u00e9 hoje s\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/VistA\">amplamente utilizados<\/a><\/noindex>, al\u00e9m de terem penetrado em algumas outras \u00e1reas que exigem confiabilidade e alto desempenho: finan\u00e7as, trading, etc.<\/p>\n<p>Os globais em bancos de dados modernos suportam transa\u00e7\u00f5es, log, replica\u00e7\u00e3o e particionamento. Ou seja, podem ser usados para construir sistemas modernos, confi\u00e1veis, distribu\u00eddos e r\u00e1pidos.<\/p>\n<p>Os globais n\u00e3o limitam voc\u00ea aos limites do modelo relacional. Eles oferecem liberdade para desenvolver estruturas de dados otimizadas para tarefas espec\u00edficas. Para muitas aplica\u00e7\u00f5es, o uso inteligente de globais pode ser verdadeiramente uma arma secreta, proporcionando um desempenho que os desenvolvedores de aplica\u00e7\u00f5es relacionais podem apenas sonhar.<\/p>\n<p>Os globais como meio de armazenamento de dados podem ser usados em muitas linguagens de programa\u00e7\u00e3o modernas, tanto de alto n\u00edvel quanto de baixo n\u00edvel. Portanto, neste artigo, vou me concentrar exatamente nos globais, e n\u00e3o na linguagem da qual eles surgiram.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>2. Como os globais funcionam<\/h2>\n<p>\nVamos primeiro entender como os globais funcionam e quais s\u00e3o seus pontos fortes. Os globais podem ser vistos de v\u00e1rias perspectivas. Nesta parte do artigo, veremos os globais como \u00e1rvores. Ou como armazenamentos hier\u00e1rquicos de dados.<\/p>\n<p>Simplificando, um global \u00e9 um array persistente. Um array que \u00e9 salvo automaticamente no disco.<br \/>\n\u00c9 dif\u00edcil imaginar algo mais simples para o armazenamento de dados. No c\u00f3digo (em linguagens COS\/M), ele se diferencia de um array associativo comum apenas pelo s\u00edmbolo <b>^<\/b> antes do nome.<\/p>\n<p>Para salvar dados em um global, n\u00e3o \u00e9 necess\u00e1rio aprender a linguagem de consulta SQL; os comandos para trabalhar com eles s\u00e3o muito simples. Voc\u00ea pode aprend\u00ea-los em uma hora. <\/p>\n<p>Come\u00e7aremos com o exemplo mais simples. Uma \u00e1rvore de um n\u00edvel com 2 ramifica\u00e7\u00f5es. Os exemplos est\u00e3o escritos em COS.<\/p>\n<p><img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/5e1503716eac1eaadf49fcf3651e7fbf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<pre><code class=\"bash\">Defina ^a(&quot;+7926X&quot;) = &quot;John Sidorov&quot;\nDefina ^a(&quot;+7916Y&quot;) = &quot;Sergey Smith&quot;<\/code><\/pre>\n<p><br clear=\"left\"\/><br \/>\nAo inserir informa\u00e7\u00f5es no global (comando Set), tr\u00eas coisas acontecem automaticamente:<\/p>\n<ol>\n<li><b>Armazenamento de dados no disco.<\/b>\n<\/li>\n<li><b>Indexa\u00e7\u00e3o.<\/b> O que est\u00e1 entre par\u00eanteses atua como chave (na literatura em ingl\u00eas \u2014 \"subscript\"), e \u00e0 direita do igual est\u00e1 o valor (\"node value\").\n<\/li>\n<li><b>Ordena\u00e7\u00e3o.<\/b> Os dados s\u00e3o classificados pela chave. Durante a itera\u00e7\u00e3o do array, o primeiro elemento ser\u00e1 \"Sergey Smith\" e o segundo \"John Sidorov\". Ao obter a lista de usu\u00e1rios do global, o banco de dados n\u00e3o perde tempo na ordena\u00e7\u00e3o. Al\u00e9m disso, \u00e9 poss\u00edvel solicitar a sa\u00edda da lista ordenada a partir de qualquer chave, mesmo que inexistente (a sa\u00edda come\u00e7ar\u00e1 pela primeira chave real que segue a inexistente).\n<\/li>\n<\/ol>\n<p>\nTodas essas opera\u00e7\u00f5es ocorrem de forma incrivelmente r\u00e1pida. No computador dom\u00e9stico, eu recebia valores de at\u00e9 750.000 inser\u00e7\u00f5es\/segundo em um \u00fanico processo. Em processadores multicores, os valores podem alcan\u00e7ar <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/257501\/\">dezenas de milh\u00f5es<\/a><\/noindex> inser\u00e7\u00f5es\/segundo.<\/p>\n<p>Claro, a velocidade de inser\u00e7\u00e3o por si s\u00f3 n\u00e3o diz muito. Por exemplo, \u00e9 poss\u00edvel gravar informa\u00e7\u00f5es em arquivos de texto muito rapidamente \u2014 assim <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/post\/176345\/#comment_6220633\">segundo rumores<\/a><\/noindex> funciona o processamento da Visa. Mas no caso dos globais, obtemos um armazenamento estruturado indexado, com o qual \u00e9 simples e r\u00e1pido trabalhar posteriormente.<\/p>\n<p><img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/ce447c81cf3a7d570518711c7103dbf0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<ul>\n<li><b>O maior trunfo dos globais \u00e9 a velocidade de inser\u00e7\u00e3o de novos n\u00f3s.<\/b>\n<\/li>\n<li><b>Os dados no global est\u00e3o sempre indexados. Sua itera\u00e7\u00e3o pode ser r\u00e1pida tanto em um n\u00edvel quanto em profundidade na \u00e1rvore.<\/b><\/li>\n<\/ul>\n<p>\nVamos adicionar ao global mais algumas ramifica\u00e7\u00f5es de segundo e terceiro n\u00edvel.<\/p>\n<pre><code class=\"bash\">Defina ^a(&quot;+7926X&quot;, &quot;cidade&quot;) = &quot;Moscovo&quot;\nDefina ^a(&quot;+7926X&quot;, &quot;cidade&quot;, &quot;rua&quot;) = &quot;Pra\u00e7a Req&quot;\nDefina ^a(&quot;+7926X&quot;, &quot;idade&quot;) = 25\nDefina ^a(&quot;+7916Y&quot;, &quot;cidade&quot;) = &quot;Londres&quot;\nDefina ^a(&quot;+7916Y&quot;, &quot;cidade&quot;, &quot;rua&quot;) = &quot;Baker Street&quot;\nDefina ^a(&quot;+7916Y&quot;, &quot;idade&quot;) = 36<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/47244a6d96b589ada53ba9f53b2b3a2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c9 \u00f3bvio que com base nos globais \u00e9 poss\u00edvel construir \u00e1rvores de m\u00faltiplos n\u00edveis. Al\u00e9m disso, o acesso a qualquer n\u00f3 \u00e9 praticamente instant\u00e2neo devido \u00e0 autoindexa\u00e7\u00e3o durante a inser\u00e7\u00e3o. E em qualquer n\u00edvel da \u00e1rvore, todas as ramifica\u00e7\u00f5es est\u00e3o ordenadas pela chave.<\/p>\n<p>Como pode ser visto, as informa\u00e7\u00f5es podem ser armazenadas tanto na chave quanto no valor. O comprimento total da chave (a soma dos comprimentos de todos os \u00edndices) pode alcan\u00e7ar <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/ens20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GGBL_structure#GGBL_structure_maxsubscrlen\">511 bytes<\/a><\/noindex>, e os valores <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GORIENT_appx_limits_long_string\">3.6 MB<\/a><\/noindex> para Cach\u00e9. O n\u00famero de n\u00edveis na \u00e1rvore (n\u00famero de dimens\u00f5es) \u00e9 31.<\/p>\n<p>Outro ponto interessante. \u00c9 poss\u00edvel construir uma \u00e1rvore sem definir valores para os n\u00f3s dos n\u00edveis superiores.<\/p>\n<p><img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/f37f81a87a13adb13bbd3583dda06928.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<pre><code class=\"bash\">Defina ^b(&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;) = 1\nDefina ^b(&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;e&quot;) = 2\nDefina ^b(&quot;a&quot;, &quot;b&quot;, &quot;f&quot;, &quot;g&quot;) = 3<\/code><\/pre>\n<p>\nC\u00edrculos vazios s\u00e3o n\u00f3s que n\u00e3o possuem valor atribu\u00eddo.<br clear=\"left\"\/><br \/>\nPara entender melhor os globais, vamos compar\u00e1-los com outras \u00e1rvores: \u00e1rvores frut\u00edferas e \u00e1rvores de sistemas de arquivos.<\/p>\n<p>Vamos comparar as \u00e1rvores nos globais com as estruturas hier\u00e1rquicas mais familiares: as \u00e1rvores normais que crescem em pomares e campos, bem como os sistemas de arquivos.<\/p>\n<p><img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/c6b00c70867c3eb2e2d8233e0fc6b6c6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo podemos ver, nas \u00e1rvores frut\u00edferas, folhas e frutos est\u00e3o localizados apenas nas extremidades dos galhos.<br \/>\nEm sistemas de arquivos, a informa\u00e7\u00e3o \u00e9 armazenada apenas nas extremidades dos galhos, que s\u00e3o os nomes completos dos arquivos.<\/p>\n<p>Aqui est\u00e1 a estrutura de dados do global.<\/p>\n<p><img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/288a5d964b4bf859944c0a0ecd000bc7.jpg\" style=\"display:block;margin: 0 auto;\" \/>Diferen\u00e7as:<\/p>\n<ol>\n<li><b>N\u00f3s internos:<\/b> A informa\u00e7\u00e3o no global pode ser armazenada em cada n\u00f3, e n\u00e3o apenas nas extremidades dos galhos.<\/li>\n<li><b>N\u00f3s externos:<\/b> No global, os valores devem estar definidos nas extremidades dos galhos, enquanto nas \u00e1rvores de sistemas de arquivos e nas frut\u00edferas, n\u00e3o h\u00e1 essa obriga\u00e7\u00e3o.<\/li>\n<\/ol>\n<p><br clear=\"left\"\/><br \/>\nEm parte dos n\u00f3s internos, pode-se dizer que a estrutura do global \u00e9 um superconjunto da estrutura das \u00e1rvores de nomes em sistemas de arquivos e \u00e1rvores frut\u00edferas. Ou seja, \u00e9 mais flex\u00edvel.<\/p>\n<p>De um modo geral, um global representa <b>uma \u00e1rvore ordenada com a capacidade de armazenar dados em cada n\u00f3<\/b>.<\/p>\n<p>Para entender melhor como os globais funcionam, vamos imaginar como seria se os criadores de sistemas de arquivos usassem uma abordagem semelhante aos globais para armazenar informa\u00e7\u00f5es.<\/p>\n<ol>\n<li>Ao excluir um \u00fanico arquivo em um diret\u00f3rio, o diret\u00f3rio seria automaticamente exclu\u00eddo, assim como todos os diret\u00f3rios superiores que contivessem apenas o diret\u00f3rio rec\u00e9m-exclu\u00eddo.\n<\/li>\n<li>A necessidade de diret\u00f3rios desapareceria. Haveria apenas arquivos com sub-arquivos e arquivos sem sub-arquivos. Se compararmos com uma \u00e1rvore normal, cada galho se tornaria um fruto.\n<p><img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/8e5e5681c191869da23c32da6e6d8d7b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\n<\/li>\n<li>Coisas como arquivos README.txt poderiam n\u00e3o existir. Tudo o que precisava ser dito sobre o conte\u00fado de um diret\u00f3rio poderia ser gravado no pr\u00f3prio arquivo do diret\u00f3rio. No espa\u00e7o de nomes, o nome do arquivo \u00e9 indistingu\u00edvel do nome do diret\u00f3rio, portanto, poder\u00edamos ter apenas arquivos.\n<\/li>\n<li>A velocidade de exclus\u00e3o de diret\u00f3rios com subdiret\u00f3rios e arquivos aumentaria drasticamente. Muitas vezes, surgiram artigos no Habr sobre como \u00e9 demorado e dif\u00edcil excluir milh\u00f5es de pequenos arquivos (<noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/post\/152193\/\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/post\/157613\/\">2<\/a><\/noindex>). No entanto, se implementar um sistema de pseudo-arquivos no global, isso levaria segundos ou fra\u00e7\u00f5es deles. Quando testei a exclus\u00e3o de sub\u00e1rvores no meu computador pessoal, consegui excluir de 96 a 341 milh\u00f5es de n\u00f3s de uma \u00e1rvore de dois n\u00edveis em um HDD (n\u00e3o SSD) em 1 segundo. E isso se refere \u00e0 exclus\u00e3o de uma parte da \u00e1rvore, e n\u00e3o simplesmente de todo o arquivo com globais.<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/7f700eeafb3e552923139024f38c6661.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>A exclus\u00e3o de sub\u00e1rvores \u00e9 mais um ponto forte dos globais. N\u00e3o \u00e9 necess\u00e1ria recurs\u00e3o para isso.<\/b> Isso acontece incrivelmente r\u00e1pido.<\/p>\n<p>No nossa \u00e1rvore, isso poderia ser feito com o comando <b>Kill<\/b>.<\/p>\n<pre><code class=\"bash\">Mate ^a(&quot;+7926X&quot;)<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Globais \u2013 espadas-caldeir\u00f5es para armazenamento de dados. \u00c1rvores. Parte 1\" src=\"\/wp-content\/uploads\/2019\/07\/89d5b69c6e80832c6865824782d9754d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPara melhor compreens\u00e3o das a\u00e7\u00f5es que temos dispon\u00edveis sobre os globais, apresento uma tabela resumida.<\/p>\n<p>Principais comandos e fun\u00e7\u00f5es para trabalhar com globais em COS<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_cset\">Definir<\/a><\/noindex><br \/>\nDefini\u00e7\u00e3o de ramos at\u00e9 o n\u00f3 (caso ainda n\u00e3o estejam definidos) e valor do n\u00f3<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_cmerge\">Merge<\/a><\/noindex><br \/>\nC\u00f3pia de sub\u00e1rvore<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ckill\">Kill<\/a><\/noindex><br \/>\nExclus\u00e3o de sub\u00e1rvore<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_czkill\">ZKill<\/a><\/noindex><br \/>\nExclus\u00e3o do valor de um n\u00f3 espec\u00edfico. O sub\u00e1rvore que sai do n\u00f3 n\u00e3o \u00e9 afetada<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fquery\">$Query<\/a><\/noindex><br \/>\nPercurso completo da \u00e1rvore com aprofundamento<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_forder\">$Order<\/a><\/noindex><br \/>\nPercurso dos ramos de um n\u00f3 espec\u00edfico<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fdata\">$Data<\/a><\/noindex><br \/>\nVerifica\u00e7\u00e3o se o n\u00f3 est\u00e1 definido<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fincrement\">$Increment<\/a><\/noindex><br \/>\nIncrementa\u00e7\u00e3o at\u00f4mica do valor do n\u00f3. Para evitar leituras e grava\u00e7\u00f5es, para ACID. Ultimamente, \u00e9 recomendado mudar para <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/263793\/\">$Sequence<\/a><\/noindex><\/p>\n<p>Obrigado pela aten\u00e7\u00e3o, estamos prontos para responder suas perguntas.<\/p>\n<p><b>Aviso Legal<\/b>: <i>este artigo e meus coment\u00e1rios a ele s\u00e3o minha opini\u00e3o e n\u00e3o t\u00eam rela\u00e7\u00e3o com a posi\u00e7\u00e3o oficial da corpora\u00e7\u00e3o InterSystems.<\/i><\/p>\n<p><i><b>Continua\u00e7\u00e3o<\/b> <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/264173\/\">Globais \u2014 espadas m\u00e1gicas para o armazenamento de dados. \u00c1rvores. Parte 2<\/a><\/noindex>. Voc\u00ea vai descobrir quais tipos de dados podem ser exibidos nos globais e em quais tarefas eles oferecem a maior vantagem.<\/i><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/263791\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b, \u043d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u043c\u0435\u044e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u044e\u0442 \u044d\u0442\u0438\u043c \u0441\u0443\u043f\u0435\u0440\u043e\u0440\u0443\u0436\u0438\u0435\u043c. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044b \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0442\u0435\u0445 \u0437\u0430\u0434\u0430\u0447, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u0434\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u041b\u0438\u0431\u043e \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043b\u0438\u0431\u043e \u0432 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 (1, 2). \u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27434,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36634","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\/pt\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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. \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1\" \/>\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\udd47Globais \u2013 espadas de dois gumes para armazenamento de dados. \u00c1rvores. Parte 1 | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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. \u0414\u0435\u0440\u0435\u0432\u044c\u044f. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-derevya-chast-1","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":"36634","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:13: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:13:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/36634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=36634"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/36634\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/27434"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=36634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=36634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=36634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}