{"id":55408,"date":"2020-01-20T00:00:00","date_gmt":"2020-01-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie"},"modified":"2020-02-18T14:03:31","modified_gmt":"2020-02-18T11:03:31","slug":"effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","title":{"rendered":"Saja miljoni v\u00e4ikese faili t\u00f5hus s\u00e4ilitamine. Iseseisev lahendus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Saja miljoni v\u00e4ikese faili t\u00f5hus s\u00e4ilitamine. Iseseisev lahendus\" src=\"\/wp-content\/uploads\/2020\/01\/39cbe3b73cf4a20dba7e9383f922704f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKallis kogukond, see artikkel on p\u00fchendatud t\u00f5husale sadade miljonite v\u00e4ikeste failide salvestamisele ja k\u00e4itlemisele. Selles faasis pakkume l\u00f5pliku lahenduse POSIX-\u00fch compatible failis\u00fcsteemidele, mis toetab t\u00e4ielikult lukustusi, sealhulgas klastrite lukustusi, ja tundub, et isegi ilma igasuguste kompromissideta.<\/p>\n<p>Seega, selle eesm\u00e4rgi saavutamiseks kirjutasin oma spetsialiseeritud serveri.<br \/>\nSelle \u00fclesande elluviimise k\u00e4igus \u00f5nnestus lahendada peamine probleem, saavutada samal ajal diskiruumi ja RAM-i kokkuhoid, mida meie klastrifailis\u00fcsteem pidevalt tarbis. T\u00f5eliselt kahjulik on selline arv faile igasugusele klastrifailis\u00fcsteemile. <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Idee on j\u00e4rgmine:<\/p>\n<p>Lihtsalt \u00f6eldes, v\u00e4iksed failid laaditakse serveri kaudu \u00fcles, salvestatakse otse arhiivi ja loetakse samuti sealt. Suured failid pannakse k\u00f5rvale. Skeem: 1 kaust = 1 arhiiv, seega meil on mitmeid miljoneid arhiive v\u00e4ikeste failidega, mitte sadu miljonite faile. Ja see on t\u00e4ielikult ellu viidud, ilma igasuguste skriptide ja failide jaotamata tar \/ zip arhiividesse.<\/p>\n<p>P\u00fc\u00fcan selgitada l\u00fchemalt, vabandan eelnevalt, kui postitus tuleb mahukas.<\/p>\n<p>K\u00f5ik algas sellest, et ma ei leidnud maailmas sobivat serverit, mis suudaks andmeid salvestada HTTP protokolli kaudu otse arhiividesse, nii et ei oleks tavaliste arhiivide ja objektide salvestusruumide puudusi. Otsingute p\u00f5hjuseks oli suures mahus laienenud Origin klaster 10 serveriga, kus oli juba kogunenud 250 000 000 v\u00e4ikest faili, ning kasvutrend ei kavatse l\u00f5petada.<\/p>\n<p><b>Neile, kellele artiklite lugemine ei meeldi ja kellele v\u00e4ike dokumentatsioon on lihtsam:<\/b><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wzd\/blob\/master\/README-RUS.md\">siia<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wza\/blob\/master\/README-RUS.md\">siia<\/a><\/noindex>.<\/p>\n<p>Ja docker ka, praegu on saadaval variant ainult koos nginx-iga sees igaks juhuks:<\/p>\n<pre><code class=\"bash\">docker run -d --restart=always -e host=localhost -e root=\\\/var\\\/storage \n-v \\\/var\\\/storage:\\\/var\\\/storage --name wzd -p 80:80 eltaline\\\/wzd<\/code><\/pre>\n<p>\nJ\u00e4tkame:<\/p>\n<p>Kui faile on v\u00e4ga palju, on vajalikud m\u00e4rkimisv\u00e4\u00e4rsed ressursid, ja mis on k\u00f5ige kurvem, osa neist kaob asjata. N\u00e4iteks, kui kasutada klastreeritud failis\u00fcsteemi (antud juhul - MooseFS), siis fail, s\u00f5ltumata tegelikust suurusest, v\u00f5tab alati v\u00e4hemalt 64 KB. See t\u00e4hendab, et failide, mille suurus on 3, 10 v\u00f5i 30 KB, puhul vajatakse kettale 64 KB. Kui faile on veerand miljardit, kaotame 2 kuni 10 terabaiti. Uute failide loomine l\u00f5putult ei \u00f5nnestu, kuna MooseFS-is on piirang: mitte rohkem kui 1 miljard iga faili repliiki.<\/p>\n<p>Failide arvu suurenedes on metainformatsiooni jaoks vajalik palju t\u00f6\u00f6m\u00e4lu. Samuti suurte metainformatsiooni dump'id aitavad kaasa SSD-kettaste kulumisele.<\/p>\n<p><b>Server wZD. Teeme kettal korda.<\/b><\/p>\n<p>Server on kirjutatud Go keeles. Esiteks pidi mulle v\u00e4hendama failide arvu. Kuidas seda teha? Arhiveerimise abil, kuid antud juhul ilma kompressioonita, kuna minu failid on sageli tihendatud pildid. Appi tuli BoltDB, mida tuli natuke parandada, see on kajastatud dokumentatsioonis.<\/p>\n<p>Niisiis, minu puhul j\u00e4i veerandi miljardi faili asemel alles ainult 10 miljonit Bolt arhive. Kui mul oleks v\u00f5imalus muuta praegust struktuuri failide t\u00e4itmiseks kataloogides, siis v\u00f5iks selle v\u00e4hendada umbes 1 miljonini. <\/p>\n<p>K\u00f5ik v\u00e4ikesed failid pakitakse Bolt arhiividesse, mis saavad automaatselt katalooge, kus nad asuvad, nimeks, ja k\u00f5ik suured failid j\u00e4\u00e4vad arhiivide k\u00f5rvale, neid pole m\u00f5tet pakendada, seda saab seadistada. V\u00e4ikesed - arhiveerime, suured - j\u00e4tame muutmata. Server t\u00f6\u00f6tab sujuvalt nii nende kui ka teistega.<\/p>\n<p><b>Serveri wZD arhitektuur ja omadused.<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Saja miljoni v\u00e4ikese faili t\u00f5hus s\u00e4ilitamine. Iseseisev lahendus\" src=\"\/wp-content\/uploads\/2020\/01\/38e2c6ad50bffe6c2ced460f8dc3e65a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nServer t\u00f6\u00f6tab Linuxi, BSD, Solaris ja OSX operatsioonis\u00fcsteemide all. Olen testinud ainult AMD64 arhitektuuri Linuxi all, kuid see peaks sobima ka ARM64, PPC64 ja MIPS64 jaoks.<\/p>\n<p><b>P\u00f5hifunktsioonid:<\/b><\/p>\n<ul>\n<li>Mitme t\u00f6\u00f6tluse tugi;<\/li>\n<li>Mulitiserverite tugi, tagades rikkedeta t\u00f6\u00f6 ja koormuse tasakaalustamise;<\/li>\n<li>Maksimaalne l\u00e4bipaistvus kasutajale v\u00f5i arendajale;<\/li>\n<li>Toetatud HTTP meetodid: GET, HEAD, PUT ja DELETE;<\/li>\n<li>K\u00e4itumise haldamine lugemise ja kirjutamise ajal kliendi pealkirjade kaudu;<\/li>\n<li>Paindlikult seadistatavate virtuaalsete hostide tugi;<\/li>\n<li>Andmete terviklikkuse tugi CRC kirjutamisel\/loetamisel;<\/li>\n<li>Poold\u00fcnaamilised puhverid madala m\u00e4lu tarbimise ja optimaalse v\u00f5rgu j\u00f5udluse seadistamiseks;<\/li>\n<li>Andmete kompaktimine<\/li>\n<li>Lisaks pakutakse mitme\u00fchendiga arhiivijat wZA failide migreerimiseks teenuse katkestamata.<\/li>\n<\/ul>\n<p>\n<b>Reaalne kogemus:<\/b><\/p>\n<p>Olen arendanud ja testinud serverit ja arhiivijat reaalsetel andmetel \u00fcsna pikka aega, n\u00fc\u00fcd t\u00f6\u00f6tab see edukalt klastris, mis h\u00f5lmab 250,000,000 v\u00e4ikefaili (pilte), mis asuvad 15,000,000 kataloogis eraldi SATA-diskidel. Klastril, kuhu kuulub 10 serverit, on Origin-server, mis on paigaldatud CDN-v\u00f5rgu taha. Selle teenindamiseks kasutatakse 2 Nginx serverit + 2 wZD serverit.<\/p>\n<p>Neil, kes otsustavad kasutada seda serverit, tasub enne kasutamist planeerida katalooge struktuuri, kui see on asjakohane. \u00dctlen kohe, et server ei ole m\u00f5eldud k\u00f5ike \u00fchte Bolt arhiivi toppimiseks.<\/p>\n<p><b>J\u00f5udlustestimine:<\/b><\/p>\n<p>Mida v\u00e4iksem on arhiivitud faili suurus, seda kiiremini toimuvad GET ja PUT toimingud. V\u00f5rdleme HTTP kliendi t\u00e4ielikku kirjutamise aega tavalistes failides ja Bolt arhiivides ning samuti lugemist. V\u00f5rdlus toimub failide suurustega 32 KB, 256 KB, 1024 KB, 4096 KB ja 32768 KB.<\/p>\n<p>Bolt arhiivide t\u00f6\u00f6tlemisel kontrollitakse iga faili andmete terviklikkust (kasutatakse CRC), enne kirjutamist ja samuti p\u00e4rast kirjutamist toimub ka lugemine ja uuesti arvutamine, see toob loomulikult kaasa viivitusi, kuid peamine - andmete turvalisus. <\/p>\n<p>J\u00f5udlusteste tegin SSD-m\u00e4lu seadmetes, kuna SATA-diskidel ei n\u00e4idata teste selget erinevust.<\/p>\n<p><b>Testimistulemustest graafikud:<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Saja miljoni v\u00e4ikese faili t\u00f5hus s\u00e4ilitamine. Iseseisev lahendus\" src=\"\/wp-content\/uploads\/2020\/01\/298ae08420f476ebb128d5254921973a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Saja miljoni v\u00e4ikese faili t\u00f5hus s\u00e4ilitamine. Iseseisev lahendus\" src=\"\/wp-content\/uploads\/2020\/01\/a7b081be88d894b50942a98f5a666e0e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNagu n\u00e4ha, on v\u00e4ikeste failide lugemise ja kirjutamise ajavahe arhiivitud ja mittearhiivitud failide vahel v\u00e4ike.<\/p>\n<p>Kuid saame t\u00e4iesti teistsuguse pildi, kui testime 32 MB suuruste failide lugemist ja kirjutamist:<\/p>\n<p><img decoding=\"async\" alt=\"Saja miljoni v\u00e4ikese faili t\u00f5hus s\u00e4ilitamine. Iseseisev lahendus\" src=\"\/wp-content\/uploads\/2020\/01\/d908560a26df34c4253c5ed5bd879727.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFailide lugemise ajavahe on 5-25 ms. Kirjutamise puhul on olukord halvem, vahe on umbes 150 ms. Kuid antud juhul ei ole suured failid \u00fcles laadida m\u00f5istetav, sel pole lihtsalt m\u00f5tet, need v\u00f5ivad elada eraldi arhiividest.<\/p>\n<p>*Tehniliselt saab seda serverit kasutada ka NoSQL-iga seotud \u00fclesannete jaoks.<\/p>\n<p><b>Peamised meetodid wZD serveriga t\u00f6\u00f6tamiseks:<\/b><\/p>\n<p>Tavalise faili laadimine:<\/p>\n<pre><code class=\"bash\">curl -X PUT --data-binary @test.jpg http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>\nFaili \u00fcleslaadimine Bolt arhivi (kui serveri parameeter fmaxsize, mis m\u00e4\u00e4rab maksimaalse faili suuruse, mis saab arhivi lisatud olla, ei \u00fcleta, siis faili laaditakse \u00fcles tavaliselt koos arhiviga):<\/p>\n<pre><code class=\"bash\">curl -X PUT -H &quot;Archive: 1&quot; --data-binary @test.jpg http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>\nFaili allalaadimine (kui kettal ja arhivis on faile sama nimega, siis allalaadimisel antakse vaikimisi eelis mittearhiveeritud failile):<\/p>\n<pre><code class=\"bash\">curl -o test.jpg http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>\nFaili allalaadimine Bolt arhivist (sundimisega):<\/p>\n<pre><code class=\"bash\">curl -o test.jpg -H &quot;FromArchive: 1&quot; http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>Muude meetodite kirjeldus on dokumendis.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wzd\/blob\/master\/README-RUS.md\">wZD dokumentatsioon<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wza\/blob\/master\/README-RUS.md\">wZA dokumentatsioon<\/a><\/noindex><\/p>\n<p>Server toetab praegu ainult HTTP protokolli, HTTPS ei toimi. Samuti ei toetata POST meetodit (veel ei ole otsustatud, kas see on vajalik v\u00f5i mitte).<\/p>\n<p>Kes uurib l\u00e4htekoodi, leiab seal iirist, mida k\u00f5ik ei armasta, aga ma ei sidunud p\u00f5hikoodi veebi raamistikuga funktsioonide osas, v\u00e4lja arvatud katkestuste t\u00f6\u00f6tleja, seega saan edaspidi uuesti kiirelt kirjutada peaaegu igale mootorile.<\/p>\n<p><b>ToDo:<\/b><\/p>\n<ul>\n<li>Oma replikatsiooni ja jaotamise arendamine + geo suuremate s\u00fcsteemide jaoks, ilma klastrite FS-ita (asi t\u00f5siselt)<\/li>\n<li>T\u00e4ieliku tagasip\u00f6\u00f6rdumise v\u00f5imalus metaandmete t\u00e4ieliku kadumise korral (distribuutori kasutamise korral)<\/li>\n<li>Natiivprotokoll, et kasutada p\u00fcsivaid v\u00f5rgu\u00fchendusi ja juhtmeid erinevatesse programmeerimiskeeltesse<\/li>\n<li>Laienenud v\u00f5imalused NoSQL komponentide kasutamiseks<\/li>\n<li>Erinevate t\u00fc\u00fcpide kokkusurumine (gzip, zstd, snappy) failide v\u00f5i Bolt arhiivide ja tavalisete failide v\u00e4\u00e4rtuste jaoks<\/li>\n<li>Erinevate t\u00fc\u00fcpide kr\u00fcpteerimine failide v\u00f5i Bolt arhiivides ja tavalisetes failides<\/li>\n<li>Edasil\u00fckatud serveri videokonverteerimine, sealhulgas GPU-l<\/li>\n<\/ul>\n<p>\nMinu poolt k\u00f5ik, loodan, et see server on kellelegi kasulik, BSD-3 litsents, autorikaitse kahekordne, kuna kui poleks olnud ettev\u00f5tet, kus ma t\u00f6\u00f6tan, ei oleks ma ka serverit kirjutanud. Olen arendaja \u00fcksi. Olen t\u00e4nulik t\u00f5statatud vigade ja funktsioonide soovituste eest.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/484312\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0438 \u0432\u044b\u0434\u0430\u0447\u0435 \u0441\u043e\u0442\u0435\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f POSIX \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445, \u0438 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0434\u0430\u0436\u0435 \u0443\u0436\u0435 \u0431\u0435\u0437 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u041f\u043e \u0445\u043e\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55408","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.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\/et\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0442\u0435\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. Self-Hosted \u0440\u0435\u0448\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie\" \/>\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=\"2020-01-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:31+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\udd47T\u00f5hus v\u00e4ikeste failide ladustamine sadade miljonite kaupa. Iseseisev lahendus | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0442\u0435\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. Self-Hosted \u0440\u0435\u0448\u0435\u043d\u0438\u0435 | ProHoster","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","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":"2020-01-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55408","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:44:26","updated":"2022-09-30 03:35:08","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/55408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=55408"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/55408\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=55408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=55408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=55408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}