{"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\/hu\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","title":{"rendered":"Hat\u00e9kony t\u00e1rol\u00e1s t\u00f6bb sz\u00e1zmilli\u00f3 kism\u00e9ret\u0171 f\u00e1jl sz\u00e1m\u00e1ra. \u00d6n\u00e1ll\u00f3 megold\u00e1s","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Hat\u00e9kony t\u00e1rol\u00e1s t\u00f6bb sz\u00e1zmilli\u00f3 kism\u00e9ret\u0171 f\u00e1jl sz\u00e1m\u00e1ra. \u00d6n\u00e1ll\u00f3 megold\u00e1s\" src=\"\/wp-content\/uploads\/2020\/01\/39cbe3b73cf4a20dba7e9383f922704f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTisztelt k\u00f6z\u00f6ss\u00e9g, ez a cikk a t\u00f6bb sz\u00e1zmilli\u00f3 kis f\u00e1jl hat\u00e9kony t\u00e1rol\u00e1s\u00e1ra \u00e9s kiad\u00e1s\u00e1ra \u00f6sszpontos\u00edt. Ezen a ponton egy v\u00e9gs\u0151 megold\u00e1s javasolt a POSIX kompatibilis f\u00e1jlrendszerekhez, teljes blokkol\u00e1si t\u00e1mogat\u00e1ssal, bele\u00e9rtve a klaszteres megold\u00e1sokat is, \u00e9s \u00fagy t\u0171nik, m\u00e1r cs\u00fasztat\u00e1sok n\u00e9lk\u00fcl.<\/p>\n<p>Ez\u00e9rt erre a c\u00e9lra \u00edrtam egy saj\u00e1t speci\u00e1lis szervert.<br \/>\nA feladat megval\u00f3s\u00edt\u00e1sa sor\u00e1n siker\u00fclt megoldani a f\u0151 probl\u00e9m\u00e1t, mik\u00f6zben el\u00e9rt\u00fck a lemezter\u00fclet \u00e9s a RAM megtakar\u00edt\u00e1st is, amit a klaszteres f\u00e1jlrendszer\u00fcnk kegyetlen\u00fcl ig\u00e9nyelt. Val\u00f3j\u00e1ban ekkora sz\u00e1m\u00fa f\u00e1jl k\u00e1ros b\u00e1rmilyen klaszteres f\u00e1jlrendszer sz\u00e1m\u00e1ra. <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Az \u00f6tlet a k\u00f6vetkez\u0151:<\/p>\n<p>Egyszer\u0171en fogalmazva, a szerveren kereszt\u00fcl kicsi f\u00e1jlokat t\u00f6ltenek fel, amelyek k\u00f6zvetlen\u00fcl arch\u00edvumba ker\u00fclnek, \u00e9s onnan olvass\u00e1k ki \u0151ket, m\u00edg a nagy f\u00e1jlok mellett helyezkednek el. S\u00e9m\u00e1nk: 1 mappa = 1 arch\u00edvum, \u00edgy egymilli\u00f3k vannak arch\u00edvumokkal kicsi f\u00e1jlokkal, nem pedig t\u00f6bb sz\u00e1zmilli\u00f3 f\u00e1jllal. R\u00e1ad\u00e1sul mindez teljes m\u00e9rt\u00e9kben megval\u00f3s\u00edtott, mindenf\u00e9le szkript \u00e9s f\u00e1jlok tar\/zip arch\u00edvumokba helyez\u00e9se n\u00e9lk\u00fcl.<\/p>\n<p>Megpr\u00f3b\u00e1lom r\u00f6viden \u00f6sszefoglalni, el\u0151re is eln\u00e9z\u00e9st, ha a poszt terjedelmes lesz.<\/p>\n<p>Minden azzal kezd\u0151d\u00f6tt, hogy nem tal\u00e1ltam megfelel\u0151 szervert a vil\u00e1gban, amely k\u00f6zvetlen\u00fcl az arch\u00edvumokba tudn\u00e1 t\u00e1rolni a HTTP protokollon kereszt\u00fcl \u00e9rkez\u0151 adatokat, an\u00e9lk\u00fcl, hogy a hagyom\u00e1nyos arch\u00edvumok \u00e9s objektumt\u00e1rol\u00f3k hi\u00e1nyoss\u00e1gait tapasztaltam volna. A keres\u00e9s oka a 10 szerverb\u0151l \u00e1ll\u00f3 Origin klaszter volt, amely m\u00e1r 250,000,000 kis f\u00e1jlt halmozott fel, \u00e9s a n\u00f6veked\u00e9s tendenci\u00e1ja sem akarta megszak\u00edtani.<\/p>\n<p><b>Ann\u00e1l, aki nem szereti a cikkeket, \u00e9s akinek a r\u00f6vid dokument\u00e1ci\u00f3 egyszer\u0171bb:<\/b><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wzd\/blob\/master\/README-RUS.md\">ide<\/a><\/noindex> \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wza\/blob\/master\/README-RUS.md\">ide<\/a><\/noindex>.<\/p>\n<p>\u00c9s a docker is, most van egy lehet\u0151s\u00e9g csak nginx-szel egy\u00fctt, minden esetre:<\/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>\nTov\u00e1bb:<\/p>\n<p>Ha sok f\u00e1jl van, jelent\u0151s er\u0151forr\u00e1sokra van sz\u00fcks\u00e9g, ami a legrosszabb, hogy ezek egy r\u00e9sze hasztalanul elveszik. P\u00e9ld\u00e1ul egy klaszteres f\u00e1jlrendszer (ebben az esetben a MooseFS) haszn\u00e1latakor a f\u00e1jl, f\u00fcggetlen\u00fcl a t\u00e9nyleges m\u00e9ret\u00e9t\u0151l, mindig legal\u00e1bb 64 KB-ot foglal el. Ez azt jelenti, hogy 3, 10 vagy 30 KB m\u00e9ret\u0171 f\u00e1jlok eset\u00e9n a merevlemezen 64 KB-ot ig\u00e9nyelnek. Ha a f\u00e1jlok sz\u00e1ma negyed milli\u00e1rd, akkor 2-10 terab\u00e1jtot vesz\u00edt\u00fcnk el. Az \u00faj f\u00e1jlok v\u00e9gtelens\u00e9gig t\u00f6rt\u00e9n\u0151 l\u00e9trehoz\u00e1sa nem lehets\u00e9ges, mert a MooseFS-ben korl\u00e1toz\u00e1s van: nem lehet t\u00f6bb mint 1 milli\u00e1rd p\u00e9ld\u00e1nya minden f\u00e1jlnak.<\/p>\n<p>A f\u00e1jlok sz\u00e1m\u00e1nak n\u00f6veked\u00e9s\u00e9vel nagy mennyis\u00e9g\u0171 RAM-ra van sz\u00fcks\u00e9g a metaadatokhoz. A gyakori nagy metaadat dumpok is hozz\u00e1j\u00e1rulnak az SSD meghajt\u00f3k elhaszn\u00e1l\u00f3d\u00e1s\u00e1hoz.<\/p>\n<p><b>wZD szerver. Rendet rakunk a merevlemezeken.<\/b><\/p>\n<p>A szerver Go nyelven k\u00e9sz\u00fclt. El\u0151sz\u00f6r is, cs\u00f6kkenteni kellett a f\u00e1jlok sz\u00e1m\u00e1t. Hogyan tehetem ezt? Arch\u00edv\u00e1l\u00e1ssal, de ebben az esetben t\u00f6m\u00f6r\u00edt\u00e9s n\u00e9lk\u00fcl, mert a f\u00e1jljaim t\u00f6m\u00f6r\u00edtett k\u00e9pek. A BoltDB seg\u00edtett, amit m\u00e9g a h\u00e1tr\u00e1nyait\u00f3l meg kellett szabad\u00edtani, ez a dokument\u00e1ci\u00f3ban szerepel.<\/p>\n<p>\u00cdgy a negyed milli\u00e1rd f\u00e1jl helyett az \u00e9n esetemben csak 10 milli\u00f3 Bolt arch\u00edvum maradt. Ha lehet\u0151s\u00e9gem lett volna megv\u00e1ltoztatni a k\u00f6nyvt\u00e1rak f\u00e1jlokkal t\u00f6rt\u00e9n\u0151 jelenlegi strukt\u00far\u00e1j\u00e1t, akkor k\u00f6r\u00fclbel\u00fcl 1 milli\u00f3 f\u00e1jlra tudtam volna cs\u00f6kkenteni. <\/p>\n<p>Minden apr\u00f3 f\u00e1jl Bolt arch\u00edvumokba ker\u00fcl, automatikusan felv\u00e9ve a k\u00f6nyvt\u00e1rak neveit, amelyekben tal\u00e1lhat\u00f3k, m\u00edg minden nagy f\u00e1jl k\u00f6zvetlen\u00fcl az arch\u00edvumok mellett marad, nincs \u00e9rtelme \u0151ket becsomagolni, ez testre szabhat\u00f3. A kicsiket archiv\u00e1ljuk, a nagyokat v\u00e1ltozatlanul hagyjuk. A szerver \u00e1tl\u00e1that\u00f3an m\u0171k\u00f6dik mindkett\u0151vel.<\/p>\n<p><b>A wZD szerver architekt\u00far\u00e1ja \u00e9s jellemz\u0151i.<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Hat\u00e9kony t\u00e1rol\u00e1s t\u00f6bb sz\u00e1zmilli\u00f3 kism\u00e9ret\u0171 f\u00e1jl sz\u00e1m\u00e1ra. \u00d6n\u00e1ll\u00f3 megold\u00e1s\" src=\"\/wp-content\/uploads\/2020\/01\/38e2c6ad50bffe6c2ced460f8dc3e65a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA szerver Linux, BSD, Solaris \u00e9s OSX oper\u00e1ci\u00f3s rendszerek alatt m\u0171k\u00f6dik. \u00c9n csak AMD64 architekt\u00far\u00e1val teszteltem Linux alatt, de ARM64, PPC64, MIPS64 rendszerekhez is megfelel\u0151nek kell lennie.<\/p>\n<p><b>F\u0151bb jellemz\u0151k:<\/b><\/p>\n<ul>\n<li>T\u00f6bbsz\u00e1l\u00fas\u00e1g;<\/li>\n<li>T\u00f6bb szerver t\u00e1mogat\u00e1sa, amely biztos\u00edtja a hibat\u0171r\u00e9st \u00e9s a terhel\u00e9s egyens\u00falyoz\u00e1s\u00e1t;<\/li>\n<li>Maxim\u00e1lis \u00e1tl\u00e1that\u00f3s\u00e1g a felhaszn\u00e1l\u00f3 vagy fejleszt\u0151 sz\u00e1m\u00e1ra;<\/li>\n<li>T\u00e1mogatott HTTP-m\u00f3dszerek: GET, HEAD, PUT \u00e9s DELETE;<\/li>\n<li>A viselked\u00e9s vez\u00e9rl\u00e9se olvas\u00e1s \u00e9s \u00edr\u00e1s sor\u00e1n kliensfejl\u00e9cek \u00e1ltal;<\/li>\n<li>Rugalmasan konfigur\u00e1lhat\u00f3 virtu\u00e1lis hostok t\u00e1mogat\u00e1sa;<\/li>\n<li>CRC adatintegrit\u00e1s t\u00e1mogat\u00e1s \u00edr\u00e1sn\u00e1l\/olvas\u00e1sn\u00e1l;<\/li>\n<li>F\u00e9l-dinamikus pufferek a mem\u00f3ria minim\u00e1lis fogyaszt\u00e1s\u00e1hoz \u00e9s az optim\u00e1lis h\u00e1l\u00f3zati teljes\u00edtm\u00e9ny be\u00e1ll\u00edt\u00e1s\u00e1hoz;<\/li>\n<li>K\u00e9sleltetett adatok t\u00f6m\u00f6r\u00edt\u00e9se;<\/li>\n<li>Tov\u00e1bb\u00e1 a wZA t\u00f6bb sz\u00e1lon fut\u00f3 archiv\u00e1l\u00f3 is felaj\u00e1nl\u00e1sra ker\u00fcl, amely lehet\u0151v\u00e9 teszi a f\u00e1jlok migr\u00e1l\u00e1s\u00e1t a szolg\u00e1ltat\u00e1s le\u00e1ll\u00edt\u00e1sa n\u00e9lk\u00fcl.<\/li>\n<\/ul>\n<p>\n<b>Val\u00f3s tapasztalat:<\/b><\/p>\n<p>Hossz\u00fa ideig fejlesztettem \u00e9s teszteltem a szervert \u00e9s az archiv\u00e1l\u00f3t \u00e9l\u0151 adatokkal, most m\u00e1r sikeresen m\u0171k\u00f6dik egy 250,000,000 kis f\u00e1jlt (k\u00e9peket) tartalmaz\u00f3 klaszterben, amely 15,000,000 k\u00f6nyvt\u00e1rban van elhelyezve, k\u00fcl\u00f6n SATA meghajt\u00f3kon. A 10 szerverb\u0151l \u00e1ll\u00f3 klaszter egy Origin-szerver, amely a CDN-h\u00e1l\u00f3zat m\u00f6g\u00f6tt tal\u00e1lhat\u00f3. A karbantart\u00e1s\u00e1ra 2 Nginx szerver + 2 wZD szerver haszn\u00e1latos.<\/p>\n<p>Ann\u00e1l, aki ezt a szervert haszn\u00e1lni k\u00edv\u00e1nja, \u00e9rdemes megterveznie a k\u00f6nyvt\u00e1rszerkezetet, ha ez alkalmazhat\u00f3. Azonnal megjegyzem, hogy a szerver nem arra lett kital\u00e1lva, hogy mindent egy Bolt arch\u00edvumba t\u00f6m\u00f6r\u00edts\u00fcnk.<\/p>\n<p><b>Teljes\u00edtm\u00e9nytesztel\u00e9s:<\/b><\/p>\n<p>Min\u00e9l kisebb a t\u00f6m\u00f6r\u00edtett f\u00e1jl m\u00e9rete, ann\u00e1l gyorsabban val\u00f3sulnak meg a GET \u00e9s PUT m\u0171veletek. \u00d6sszehasonl\u00edtjuk a HTTP kliens \u00e1ltal a szok\u00e1sos f\u00e1jlokba \u00e9s a Bolt arch\u00edvumokba \u00edrt teljes id\u0151t, valamint az olvas\u00e1st. A 32 KB, 256 KB, 1024 KB, 4096 KB \u00e9s 32768 KB m\u00e9ret\u0171 f\u00e1jlokkal v\u00e9gzett munka \u00f6sszehasonl\u00edt\u00e1sa zajlik.<\/p>\n<p>Bolt arch\u00edvumok haszn\u00e1latakor minden f\u00e1jl adatainak integrit\u00e1s\u00e1t (CRC-t haszn\u00e1lva) ellen\u0151rizz\u00fck, \u00edr\u00e1s el\u0151tt \u00e9s ut\u00e1n pedig azonnali olvas\u00e1sra \u00e9s \u00fajrasz\u00e1m\u00edt\u00e1sra ker\u00fcl sor. Ez term\u00e9szetesen k\u00e9sleltet\u00e9seket eredm\u00e9nyez, de a l\u00e9nyeg a biztons\u00e1g. <\/p>\n<p>Teljes\u00edtm\u00e9nyteszteket SSD-meghajt\u00f3kon v\u00e9geztem, mivel a SATA-meghajt\u00f3kon v\u00e9gzett tesztek nem mutatnak egy\u00e9rtelm\u0171 k\u00fcl\u00f6nbs\u00e9get.<\/p>\n<p><b>A tesztel\u00e9si eredm\u00e9nyek grafikonjai:<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Hat\u00e9kony t\u00e1rol\u00e1s t\u00f6bb sz\u00e1zmilli\u00f3 kism\u00e9ret\u0171 f\u00e1jl sz\u00e1m\u00e1ra. \u00d6n\u00e1ll\u00f3 megold\u00e1s\" src=\"\/wp-content\/uploads\/2020\/01\/298ae08420f476ebb128d5254921973a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Hat\u00e9kony t\u00e1rol\u00e1s t\u00f6bb sz\u00e1zmilli\u00f3 kism\u00e9ret\u0171 f\u00e1jl sz\u00e1m\u00e1ra. \u00d6n\u00e1ll\u00f3 megold\u00e1s\" src=\"\/wp-content\/uploads\/2020\/01\/a7b081be88d894b50942a98f5a666e0e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAhogy l\u00e1that\u00f3, a kis f\u00e1jlok eset\u00e9ben az arch\u00edv \u00e9s nem arch\u00edv f\u00e1jlok k\u00f6z\u00f6tti olvas\u00e1si \u00e9s \u00edr\u00e1si id\u0151 k\u00fcl\u00f6nbs\u00e9ge csek\u00e9ly.<\/p>\n<p>Teljesen m\u00e1s k\u00e9pet kapunk, ha 32 MB m\u00e9ret\u0171 f\u00e1jlok olvas\u00e1s\u00e1nak \u00e9s \u00edr\u00e1s\u00e1nak tesztel\u00e9s\u00e9re ker\u00fcl sor:<\/p>\n<p><img decoding=\"async\" alt=\"Hat\u00e9kony t\u00e1rol\u00e1s t\u00f6bb sz\u00e1zmilli\u00f3 kism\u00e9ret\u0171 f\u00e1jl sz\u00e1m\u00e1ra. \u00d6n\u00e1ll\u00f3 megold\u00e1s\" src=\"\/wp-content\/uploads\/2020\/01\/d908560a26df34c4253c5ed5bd879727.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAz olvas\u00e1si id\u0151 k\u00fcl\u00f6nbs\u00e9ge a f\u00e1jlok k\u00f6z\u00f6tt 5-25 ms k\u00f6z\u00f6tt van. Az \u00edr\u00e1ssal viszont rosszabb a helyzet, a k\u00fcl\u00f6nbs\u00e9g k\u00f6r\u00fclbel\u00fcl 150 ms. De ebben az esetben nem sz\u00fcks\u00e9ges nagy f\u00e1jlokat felt\u00f6lteni, ennek egyszer\u0171en nincs \u00e9rtelme, k\u00fcl\u00f6n \u00e9lhetnek az arch\u00edvumokt\u00f3l.<\/p>\n<p>*Technikailag ez a szerver NoSQL feladatokhoz is haszn\u00e1lhat\u00f3.<\/p>\n<p><b>A wZD szerverrel val\u00f3 munka f\u0151 m\u00f3dszerei:<\/b><\/p>\n<p>Standard f\u00e1jl felt\u00f6lt\u00e9se:<\/p>\n<pre><code class=\"bash\">curl -X PUT --data-binary @test.jpg http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>\nF\u00e1jl felt\u00f6lt\u00e9se a Bolt arch\u00edvumba (ha nem l\u00e9pi t\u00fal a szerver be\u00e1ll\u00edt\u00e1sait, ami meghat\u00e1rozza a f\u00e1jl maxim\u00e1lis m\u00e9ret\u00e9t, ami az arch\u00edvumba ker\u00fclhet; ha t\u00fall\u00e9pi, a f\u00e1jl a megszokott m\u00f3don, az arch\u00edvum mellett t\u00f6lthet\u0151 fel):<\/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>\nF\u00e1jl let\u00f6lt\u00e9se (ha a lemezen \u00e9s az arch\u00edvumban azonos nev\u0171 f\u00e1jlok tal\u00e1lhat\u00f3k, a let\u00f6lt\u00e9s sor\u00e1n az alap\u00e9rtelmezett priorit\u00e1s az arch\u00edvumon k\u00edv\u00fcli f\u00e1jlra esik):<\/p>\n<pre><code class=\"bash\">curl -o test.jpg http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>\nF\u00e1jl let\u00f6lt\u00e9se a Bolt arch\u00edvumb\u00f3l (k\u00e9nyszer\u00edtett m\u00f3don):<\/p>\n<pre><code class=\"bash\">curl -o test.jpg -H &quot;FromArchive: 1&quot; http:\/\/localhost\/test\/test.jpg<\/code><\/pre>\n<p>A t\u00f6bbi m\u00f3dszer le\u00edr\u00e1sa a dokument\u00e1ci\u00f3ban tal\u00e1lhat\u00f3.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wzd\/blob\/master\/README-RUS.md\">wZD dokument\u00e1ci\u00f3<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/eltaline\/wza\/blob\/master\/README-RUS.md\">wZA dokument\u00e1ci\u00f3<\/a><\/noindex><\/p>\n<p>A szerver jelenleg csak HTTP protokollt t\u00e1mogat, HTTPS nem m\u0171k\u00f6dik. POST m\u00f3dszert sem t\u00e1mogatunk (m\u00e9g nem d\u00f6nt\u00f6tt\u00fck el, hogy sz\u00fcks\u00e9ges-e).<\/p>\n<p>Aki belemer\u00fcl a forr\u00e1sk\u00f3dba, megtal\u00e1lja benne a karamellt, amit nem mindenki szeret, de \u00e9n nem k\u00f6t\u00f6ttem az alap k\u00f3dot a webkeretrendszer funkci\u00f3ira, kiv\u00e9ve a megszak\u00edt\u00e1skezel\u0151t, \u00edgy k\u00e9s\u0151bb b\u00e1rmilyen motorra gyorsan \u00e1t tudom \u00edrni.<\/p>\n<p><b>Teend\u0151k:<\/b><\/p>\n<ul>\n<li>Saj\u00e1t replik\u00e1tor \u00e9s disztrib\u00fator fejleszt\u00e9se + ge\u00f3 lehet\u0151s\u00e9gek nagy rendszerek haszn\u00e1lat\u00e1hoz, klaszteralap\u00fa f\u00e1jlrendszerek n\u00e9lk\u00fcl (Mindez komoly m\u00f3don)<\/li>\n<li>Teljes visszanyer\u00e9si lehet\u0151s\u00e9g a metaadatok teljes elveszt\u00e9se eset\u00e9n (disztrib\u00fator haszn\u00e1lata eset\u00e9n)<\/li>\n<li>Nat\u00edv protokoll a tart\u00f3s h\u00e1l\u00f3zati kapcsolatok lehet\u0151s\u00e9ge \u00e9rdek\u00e9ben \u00e9s meghajt\u00f3k k\u00fcl\u00f6nb\u00f6z\u0151 programoz\u00e1si nyelvekhez<\/li>\n<li>Kib\u0151v\u00edtett lehet\u0151s\u00e9gek NoSQL \u00f6sszetev\u0151 haszn\u00e1lat\u00e1ra<\/li>\n<li>K\u00fcl\u00f6nb\u00f6z\u0151 t\u00edpus\u00fa t\u00f6m\u00f6r\u00edt\u00e9sek (gzip, zstd, snappy) f\u00e1jlok vagy Bolt arch\u00edvumokban l\u00e9v\u0151 \u00e9rt\u00e9kek, valamint a norm\u00e1l f\u00e1jlok eset\u00e9ben<\/li>\n<li>K\u00fcl\u00f6nb\u00f6z\u0151 t\u00edpus\u00fa titkos\u00edt\u00e1sok f\u00e1jlok vagy \u00e9rt\u00e9kek sz\u00e1m\u00e1ra Bolt arch\u00edvumokban \u00e9s norm\u00e1l f\u00e1jlokban<\/li>\n<li>K\u00e9sleltetett szerveroldali vide\u00f3konverzi\u00f3, bele\u00e9rtve a GPU-t is<\/li>\n<\/ul>\n<p>\nN\u00e1lam ennyi, rem\u00e9lem, ez a szerver hasznos lesz valakinek, BSD-3 licenc, dupl\u00e1zott szerz\u0151i jog, mivel ha nem lett volna a c\u00e9g, ahol dolgozom, nem \u00edrtam volna meg a szervert. \u00c9n vagyok az egyetlen fejleszt\u0151. H\u00e1l\u00e1s lenn\u00e9k a felfedezett hib\u00e1k\u00e9rt \u00e9s a funkci\u00f3ny\u00fajt\u00e1si k\u00e9relmek\u00e9rt.<br \/>\n<br \/>Forr\u00e1s: <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.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\/hu\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47Hat\u00e9kony t\u00e1rol\u00e1s sz\u00e1zmilli\u00f3 kicsi f\u00e1jl sz\u00e1m\u00e1ra. Self-Hosted megold\u00e1s | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/effektivnoe-hranenie-soten-millionov-malenkih-fajlov-self-hosted-reshenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/55408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=55408"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/55408\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=55408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=55408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=55408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}