{"id":95148,"date":"2020-09-25T19:43:09","date_gmt":"2020-09-25T17:43:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb"},"modified":"2020-09-25T19:43:09","modified_gmt":"2020-09-25T17:43:09","slug":"14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","title":{"rendered":"14 v\u011bc\u00ed, kter\u00e9 bych cht\u011bl v\u011bd\u011bt p\u0159ed za\u010d\u00e1tkem pr\u00e1ce s MongoDB","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>P\u0159eklad \u010dl\u00e1nku byl vyhotoven p\u0159ed za\u010d\u00e1tkem kurzu <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/ZRL1\/\">Nerela\u010dn\u00ed datab\u00e1ze<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"14 v\u011bc\u00ed, kter\u00e9 bych cht\u011bl v\u011bd\u011bt p\u0159ed za\u010d\u00e1tkem pr\u00e1ce s MongoDB\" src=\"\/wp-content\/uploads\/2020\/09\/9b4979be27e0090543b28150d90fa8df.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hlavn\u00ed body:<\/p>\n<ul>\n<li>Je velmi d\u016fle\u017eit\u00e9 navrhnout sch\u00e9ma, i kdy\u017e je v MongoDB nepovinn\u00e9.<\/li>\n<li>Podobn\u011b by indexy m\u011bly odpov\u00eddat va\u0161emu sch\u00e9matu a vzor\u016fm p\u0159\u00edstupu. <\/li>\n<li>Vyhn\u011bte se pou\u017e\u00edv\u00e1n\u00ed velk\u00fdch objekt\u016f a velk\u00fdch pol\u00ed.<\/li>\n<li>Bu\u010fte opatrn\u00ed s nastaven\u00edm MongoDB, zejm\u00e9na pokud jde o bezpe\u010dnost a spolehlivost.<\/li>\n<li>V MongoDB neexistuje optimaliz\u00e1tor dotaz\u016f, tak\u017ee byste m\u011bli b\u00fdt opatrn\u00ed p\u0159i prov\u00e1d\u011bn\u00ed dotazovac\u00edch operac\u00ed.<\/li>\n<\/ul>\n<p>\nDlouho pracuji s datab\u00e1zemi, ale teprve ned\u00e1vno jsem objevil MongoDB. Je n\u011bkolik v\u011bc\u00ed, kter\u00e9 bych cht\u011bl v\u011bd\u011bt, ne\u017e s n\u00ed za\u010dnu pracovat. Jakmile m\u00e1 \u010dlov\u011bk zku\u0161enosti v ur\u010dit\u00e9 oblasti, m\u00e1 p\u0159edpojat\u00e9 p\u0159edstavy o tom, co datab\u00e1ze jsou a co d\u011blaj\u00ed. S c\u00edlem usnadnit porozum\u011bn\u00ed ostatn\u00edm lidem p\u0159edstav\u00edm seznam b\u011b\u017en\u00fdch chyb.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Vytvo\u0159en\u00ed serveru MongoDB bez autentizace<\/h3>\n<p>\nBohu\u017eel, MongoDB se ve v\u00fdchoz\u00edm nastaven\u00ed instaluje bez autentizace. Pro pracovn\u00ed stanici, ke kter\u00e9 je p\u0159\u00edstup lok\u00e1ln\u00ed, je takov\u00e1 praxe norm\u00e1ln\u00ed. Ale proto\u017ee MongoDB je v\u00edcerozm\u011brn\u00fd syst\u00e9m, kter\u00fd r\u00e1d pou\u017e\u00edv\u00e1 velk\u00e9 mno\u017estv\u00ed pam\u011bti, bylo by lep\u0161\u00ed, kdybyste ji nainstalovali na server s co nejv\u011bt\u0161\u00edm mo\u017en\u00fdm mno\u017estv\u00edm RAM, i kdy\u017e ji pl\u00e1nujete pou\u017e\u00edvat jen pro v\u00fdvoj. Instalace na server p\u0159es v\u00fdchoz\u00ed port m\u016f\u017ee b\u00fdt problematick\u00e1, zejm\u00e9na pokud v dotazu m\u016f\u017ee b\u00fdt vykon\u00e1n libovoln\u00fd k\u00f3d v JavaScriptu (nap\u0159\u00edklad, <code>$where<\/code> jako n\u00e1pad pro <noindex><a rel=\"nofollow\" href=\"https:\/\/lockmedown.com\/securing-node-js-mongodb-security-injection-attacks\/\">injekci<\/a><\/noindex>). <\/p>\n<p>Existuje n\u011bkolik metod autentizace, ale nejjednodu\u0161\u0161\u00ed je nastavit u\u017eivatelsk\u00e9 ID\/heslo. Vyu\u017eijte tuto my\u0161lenku, dokud budete p\u0159em\u00fd\u0161let o komplikovan\u011bj\u0161\u00ed autentizaci zalo\u017een\u00e9 na <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/security-ldap-external\/\">LDAP<\/a><\/noindex>. Co se t\u00fd\u010de bezpe\u010dnosti, MongoDB by m\u011bla b\u00fdt pravideln\u011b aktualizov\u00e1na a logy by m\u011bly b\u00fdt v\u017edy kontrolov\u00e1ny na neautorizovan\u00fd p\u0159\u00edstup. Nap\u0159\u00edklad r\u00e1d vyb\u00edr\u00e1m jin\u00fd port jako v\u00fdchoz\u00ed port.<\/p>\n<h3>Nezapome\u0148te sv\u00e1zat \u00fato\u010dnou plochu s MongoDB<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/administration\/security-checklist\/\">Kontroln\u00ed seznam zabezpe\u010den\u00ed MongoDB<\/a><\/noindex> obsahuje dobr\u00e9 rady pro sn\u00ed\u017een\u00ed rizika naru\u0161en\u00ed s\u00edt\u011b a \u00faniku dat. Je snadn\u00e9 si myslet, \u017ee server pro v\u00fdvoj nepot\u0159ebuje vysokou \u00farove\u0148 zabezpe\u010den\u00ed. Ale v\u0161e nen\u00ed tak jednoduch\u00e9 a to plat\u00ed pro v\u0161echny servery MongoDB. Zejm\u00e9na pokud neexistuje v\u00e1\u017en\u00fd d\u016fvod pro pou\u017eit\u00ed <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/command\/mapReduce\/#dbcmd.mapReduce\">mapReduce<\/a><\/noindex><\/code>, <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/command\/group\/#dbcmd.group\">group<\/a><\/noindex><\/code> nebo <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/query\/where\/#op._S_where\">$where<\/a><\/noindex>, je t\u0159eba zak\u00e1zat pou\u017e\u00edv\u00e1n\u00ed libovoln\u00e9ho k\u00f3du v JavaScriptu t\u00edm, \u017ee do konfigura\u010dn\u00edho souboru nap\u00ed\u0161ete <code><noindex><a rel=\"nofollow\" href=\"https:\/\/lockmedown.com\/securing-node-js-mongodb-security-injection-attacks\/\">javascriptEnabled:false<\/a><\/noindex><\/code>. Vzhledem k tomu, \u017ee v b\u011b\u017en\u00e9 MongoDB nejsou datov\u00e9 soubory \u0161ifrov\u00e1ny, je rozumn\u00e9 spou\u0161t\u011bt MongoDB s <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/administration\/security-checklist\/#run-mongodb-with-a-dedicated-user\">vyhrazen\u00fdm u\u017eivatelem<\/a><\/noindex>, kter\u00fd m\u00e1 pln\u00fd p\u0159\u00edstup k soubor\u016fm, s omezen\u00fdm p\u0159\u00edstupem pouze pro n\u011bj a mo\u017enost\u00ed pou\u017e\u00edvat vlastn\u00ed prost\u0159edky \u0159\u00edzen\u00ed p\u0159\u00edstupu k soubor\u016fm opera\u010dn\u00edho syst\u00e9mu.<\/p>\n<h3>Chyba p\u0159i navrhov\u00e1n\u00ed sch\u00e9matu<\/h3>\n<p>\nMongoDB nepou\u017e\u00edv\u00e1 sch\u00e9ma. Ale to neznamen\u00e1, \u017ee sch\u00e9ma nen\u00ed pot\u0159eba. Pokud chcete jen ukl\u00e1dat dokumenty bez jak\u00e9hokoli konzistentn\u00edho sch\u00e9matu, jejich ukl\u00e1d\u00e1n\u00ed m\u016f\u017ee b\u00fdt rychl\u00e9 a jednoduch\u00e9, ale jejich pozd\u011bj\u0161\u00ed vyhled\u00e1v\u00e1n\u00ed m\u016f\u017ee b\u00fdt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.compose.com\/articles\/mongodb-with-and-without-schemas\/\">neuv\u011b\u0159iteln\u011b slo\u017eit\u00e9<\/a><\/noindex>. <\/p>\n<p>Klasick\u00fd \u010dl\u00e1nek \"<i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.mongodb.com\/blog\/post\/6-rules-of-thumb-for-mongodb-schema-design-part-1\">6 empirick\u00fdch pravidel pro navrhov\u00e1n\u00ed sch\u00e9mat MongoDB\"<\/a><\/noindex><\/i> stoj\u00ed za to p\u0159e\u010d\u00edst, a takov\u00e9 funkce jako <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/schema-explorer\/\">Schema Explorer<\/a><\/noindex> v extern\u00edm n\u00e1stroji Studio 3T by se m\u011bly pou\u017e\u00edvat pro pravideln\u00e9 kontroly sch\u00e9matu.<\/p>\n<h3>Nezapome\u0148te na po\u0159ad\u00ed t\u0159\u00edd\u011bn\u00ed<\/h3>\n<p>\nZapomenut\u00ed na po\u0159ad\u00ed t\u0159\u00edd\u011bn\u00ed v\u00e1s m\u016f\u017ee nejv\u00edce zklamat a ztratit v\u00edce \u010dasu ne\u017e p\u0159i pou\u017eit\u00ed jak\u00e9koli jin\u00e9 nespr\u00e1vn\u00e9 konfigurace. Ve v\u00fdchoz\u00edm nastaven\u00ed MongoBD pou\u017e\u00edv\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/jira.mongodb.org\/browse\/SERVER-1920\">bin\u00e1rn\u00ed t\u0159\u00edd\u011bn\u00ed<\/a><\/noindex>. Ale m\u00e1lokdo z toho bude m\u00edt prosp\u011bch. Citliv\u00e1 na velikost p\u00edsmen, diakritiku, bin\u00e1rn\u00ed t\u0159\u00edd\u011bn\u00ed byla pova\u017eov\u00e1na za podivn\u00e9 anachronismy vedle kor\u00e1lk\u016f, kaftan\u016f a kroucen\u00fdch kn\u00edr\u016f je\u0161t\u011b v osmdes\u00e1t\u00fdch letech. Nyn\u00ed je jejich pou\u017e\u00edv\u00e1n\u00ed nep\u0159\u00edpustn\u00e9. Ve skute\u010dnosti \"motocykl\" je to sam\u00e9 jako \"Motocykl\". A \"Brit\u00e1nie\" a \"brit\u00e1nie\" jsou stejn\u00e1 m\u00edsta. Mal\u00e9 p\u00edsmeno je prost\u011b velk\u00fdm p\u00edsmenem ve form\u00e1tu mal\u00e9ho p\u00edsmena. A nedonucujte m\u011b mluvit o t\u0159\u00edd\u011bn\u00ed diakritick\u00fdch znak\u016f. P\u0159i vytv\u00e1\u0159en\u00ed datab\u00e1ze v MongoDB pou\u017e\u00edvejte t\u0159\u00eddic\u00ed parametry bez ohledu na diakritiku a <noindex><a rel=\"nofollow\" href=\"https:\/\/weblogs.sqlteam.com\/dang\/archive\/2009\/07\/26\/Collation-Hell-Part-1.aspx\">velikost p\u00edsmen<\/a><\/noindex>, kter\u00e9 odpov\u00eddaj\u00ed jazyku a <noindex><a rel=\"nofollow\" href=\"https:\/\/derickrethans.nl\/mongodb-collation-revised.html\">kultu\u0159e u\u017eivatel\u016f syst\u00e9mu<\/a><\/noindex>. T\u00edm v\u00fdrazn\u011b usnadn\u00edte vyhled\u00e1v\u00e1n\u00ed v textov\u00fdch datech.<\/p>\n<h3>Vytv\u00e1\u0159en\u00ed kolekc\u00ed s velk\u00fdmi dokumenty<\/h3>\n<p>\nMongoDB umo\u017e\u0148uje ukl\u00e1dat velk\u00e9 dokumenty o velikosti a\u017e 16 MB v kolekc\u00edch, a <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/gridfs\/#gridfs\">GridFS<\/a><\/noindex> je ur\u010dena pro velk\u00e9 dokumenty p\u0159esahuj\u00edc\u00ed 16 MB. Ale jen proto, \u017ee je mo\u017en\u00e9 je tam ulo\u017eit, nen\u00ed to nejlep\u0161\u00ed n\u00e1pad. MongoDB bude fungovat nejl\u00e9pe, pokud budete ukl\u00e1dat jednotliv\u00e9 dokumenty o velikosti n\u011bkolika kilobajt\u016f a pova\u017eovat je sp\u00ed\u0161e za \u0159\u00e1dky v \u0161irok\u00e9 SQL tabulce. Velk\u00e9 dokumenty budou zdrojem probl\u00e9m\u016f s <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/mongodb\/comments\/573fqr\/question_mongodb_terrible_performance_for_a\/\">v\u00fdkonu<\/a><\/noindex>.<\/p>\n<h3>Vytv\u00e1\u0159en\u00ed dokument\u016f s velk\u00fdmi poli <\/h3>\n<p>\nDokumenty mohou obsahovat pole. Nejlep\u0161\u00ed je, kdy\u017e po\u010det prvk\u016f v poli je daleko od \u010dty\u0159m\u00edstn\u00e9ho \u010d\u00edsla. Pokud se prvky do pole \u010dasto p\u0159id\u00e1vaj\u00ed, p\u0159ekro\u010d\u00ed obsahuj\u00edc\u00ed dokument a bude nutn\u00e9 jej <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/data-model-operations\/#document-growth\">p\u0159esunout<\/a><\/noindex>, co\u017e znamen\u00e1, \u017ee bude nutn\u00e9 <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/write-performance\/#document-growth\">aktualizovat i indexy<\/a><\/noindex>. P\u0159i op\u011btovn\u00e9m indexov\u00e1n\u00ed dokumentu s velk\u00fdm polem budou indexy \u010dasto p\u0159episov\u00e1ny, proto\u017ee pro ka\u017ed\u00fd prvek existuje <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/index-multikey\/\">z\u00e1znam<\/a><\/noindex>, kter\u00fd uchov\u00e1v\u00e1 jeho index. Takov\u00e9 p\u0159eindexov\u00e1n\u00ed tak\u00e9 nast\u00e1v\u00e1, kdy\u017e je dokument vlo\u017een nebo odstran\u011bn. <\/p>\n<p>V MongoDB existuje takzvan\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/mmapv1\/#record-allocation-strategies\">\u201akoeficient vypln\u011bn\u00ed\u2018<\/a><\/noindex>, kter\u00fd poskytuje prostor pro r\u016fst dokument\u016f, aby se tato problematika minimalizovala. <br \/>\nM\u016f\u017eete si myslet, \u017ee se m\u016f\u017eete obej\u00edt bez indexace pol\u00ed. Bohu\u017eel, absence index\u016f m\u016f\u017ee p\u0159in\u00e9st jin\u00e9 probl\u00e9my. Proto\u017ee dokumenty jsou prohl\u00ed\u017eeny od za\u010d\u00e1tku do konce, hled\u00e1n\u00ed prvk\u016f na konci pole bude trvat v\u00edce \u010dasu, a v\u011bt\u0161ina operac\u00ed souvisej\u00edc\u00edch s takov\u00fdm dokumentem bude <noindex><a rel=\"nofollow\" href=\"http:\/\/grokbase.com\/t\/gg\/mongodb-user\/128r0h5gzw\/inserting-into-300-000-size-embedded-array-is-slow-even-w-o-indexes\">pomal\u00e1<\/a><\/noindex>. <\/p>\n<h3>Nezapome\u0148te, \u017ee po\u0159ad\u00ed f\u00e1z\u00ed v agregaci m\u00e1 sv\u00e9 m\u00edsto<\/h3>\n<p>\nV datab\u00e1zov\u00e9m syst\u00e9mu s optimaliz\u00e1torem dotaz\u016f to, co p\u00ed\u0161ete, je vysv\u011btlen\u00edm toho, co chcete z\u00edskat, ne jak to z\u00edskat. Takov\u00fd mechanismus funguje analogicky k objedn\u00e1vce v restauraci: obvykle si jednodu\u0161e objedn\u00e1te j\u00eddlo, m\u00edsto abyste d\u00e1vali podrobn\u00e9 pokyny kucha\u0159i.<\/p>\n<p>V MongoDB instruujete kucha\u0159e. Nap\u0159\u00edklad je nutn\u00e9 zajistit, aby data pro\u0161la <code>reduce<\/code> co nejd\u0159\u00edve v pipeline pomoc\u00ed <code>$match<\/code> a <code>$project<\/code>, a t\u0159\u00edd\u011bn\u00ed prob\u00edh\u00e1 a\u017e po <code>reduce<\/code>, a co se hled\u00e1n\u00ed d\u011bje p\u0159esn\u011b v po\u0159ad\u00ed, kter\u00e9 pot\u0159ebujete. P\u0159\u00edtomnost optimaliz\u00e1toru dotaz\u016f, kter\u00fd odstra\u0148uje zbyte\u010dnou pr\u00e1ci, optim\u00e1ln\u011b uspo\u0159\u00e1d\u00e1v\u00e1 f\u00e1ze a vyb\u00edr\u00e1 typ p\u0159ipojen\u00ed, v\u00e1s m\u016f\u017ee rozmazlovat. V MongoDB m\u00e1te v\u00edce kontroly na \u00fakor pohodl\u00ed.<\/p>\n<p>Takov\u00e9 n\u00e1stroje jako <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/\">Studio 3T<\/a><\/noindex> usnadn\u00ed tvo\u0159en\u00ed agrega\u010dn\u00edch dotaz\u016f v <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/build-mongodb-aggregation-queries\/\">MongoDB<\/a><\/noindex>. Funkce Aggregation Editor v\u00e1m umo\u017en\u00ed aplikovat oper\u00e1tory potrub\u00ed po jednom kroku, a tak\u00e9 ov\u011b\u0159ovat vstupy a v\u00fdstupy v ka\u017ed\u00e9 f\u00e1zi pro zjednodu\u0161en\u00ed debugov\u00e1n\u00ed. <\/p>\n<h3>Pou\u017eit\u00ed rychl\u00e9ho z\u00e1znamu<\/h3>\n<p>\nNikdy nenastavujte v MongoDB parametry z\u00e1znamu s vysokou rychlost\u00ed, ale n\u00edzkou spolehlivost\u00ed. Tento re\u017eim <i>\u201efile-and-forget\u201c<\/i> se zd\u00e1 rychl\u00fd, proto\u017ee p\u0159\u00edkaz se vr\u00e1t\u00ed je\u0161t\u011b p\u0159ed t\u00edm, ne\u017e se provede z\u00e1znam. Pokud syst\u00e9m sel\u017ee p\u0159edt\u00edm, ne\u017e jsou data zaps\u00e1na na disk, ztrat\u00ed se a dostanou se do nekonzistentn\u00edho stavu. Na\u0161t\u011bst\u00ed v 64bitov\u00e9 verzi MongoDB bylo zavedeno protokolov\u00e1n\u00ed. <\/p>\n<p>\u00dalo\u017en\u00e9 motory MMAPv1 a WiredTiger pou\u017e\u00edvaj\u00ed protokolov\u00e1n\u00ed k prevenci tohoto, i kdy\u017e WiredTiger se m\u016f\u017ee obnovit na posledn\u00ed konzistentn\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/wiredtiger\/#storage-wiredtiger-checkpoints\">kontroln\u00ed bod<\/a><\/noindex>, pokud je protokolov\u00e1n\u00ed vypnut\u00e9.<\/p>\n<p>Protokolov\u00e1n\u00ed zaji\u0161\u0165uje, \u017ee datab\u00e1ze je v konzistentn\u00edm stavu po obnov\u011b a uchov\u00e1v\u00e1 v\u0161echna data do okam\u017eiku z\u00e1znamu v protokolu. Periodicita z\u00e1znam\u016f se nastavuje pomoc\u00ed parametru <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/configuration-options\/#storage.journal.commitIntervalMs\">commitIntervalMs<\/a><\/noindex><\/code>. <\/p>\n<p>Aby bylo zaji\u0161t\u011bno, \u017ee z\u00e1znamy jsou spolehliv\u00e9, ujist\u011bte se, \u017ee v konfigura\u010dn\u00edm souboru je protokolov\u00e1n\u00ed povoleno <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/configuration-options\/#configuration-file\">(storage.journal.enabled<\/a><\/noindex>)<\/code>, a \u017ee periodicita z\u00e1znam\u016f odpov\u00edd\u00e1 mno\u017estv\u00ed informac\u00ed, kter\u00e9 si m\u016f\u017eete dovolit ztratit.<\/p>\n<h3>T\u0159\u00edd\u011bn\u00ed bez indexu<\/h3>\n<p>\nP\u0159i hled\u00e1n\u00ed a agregaci \u010dasto vyvst\u00e1v\u00e1 pot\u0159eba t\u0159\u00eddit data. Doufejme, \u017ee se to d\u011bje na jednom z z\u00e1v\u011bre\u010dn\u00fdch st\u00e1di\u00ed, po filtrov\u00e1n\u00ed v\u00fdsledku za \u00fa\u010delem sn\u00ed\u017een\u00ed objemu t\u0159\u00edd\u011bn\u00fdch dat. A i v takov\u00e9m p\u0159\u00edpad\u011b budete pot\u0159ebovat pro t\u0159\u00edd\u011bn\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/mongodb-index-strategy\/\">index<\/a><\/noindex>. M\u016f\u017eete pou\u017e\u00edt jednoduch\u00fd nebo slo\u017een\u00fd index. <\/p>\n<p>Pokud neexistuje vhodn\u00fd index, MongoDB si porad\u00ed bez n\u011bj. Existuje pam\u011b\u0165ov\u00e9 omezen\u00ed 32 MB na celkovou velikost v\u0161ech dokument\u016f v <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.org\/manual\/reference\/limits\/#Sort-Operations\">operaci t\u0159\u00edd\u011bn\u00ed<\/a><\/noindex>, a pokud MongoDB dos\u00e1hne t\u00e9to hranice, bu\u010f vyhod\u00ed chybu, nebo vr\u00e1t\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/www.sitepoint.com\/7-simple-speed-solutions-mongodb\/\">pr\u00e1zdnou sadu z\u00e1znam\u016f<\/a><\/noindex>.<\/p>\n<h3>Hled\u00e1n\u00ed bez podpory index\u016f<\/h3>\n<p>\nVyhled\u00e1vac\u00ed dotazy pln\u00ed funkci obdobnou operaci JOIN v SQL. Pro lep\u0161\u00ed fungov\u00e1n\u00ed pot\u0159ebuj\u00ed index hodnoty kl\u00ed\u010de, kter\u00fd je pou\u017eit jako ciz\u00ed kl\u00ed\u010d. To nen\u00ed z\u0159ejm\u00e9, proto\u017ee pou\u017eit\u00ed nen\u00ed odr\u00e1\u017eeno v <code>explain()<\/code>. Tyto indexy jsou dopl\u0148kem k indexu zapsan\u00e9mu v <code>explain()<\/code>, kter\u00fd je zase pou\u017e\u00edv\u00e1n oper\u00e1tory pipeline <code>$match<\/code> a <code>$sort<\/code>, kdy\u017e se setk\u00e1vaj\u00ed na za\u010d\u00e1tku pipeline. Indexy nyn\u00ed mohou pokr\u00fdvat jakoukoliv f\u00e1zi <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/aggregation-pipeline\/#aggregation-pipeline-operators-and-performance\">agrega\u010dn\u00ed pipeline<\/a><\/noindex>. <\/p>\n<h3>Vzd\u00e1n\u00ed se pou\u017e\u00edv\u00e1n\u00ed multiaktualizac\u00ed<\/h3>\n<p>\nMetoda <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/\">db.collection.update()<\/a><\/noindex><\/code> se vyu\u017e\u00edv\u00e1 k \u00faprav\u011b \u010d\u00e1sti existuj\u00edc\u00edho dokumentu nebo cel\u00e9ho dokumentu, a\u017e po \u00faplnou n\u00e1hradu v z\u00e1vislosti na parametru, kter\u00fd jste nastavili <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/#update-parameter\">update<\/a><\/noindex><\/code>. Nen\u00ed tak z\u0159ejm\u00e9, \u017ee nezpracov\u00e1v\u00e1 v\u0161echny dokumenty ve sb\u00edrce, dokud nenastav\u00edte parametr <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/#multi-parameter\">v\u00edce<\/a><\/noindex><\/code> pro aktualizaci v\u0161ech dokument\u016f spl\u0148uj\u00edc\u00edch krit\u00e9ria dotazu.<\/p>\n<h3>Nezapom\u00ednejte na d\u016fle\u017eitost po\u0159ad\u00ed kl\u00ed\u010d\u016f v hash tabulce<\/h3>\n<p>\nV JSONu je objekt slo\u017een z neuspo\u0159\u00e1dan\u00e9 kolekce o velikosti nula nebo v\u00edce p\u00e1r\u016f jm\u00e9no\/hodnota, kde jm\u00e9no je \u0159et\u011bzec a hodnota je \u0159et\u011bzec, \u010d\u00edslo, logick\u00e1 hodnota, nula, objekt nebo pole.<\/p>\n<p>Bohu\u017eel, BSON klade velk\u00fd d\u016fraz na po\u0159ad\u00ed p\u0159i hled\u00e1n\u00ed. V MongoDB m\u00e1 po\u0159ad\u00ed kl\u00ed\u010d\u016f uvnit\u0159 vlo\u017een\u00fdch objekt\u016f <noindex><a rel=\"nofollow\" href=\"http:\/\/devblog.me\/wtf-mongo\">v\u00fdznam<\/a><\/noindex>, tj. <code>{ firstname: \"Phil\", surname: \"factor\" }<\/code> \u2013 to nen\u00ed tot\u00e9\u017e, co <code>{ { surname: \"factor\", firstname: \"Phil\" }<\/code>. To znamen\u00e1, \u017ee mus\u00edte v dokumentech uchov\u00e1vat po\u0159ad\u00ed p\u00e1r\u016f jm\u00e9no\/hodnota, pokud chcete m\u00edt jistotu, \u017ee je najdete.<\/p>\n<h3>Neple\u0165te si <i>\"null\"<\/i> a <i>\"undefined\"<\/i><\/h3>\n<p>\nHodnota <i>\"undefined\"<\/i> nikdy nebyly platn\u00e9 v JSON, podle <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ecma-international.org\/publications\/files\/ECMA-ST\/ECMA-404.pdf\">ofici\u00e1ln\u00edho standardu<\/a><\/noindex> JSON (ECMA-404, \u010c\u00e1st 5), i kdy\u017e je pou\u017e\u00edv\u00e1n v JavaScriptu. Nav\u00edc, pro BSON je to zastaral\u00e9 a p\u0159ev\u00e1d\u00ed se na <code>$null<\/code>, co\u017e nen\u00ed v\u017edy dobr\u00e9 \u0159e\u0161en\u00ed. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/meteor\/meteor\/issues\/1646#issuecomment-29682964\">Vyhn\u011bte se pou\u017e\u00edv\u00e1n\u00ed <i>\"undefined\"<\/i> v MongoDB<\/a><\/noindex>.<\/p>\n<h3>Pou\u017eit\u00ed <code>$limit()<\/code> bez <code>$sort()<\/code><\/h3>\n<p>\nVelmi \u010dasto, kdy\u017e vyv\u00edj\u00edte v MongoDB, je u\u017eite\u010dn\u00e9 prost\u011b vid\u011bt uk\u00e1zku v\u00fdsledku, kter\u00fd se vr\u00e1t\u00ed z dotazu nebo agregace. Pro tento \u00fakol se v\u00e1m hod\u00ed <code>$limit()<\/code>, ale nikdy by to nem\u011blo b\u00fdt ve fin\u00e1ln\u00ed verzi k\u00f3du, pokud p\u0159ed n\u00edm nepou\u017e\u00edv\u00e1te <code>$sort<\/code>. Tato mechanika je pot\u0159ebn\u00e1, proto\u017ee jinak nem\u016f\u017eete zaru\u010dit po\u0159ad\u00ed v\u00fdsledk\u016f a nebudete moci spolehliv\u011b prohl\u00ed\u017eet data. V horn\u00ed \u010d\u00e1sti v\u00fdsledku budete dost\u00e1vat r\u016fzn\u00e9 z\u00e1znamy v z\u00e1vislosti na t\u0159\u00edd\u011bn\u00ed. Aby bylo zaji\u0161t\u011bno spolehliv\u00e9 fungov\u00e1n\u00ed, mus\u00ed b\u00fdt dotazy a agregace deterministick\u00e9, tedy mus\u00ed p\u0159in\u00e1\u0161et stejn\u00e9 v\u00fdsledky p\u0159i ka\u017ed\u00e9m proveden\u00ed. K\u00f3d, ve kter\u00e9m je <code>$limit()<\/code>, ale nen\u00ed <code>$sort<\/code>, nebude deterministick\u00fd a m\u016f\u017ee pozd\u011bji vyvolat chyby, kter\u00e9 budou obt\u00ed\u017en\u00e9 sledovat.<\/p>\n<h3>Z\u00e1v\u011br<\/h3>\n<p>\nJedn\u00edm z m\u00e1la zp\u016fsob\u016f, jak se zklamat v MongoDB, je porovn\u00e1vat ji p\u0159\u00edmo s jin\u00fdm typem datab\u00e1z\u00ed, jako je RDBMS, nebo se k jej\u00edmu pou\u017eit\u00ed dostat s n\u011bjak\u00fdmi p\u0159edem stanoven\u00fdmi o\u010dek\u00e1v\u00e1n\u00edmi. Je to jako porovn\u00e1vat pomeran\u010d s vidlic\u00ed. Datab\u00e1zov\u00e9 syst\u00e9my sleduj\u00ed ur\u010dit\u00e9 c\u00edle. Nejlep\u0161\u00ed je jednodu\u0161e pochopit a ocenit tyto rozd\u00edly. Bylo by \u0161koda tla\u010dit na v\u00fdvoj\u00e1\u0159e MongoDB kv\u016fli cest\u011b, kterou byli nuceni j\u00edt sm\u011brem k RDBMS. R\u00e1d bych vid\u011bl nov\u00e9 a zaj\u00edmav\u00e9 zp\u016fsoby \u0159e\u0161en\u00ed star\u00fdch probl\u00e9m\u016f, jako je zaji\u0161t\u011bn\u00ed integrity dat a vytv\u00e1\u0159en\u00ed syst\u00e9m\u016f dat odoln\u00fdch v\u016f\u010di poruch\u00e1m a \u00fatok\u016fm hacker\u016f.<\/p>\n<p>Implementace ACID transak\u010dnosti v MongoDB verze 4.0 je dobr\u00fdm p\u0159\u00edkladem zaveden\u00ed d\u016fle\u017eit\u00fdch vylep\u0161en\u00ed inovativn\u00edm zp\u016fsobem. Multidokumentov\u00e9 a multioper\u00e1torov\u00e9 transakce jsou nyn\u00ed atom\u00e1rn\u00ed. Tak\u00e9 se objevila mo\u017enost regulovat \u010das pot\u0159ebn\u00fd k z\u00edsk\u00e1n\u00ed z\u00e1mk\u016f a ukon\u010dovat vis\u00edc\u00ed transakce, stejn\u011b jako m\u011bnit \u00farove\u0148 izolace.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/ZRL1\/\"><img decoding=\"async\" alt=\"14 v\u011bc\u00ed, kter\u00e9 bych cht\u011bl v\u011bd\u011bt p\u0159ed za\u010d\u00e1tkem pr\u00e1ce s MongoDB\" src=\"\/wp-content\/uploads\/2020\/09\/9966ff2613efab52aac99c2a0eda5c87.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h3>\u010c\u00edst v\u00edc:<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519340\/\">Jak na\u010d\u00edst data do Google BigQuery<\/a><\/noindex><\/li>\n<\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/520412\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b: \u041a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432 MongoDB \u043e\u043d\u0430 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0435\u0439 \u0441\u0445\u0435\u043c\u0435 \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 MongoDB, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438. \u0412 MongoDB [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95149,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95148","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=\"description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb.\" \/>\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\/cs\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\udd4714 \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0437\u043d\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 MongoDB | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb\" \/>\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-09-25T17:43:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-25T17:43: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\udd4714 v\u011bc\u00ed, kter\u00e9 bych cht\u011bl v\u011bd\u011bt p\u0159ed za\u010d\u00e1tkem pr\u00e1ce s MongoDB | ProHoster","description":"P\u0159eklad \u010dl\u00e1nku byl p\u0159ipraven v p\u0159edstihu p\u0159ed zah\u00e1jen\u00edm kurzu \u201eNerela\u010dn\u00ed datab\u00e1ze\u201c.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\udd4714 \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0437\u043d\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 MongoDB | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","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-09-25T17:43:09+00:00","article:modified_time":"2020-09-25T17:43:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95148","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 11:11:32","updated":"2022-10-03 07:39:33","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/95148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=95148"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/95148\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/95149"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=95148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=95148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=95148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}