{"id":71858,"date":"2020-02-28T21:00:08","date_gmt":"2020-02-28T18:00:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/patterny-hraneniya-dannyh-v-kubernetes"},"modified":"2020-03-03T16:14:09","modified_gmt":"2020-03-03T13:14:09","slug":"patterny-hraneniya-dannyh-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Modele de stocare a datelor \u00een Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/490180\/\"><img decoding=\"async\" alt=\"Modele de stocare a datelor \u00een Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nSalut, Habr!<\/p>\n<p>\u00ce\u021bi reamintim c\u0103 a ap\u0103rut un nou articol extrem de interesant \u0219i util <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">carte<\/a><\/noindex> despre tiparele Kubernetes. Totul a \u00eenceput cu<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">Modelele<\/a><\/noindex>Brendan Burns, iar, de altfel, activitatea noastr\u0103 \u00een acest domeniu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">este intens\u0103<\/a><\/noindex>. Ast\u0103zi, \u00ee\u021bi propunem s\u0103 cite\u0219ti un articol din blogul MinIO, care rezum\u0103 tendin\u021bele \u0219i specificul modelelor de stocare a datelor \u00een Kubernetes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kubernetes a schimbat fundamental modelele tradi\u021bionale de dezvoltare \u0219i implementare a aplica\u021biilor. Acum, echipele pot dezvolta, testa \u0219i implementa o aplica\u021bie \u00een c\u00e2teva zile \u2014 \u00een medii diferite, toate acestea \u00een cadrul clusterelor Kubernetes. O astfel de munc\u0103 cu tehnologiile din genera\u021biile anterioare ocupa de obicei s\u0103pt\u0103m\u00e2ni \u00eentregi, dac\u0103 nu luni.<\/p>\n<p>Aceast\u0103 accelerare a devenit posibil\u0103 datorit\u0103 abstrac\u021biei oferite de Kubernetes \u2014 adic\u0103, datorit\u0103 faptului c\u0103 Kubernetes se ocup\u0103 de interac\u021biunile cu detaliile de nivel inferior ale ma\u0219inilor fizice sau virtuale, permi\u021b\u00e2nd utilizatorilor s\u0103 declare, printre altele, procesorul necesar, volumul de memorie dorit \u0219i num\u0103rul de instan\u021be ale containerelor. Av\u00e2nd \u00een vedere c\u0103 un imens comunitate se ocup\u0103 de suportul Kubernetes, iar domeniul de aplicare al Kubernetes continu\u0103 s\u0103 se extind\u0103, acesta conduce cu un avans considerabil \u00eentre toate platformele de orchestrare a containerelor.<\/p>\n<p><i><b>Pe m\u0103sur\u0103 ce utilizarea Kubernetes se extinde, confuzia cu privire la modelele de stocare a datelor utilizate \u00een acesta cre\u0219te<\/b><\/i>.<\/p>\n<p>\u00centr-o competi\u021bie general\u0103 pentru o parte din acest \"tort\" Kubernetes (adic\u0103, pentru stocarea datelor), atunci c\u00e2nd vine vorba de stocarea datelor, mesajul devine cufundat \u00eentr-un zgomot puternic.<br \/>\nKubernetes \u00eentruchipeaz\u0103 modelul modern de dezvoltare \u0219i implementare a aplica\u021biilor, precum \u0219i gestionarea acestora. Acest model modern separ\u0103 stocarea datelor de procesare. Pentru a \u00een\u021belege pe deplin aceast\u0103 separare \u00een contextul Kubernetes, este necesar s\u0103 \u00een\u021belegem ce sunt aplica\u021biile cu salvare a st\u0103rii \u0219i cele f\u0103r\u0103 salvare a st\u0103rii, precum \u0219i cum se \u00eembin\u0103 aceste concepte cu stocarea datelor. Aici, abordarea REST API utilizat\u0103 de S3 are avantaje evidente \u00een compara\u021bie cu abordarea POSIX\/CSI caracteristic\u0103 altor solu\u021bii.<\/p>\n<p>\u00cen acest articol vom discuta despre modele de stocare a datelor \u00een Kubernetes \u0219i vom aborda \u00een mod special dezbaterea despre aplica\u021biile care func\u021bioneaz\u0103 cu \u0219i f\u0103r\u0103 stocare persistent\u0103, pentru a \u00een\u021belege \u00een profunzime care este diferen\u021ba dintre ele \u0219i de ce este important\u0103. \u00cen textul de mai jos, vor fi exploreaz\u0103 aplica\u021biile \u0219i modelele de stocare a datelor utilizate \u00een lumina celor mai bune practici pentru lucrul cu containere \u0219i Kubernetes.<\/p>\n<h4>Containere f\u0103r\u0103 stocare persistent\u0103<\/h4>\n<p>\nContainerele sunt, prin natura lor, u\u0219oare \u0219i efemere. Acestea pot fi oprite, \u0219terse sau desf\u0103\u0219urate pe un alt nod \u00een c\u00e2teva secunde. \u00centr-un sistem mare de orchestrare a containerelor, astfel de opera\u021biuni se desf\u0103\u0219oar\u0103 constant, iar utilizatorii aproape c\u0103 nu observ\u0103 aceste schimb\u0103ri. Totu\u0219i, mut\u0103rile sunt posibile doar dac\u0103 containerul nu are nicio dependen\u021b\u0103 de nodul pe care se afl\u0103. Despre aceste containere se spune c\u0103 func\u021bioneaz\u0103 <i>f\u0103r\u0103 stocare persistent\u0103<\/i>.<\/p>\n<h4>Containere cu stocare persistent\u0103<\/h4>\n<p>\nDac\u0103 un container stocheaz\u0103 date pe dispozitive local conectate (sau pe un dispozitiv bloc), atunci stocarea datelor pe care se afl\u0103 va trebui mutat\u0103 pe un nou nod \u00eempreun\u0103 cu containerul \u2013 \u00een caz de e\u0219ec. Acest lucru este important, deoarece, \u00een caz contrar, aplica\u021bia rulat\u0103 \u00een container nu va putea func\u021biona corect, deoarece trebuie s\u0103 acceseze datele stocate pe suporturi locale. Despre aceste containere se spune c\u0103 func\u021bioneaz\u0103 <i>cu stocare persistent\u0103<\/i>.<\/p>\n<p>Dintr-o perspectiv\u0103 pur tehnic\u0103, containerele cu stocare persistent\u0103 pot fi, de asemenea, mutate pe alte noduri. Acest lucru este de obicei realizat prin intermediul sistemelor de fi\u0219iere distribuite sau a stoc\u0103rilor de date de re\u021bea ata\u0219ate la toate nodurile pe care func\u021bioneaz\u0103 containerele. Astfel, containerele au acces la volume pentru stocarea persistent\u0103 a datelor, iar informa\u021biile sunt stocate pe discuri dispersate \u00een re\u021bea. Aceast\u0103 metod\u0103 o voi numi \u201e<i>abordarea containerelor cu stocare persistent\u0103<\/i>\u201d, iar \u00een restul articolului voi continua s\u0103 \u00eei spun a\u0219a pentru a men\u021bine uniformitatea.<\/p>\n<p><img decoding=\"async\" alt=\"Modele de stocare a datelor \u00een Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen abordarea tipic\u0103 a containerelor cu p\u0103strarea st\u0103rii, toate modulele aplica\u021biilor se ata\u0219eaz\u0103 la un sistem de fi\u0219iere distribuit - astfel se ob\u021bine un fel de stocare comun\u0103, \u00een care se afl\u0103 toate datele aplica\u021biilor. Chiar dac\u0103 pot exista unele varia\u021bii, aceasta este o abordare la nivel \u00eenalt.<\/p>\n<p>Acum s\u0103 analiz\u0103m de ce abordarea containerelor cu p\u0103strarea st\u0103rii \u00een lumea orientat\u0103 spre cloud este un antipattern.<\/p>\n<h4>Proiectarea aplica\u021biilor orientate spre cloud<\/h4>\n<p>\n\u00cen mod tradi\u021bional, aplica\u021biile foloseau baze de date pentru stocarea structurat\u0103 a informa\u021biilor \u0219i discuri locale sau sisteme de fi\u0219iere distribuite, unde erau stocate toate datele nestructurate sau chiar semi-structurate. Pe m\u0103sur\u0103 ce volumul datelor nestructurate cre\u0219tea, dezvoltatorii \u0219i-au dat seama c\u0103 POSIX este prea \"vorb\u0103re\u021b\", asociat cu costuri semnificative \u0219i, \u00een cele din urm\u0103, \u00eempiedic\u0103 func\u021bionarea aplica\u021biei atunci c\u00e2nd se trece la scale cu adev\u0103rat mari.<\/p>\n<p>Acest lucru a contribuit semnificativ la apari\u021bia unui nou standard de stocare a datelor, adic\u0103 stoc\u0103rile orientate spre cloud, care func\u021bioneaz\u0103 predominant pe baza REST API \u0219i \u00eenl\u0103tur\u0103 aplica\u021bia de greutatea \u00eentre\u021binerii stoc\u0103rii locale de date. \u00cen acest caz, aplica\u021bia intr\u0103, de fapt, \u00een modul f\u0103r\u0103 p\u0103strarea st\u0103rii (deoarece starea se afl\u0103 \u00een stocarea distant\u0103). Aplica\u021biile moderne sunt construite de la zero av\u00e2nd \u00een vedere acest factor. De obicei, orice aplica\u021bie modern\u0103 care proceseaz\u0103 date de orice fel (jurnale, metadate, BLOB-uri etc.) este construit\u0103 pe o paradigm\u0103 orientat\u0103 spre cloud, \u00een care starea este mutat\u0103 \u00eentr-un sistem software dedicat pentru stocarea acesteia. <\/p>\n<p><i><b>Abordarea containerelor cu p\u0103strarea st\u0103rii for\u021beaz\u0103 \u00eentreaga aceast\u0103 paradigm\u0103 s\u0103 revin\u0103 exact la \u00eenceput! <\/b><\/i><\/p>\n<p>C\u00e2nd folose\u0219ti interfe\u021bele POSIX pentru stocarea datelor, aplica\u021biile func\u021bioneaz\u0103 similar cu modul \u00een care ar salva starea, ceea ce le face s\u0103 se \u00eendep\u0103rteze de cele mai importante principii ale designului bazat pe cloud, adic\u0103 de capacitatea de a varia dimensiunile fluxurilor de lucru ale aplica\u021biei \u00een func\u021bie de \u00eenc\u0103rc\u0103tura de intrare, de a se muta pe un nou nod imediat ce nodul actual e\u0219ueaz\u0103 etc.<\/p>\n<p>Dac\u0103 ne uit\u0103m mai atent la aceast\u0103 situa\u021bie, observ\u0103m c\u0103 atunci c\u00e2nd alegem un stocare a datelor ne confrunt\u0103m din nou \u0219i din nou cu dilema \u201ePOSIX versus REST API\u201d, DAR cu o agravare suplimentar\u0103 a problemelor POSIX, cauzat\u0103 de natura distribuit\u0103 a mediilor Kubernetes. \u00cen special,<\/p>\n<ul>\n<li><b>POSIX este vorb\u0103re\u021b<\/b>: semantica POSIX cere asocierea fiec\u0103rei opera\u021bii cu metadate \u0219i descriitori de fi\u0219iere, care ajut\u0103 la men\u021binerea st\u0103rii opera\u021biei. Aceasta duce la costuri semnificative, f\u0103r\u0103 o valoare real\u0103. API-urile pentru stocarea obiectelor, \u00een special S3 API, s-au dezb\u0103rat de aceste cerin\u021be, permi\u021b\u00e2nd aplica\u021biei s\u0103 execute ac\u021biunea \u0219i apoi s\u0103 \u201euit\u0103\u201d de apel. R\u0103spunsul sistemului de stocare a datelor indic\u0103 dac\u0103 ac\u021biunea a fost executat\u0103 cu succes sau nu. \u00cen caz de e\u0219ec, aplica\u021bia poate efectua o repetare.<\/li>\n<li><b>Limit\u0103rile re\u021belei<\/b>: \u00centr-un sistem distribuit se presupune c\u0103 ar putea exista multiple aplica\u021bii care \u00eencearc\u0103 s\u0103 scrie date pe acela\u0219i mediu de stocare ata\u0219at. A\u0219adar, nu doar c\u0103 aplica\u021biile vor concura \u00eentre ele pentru l\u0103\u021bimea de band\u0103 (pentru a trimite datele pe mediu), dar \u00eens\u0103\u0219i sistemul de stocare va concura pentru aceast\u0103 l\u0103\u021bime, distribuind datele pe discurile fizice. Din cauza vorb\u0103re\u021bului POSIX, num\u0103rul apelurilor de re\u021bea cre\u0219te de mai multe ori. Pe de alt\u0103 parte, S3 API ofer\u0103 o delimitare clar\u0103 a apelurilor de re\u021bea \u00eentre cele care vin de la client la server \u0219i cele care au loc \u00een interiorul serverului.<\/li>\n<li><b>Securitate<\/b>: Modelul de securitate POSIX este conceput pentru a implica activ oamenii: administratorii configureaz\u0103 nivelurile de acces specifice pentru fiecare utilizator sau grup. Aceast\u0103 paradigm\u0103 este greu de adaptat la o lume orientat\u0103 spre cloud. Aplica\u021biile moderne depind de modele de securitate legate de API, unde drepturile de acces sunt stabilite sub form\u0103 de seturi de politici, conturi de serviciu, acreditive temporare etc.<\/li>\n<li><b>Gestionabilitate<\/b>: Containerele cu stocare persistent\u0103 genereaz\u0103 anumite costuri legate de gestionare. Este vorba despre sincronizarea accesului paralel la date, despre asigurarea coeren\u021bei datelor; toate acestea necesit\u0103 o analiz\u0103 atent\u0103 a tiparelor de acces la date care ar trebui utilizate. Este necesar s\u0103 se instaleze, s\u0103 se controleze \u0219i s\u0103 se configureze programe suplimentare, nemaivorbind de eforturile suplimentare necesare dezvolt\u0103rii.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Interfa\u021ba de stocare a containerelor de date<\/h4>\n<p>\nDe\u0219i interfa\u021ba de stocare a containerelor (CSI) a ajutat considerabil la extinderea nivelului volumelor Kubernetes, transfer\u00e2nd par\u021bial aceste func\u021bii c\u0103tre furnizori ter\u021bi de stocare, a contribuit totodat\u0103 la convingerea gre\u0219it\u0103 c\u0103 abordarea containerelor cu stocare persistent\u0103 este metoda recomandat\u0103 pentru stocarea datelor \u00een Kubernetes.<\/p>\n<p>CSI a fost dezvoltat ca un standard pentru furnizarea unor sisteme arbitrare de stocare bloc \u0219i fi\u0219ier pentru aplica\u021biile mo\u0219tenite atunci c\u00e2nd se utilizeaz\u0103 Kubernetes. A\u0219a cum a fost demonstrat \u00een acest articol, singura situa\u021bie \u00een care abordarea containerelor cu stocare persistent\u0103 (\u0219i CSI \u00een forma sa actual\u0103) este fezabil\u0103 este atunci c\u00e2nd aplica\u021bia \u00eens\u0103\u0219i este un sistem mo\u0219tenit, \u00een care nu se poate ad\u0103uga suport pentru API-ul de stocare a obiectelor.<\/p>\n<p>Este important s\u0103 \u00een\u021belegem c\u0103, folosind CSI \u00een forma sa actual\u0103, adic\u0103 mont\u00e2nd volumele \u00een timpul utiliz\u0103rii aplica\u021biilor moderne, ne vom confrunta aproximativ cu acelea\u0219i probleme care au existat \u0219i \u00een sistemele \u00een care stocarea datelor era organizat\u0103 \u00een stil POSIX.<\/p>\n<h4>O abordare de calitate superioar\u0103<\/h4>\n<p>\n\u00cen acest caz, este important s\u0103 \u00een\u021belegem c\u0103 majoritatea aplica\u021biilor nu sunt, prin natura lor, concepute s\u0103 func\u021bioneze cu p\u0103strarea st\u0103rii sau f\u0103r\u0103 p\u0103strarea st\u0103rii. Acest comportament depinde de arhitectura general\u0103 a sistemului \u0219i de op\u021biunile specifice alese \u00een timpul proiect\u0103rii. S\u0103 discut\u0103m pu\u021bin despre aplica\u021biile care p\u0103streaz\u0103 starea.<\/p>\n<p>\u00cen principiu, toate datele aplica\u021biilor pot fi clasificate \u00een c\u00e2teva tipuri mari:<\/p>\n<ul>\n<li>Datele jurnalelor<\/li>\n<li>Datele etichetelor de timp<\/li>\n<li>Datele tranzac\u021biilor<\/li>\n<li>Metadatele<\/li>\n<li>Imaginile containerelor<\/li>\n<li>Datele blob (obiecte binare mari)<\/li>\n<\/ul>\n<p>\nToate aceste tipuri de date sunt foarte bine suportate pe platformele moderne de stocare a datelor, iar exist\u0103 mai multe platforme orientate c\u0103tre cloud, adaptate pentru livrarea datelor \u00een fiecare dintre aceste formate specifice. De exemplu, datele tranzac\u021biilor \u0219i metadatele pot fi stocate \u00eentr-o baz\u0103 de date orientat\u0103 pe cloud modern\u0103, cum ar fi CockroachDB, YugaByte etc. Imaginile containerelor sau datele blob pot fi stocate \u00een registrul Docker bazat pe MinIO. Datele etichetelor de timp pot fi stocate \u00eentr-o baz\u0103 de date pentru serii temporale, cum ar fi InfluxDB etc. S\u0103 nu ne ad\u00e2ncim \u00een detaliile fiec\u0103rui tip de date \u0219i aplica\u021bii corespunz\u0103toare, dar ideea general\u0103 este de a evita stocarea persistent\u0103 a datelor bazate pe montarea local\u0103 a discurilor.<\/p>\n<p><img decoding=\"async\" alt=\"Modele de stocare a datelor \u00een Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen plus, adesea se dovede\u0219te eficient s\u0103 se ofere un nivel de caching temporar, care s\u0103 serveasc\u0103 aplica\u021biilor ca un fel de stocare a fi\u0219ierelor temporare, dar aplica\u021biile nu ar trebui s\u0103 depind\u0103 de acest nivel ca surs\u0103 de adev\u0103r.<\/p>\n<h4>Stocarea pentru aplica\u021biile cu p\u0103strarea st\u0103rii<\/h4>\n<p>\nDe\u0219i \u00een majoritatea cazurilor este util s\u0103 men\u021binem aplica\u021biile f\u0103r\u0103 p\u0103strarea st\u0103rii, acele aplica\u021bii care sunt concepute pentru a stoca date \u2013 de exemplu, bazele de date, stoc\u0103rile de obiecte, stoc\u0103rile de chei \u0219i valori \u2013 trebuie s\u0103 p\u0103streze starea. S\u0103 analiz\u0103m de ce aceste aplica\u021bii sunt desf\u0103\u0219urate pe Kubernetes. Ca exemplu, s\u0103 lu\u0103m MinIO, dar principii similare se aplic\u0103 \u0219i altor sisteme mari de stocare a datelor orientate c\u0103tre cloud.<\/p>\n<p>Aplica\u021biile orientate pe cloud sunt concepute pentru a maximiza eficien\u021ba utiliz\u0103rii flexibilit\u0103\u021bii caracteristice containerelor. Aceasta \u00eenseamn\u0103 c\u0103 nu se fac presupuneri cu privire la mediul \u00een care vor fi desf\u0103\u0219urate. De exemplu, MinIO utilizeaz\u0103 un mecanism intern de codificare redundant\u0103 (erasure coding), care ofer\u0103 sistemului o suficient\u0103 rezilien\u021b\u0103 pentru a r\u0103m\u00e2ne func\u021bional chiar \u0219i \u00een cazul defect\u0103rii a jum\u0103tate din discuri. De asemenea, MinIO gestioneaz\u0103 integritatea \u0219i securitatea datelor prin utilizarea propriului hashing \u0219i criptare la nivel de server.<\/p>\n<p>Pentru astfel de aplica\u021bii orientate pe cloud, cele mai convenabile solu\u021bii de stocare de rezerv\u0103 sunt volumele persistente locale (PV). Un PV local ofer\u0103 posibilitatea de a stoca datele neprelucrate, \u00een timp ce aplica\u021biile care ruleaz\u0103 deasupra acestor PV colecteaz\u0103 informa\u021bii care permit scalarea datelor \u0219i gestionarea cerin\u021belor de date \u00een cre\u0219tere.<\/p>\n<p>Aceast\u0103 abordare este mult mai simpl\u0103 \u0219i scala\u021bional\u0103 comparativ cu PV bazate pe CSI, care introduc propriile niveluri de gestionare a datelor \u0219i redundan\u021b\u0103 \u00een sistem; problema este c\u0103 aceste niveluri intr\u0103 de obicei \u00een conflict cu aplica\u021biile proiectate cu conceptul de p\u0103strare a st\u0103rii.<\/p>\n<h4>O mi\u0219care sigur\u0103 c\u0103tre decuplarea datelor de calcul<\/h4>\n<p>\n\u00cen acest articol am discutat despre modul \u00een care aplica\u021biile se reorienteaz\u0103 pentru a func\u021biona f\u0103r\u0103 p\u0103strarea st\u0103rii, adic\u0103 stocarea datelor este separat\u0103 de calculele efectuate asupra acestora. \u00cen concluzie, vom examina c\u00e2teva exemple reale ale acestei tendin\u021be.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, celebra platform\u0103 de analiz\u0103 a datelor, a fost tradi\u021bional utilizat\u0103 cu p\u0103strarea st\u0103rii \u0219i desf\u0103\u0219urat\u0103 \u00een sistemul de fi\u0219iere HDFS. Totu\u0219i, pe m\u0103sur\u0103 ce Spark se mut\u0103 \u00eentr-o lume orientat\u0103 pe cloud, aceast\u0103 platform\u0103 este tot mai des utilizat\u0103 f\u0103r\u0103 p\u0103strarea st\u0103rii, folosind `s3a`. Spark utilizeaz\u0103 s3a pentru a transmite starea c\u0103tre alte sisteme, \u00een timp ce containerele Spark func\u021bioneaz\u0103 complet f\u0103r\u0103 p\u0103strarea st\u0103rii. Al\u021bi mari juc\u0103tori din domeniul analizei datelor mari, \u00een special, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.vertica.com\/docs\/9.2.x\/HTML\/Content\/Authoring\/Eon\/Architecture.htm\">Vertica<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/min.io\/resources\/docs\/Teradata-solution-brief.pdf\">Teradata<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.pivotal.io\/partners\/minio-greenplum\/using.html\">Greenplum<\/a><\/noindex> de asemenea, se \u00eendreapt\u0103 spre a func\u021biona cu separarea stoc\u0103rii datelor de calculele efectuate asupra acestora.<\/p>\n<p>Modele similare se reg\u0103sesc \u0219i pe alte platforme analitice majore, precum Presto, Tensorflow to R, Jupyter. Export\u00e2nd starea \u00een sisteme de stocare \u00een cloud de la distan\u021b\u0103, devine mult mai simplu s\u0103 gestiona\u021bi aplica\u021bia dvs. \u0219i s\u0103 o scala\u021bi. \u00cen plus, aceasta contribuie la portabilitatea aplica\u021biei \u00een diverse medii.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/490180\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u044b\u0448\u043b\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 Kubernetes. \u041d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441 &quot;\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432&quot; \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430 \u0411\u0435\u0440\u043d\u0441\u0430, \u0438, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0443 \u043d\u0430\u0441 \u043a\u0438\u043f\u0438\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 MinIO, \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes. Kubernetes \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":71859,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-71858","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\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-02-28T18:00:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:09+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\udd47Modele de stocare a datelor \u00een Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes | ProHoster","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","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-02-28T18:00:08+00:00","article:modified_time":"2020-03-03T13:14:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"71858","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 18:55:27","updated":"2022-09-27 18:57:08","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/71858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}