{"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\/it\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","title":{"rendered":"14 cose che avrei voluto sapere prima di iniziare a lavorare con MongoDB","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>La traduzione dell'articolo \u00e8 stata preparata in vista dell'inizio del corso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/ZRL1\/\">\u00abDatabase non relazionali\u00bb<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"14 cose che avrei voluto sapere prima di iniziare a lavorare con MongoDB\" src=\"\/wp-content\/uploads\/2020\/09\/9b4979be27e0090543b28150d90fa8df.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Punti chiave:<\/p>\n<ul>\n<li>\u00c8 fondamentale sviluppare uno schema anche se in MongoDB non \u00e8 obbligatorio.<\/li>\n<li>Allo stesso modo, gli indici devono corrispondere al tuo schema e ai modelli di accesso. <\/li>\n<li>Evita di utilizzare oggetti grandi e array di grandi dimensioni.<\/li>\n<li>Fai attenzione alle impostazioni di MongoDB, soprattutto per quanto riguarda la sicurezza e l'affidabilit\u00e0.<\/li>\n<li>In MongoDB non esiste un ottimizzatore di query, quindi devi fare attenzione quando esegui operazioni di richiesta.<\/li>\n<\/ul>\n<p>\nLavoro con i database da molto tempo, ma ho appena scoperto MongoDB. Ci sono alcune cose che avrei voluto sapere prima di iniziare a usarlo. Quando una persona ha gi\u00e0 esperienza in un certo campo, ha preconcetti su cosa siano i database e cosa facciano. Nella speranza di semplificare la comprensione per gli altri, presento un elenco degli errori comuni.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Creare un server MongoDB senza autenticazione<\/h3>\n<p>\nSfortunatamente, MongoDB viene installato per impostazione predefinita senza autenticazione. Per una workstation accessibile localmente, questa pratica \u00e8 normale. Tuttavia, poich\u00e9 MongoDB \u00e8 un sistema multiutente che tende a utilizzare grandi quantit\u00e0 di memoria, \u00e8 meglio installarlo su un server con la massima quantit\u00e0 di RAM possibile per le vostre esigenze, anche se intendete utilizzarlo solo per lo sviluppo. L'installazione su un server tramite la porta predefinita pu\u00f2 risultare problematica, specialmente se \u00e8 possibile eseguire qualsiasi codice JavaScript nella richiesta (ad esempio, <code>$where<\/code> come idea per <noindex><a rel=\"nofollow\" href=\"https:\/\/lockmedown.com\/securing-node-js-mongodb-security-injection-attacks\/\">iniezione<\/a><\/noindex>). <\/p>\n<p>Esistono diversi metodi di autenticazione, ma il pi\u00f9 semplice \u00e8 impostare un ID\/password per l'utente. Seguite questa idea mentre riflettete su un'autenticazione pi\u00f9 elaborata basata su <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/security-ldap-external\/\">LDAP<\/a><\/noindex>. Per quanto riguarda la sicurezza, MongoDB deve essere sempre aggiornato e i log devono sempre essere controllati per accessi non autorizzati. A me, per esempio, piace scegliere una porta diversa come porta predefinita.<\/p>\n<h3>Non dimenticate di legare la superficie di attacco a MongoDB<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/administration\/security-checklist\/\">Checklist per la sicurezza di MongoDB<\/a><\/noindex> contiene ottimi consigli per ridurre il rischio di infiltrazioni e perdite di dati. \u00c8 facile ignorare la questione e affermare che un server di sviluppo non ha bisogno di un alto livello di sicurezza. Tuttavia, la situazione \u00e8 pi\u00f9 complessa e ci\u00f2 vale per tutti i server MongoDB. In particolare, se non ci sono motivi validi per utilizzare <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\">gruppo<\/a><\/noindex><\/code> o <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/query\/where\/#op._S_where\">$where<\/a><\/noindex>, \u00e8 necessario disabilitare l'uso di codice arbitrario in JavaScript, modificando il file di configurazione <code><noindex><a rel=\"nofollow\" href=\"https:\/\/lockmedown.com\/securing-node-js-mongodb-security-injection-attacks\/\">javascriptEnabled:false<\/a><\/noindex><\/code>. Poich\u00e9 nei file di dati standard di MongoDB non \u00e8 presente la crittografia, \u00e8 ragionevole eseguire MongoDB con <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/administration\/security-checklist\/#run-mongodb-with-a-dedicated-user\">Utente dedicato<\/a><\/noindex>, che ha accesso completo ai file, con accesso limitato solo per lui e la possibilit\u00e0 di utilizzare i propri strumenti di gestione degli accessi ai file del sistema operativo.<\/p>\n<h3>Errore nella progettazione dello schema<\/h3>\n<p>\nMongoDB non utilizza uno schema. Ma questo non significa che uno schema non sia necessario. Se desideri semplicemente memorizzare documenti senza uno schema coerente, puoi farlo in modo rapido e semplice, ma estrarli poi pu\u00f2 essere <noindex><a rel=\"nofollow\" href=\"https:\/\/www.compose.com\/articles\/mongodb-with-and-without-schemas\/\">davvero complicato<\/a><\/noindex>. <\/p>\n<p>L'articolo classico \"<i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.mongodb.com\/blog\/post\/6-rules-of-thumb-for-mongodb-schema-design-part-1\">6 regole empiriche per la progettazione di schemi MongoDB\"<\/a><\/noindex><\/i> merita di essere letto, cos\u00ec come funzionalit\u00e0 come <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/schema-explorer\/\">Schema Explorer<\/a><\/noindex> Nello strumento esterno Studio 3T, \u00e8 utile eseguire controlli regolari sullo schema.<\/p>\n<h3>Non dimenticare l'ordine di ordinamento<\/h3>\n<p>\nDimenticare l'ordine di ordinamento pu\u00f2 portare alla massima frustrazione e farti perdere pi\u00f9 tempo rispetto all'utilizzo di qualsiasi altra configurazione errata. Per impostazione predefinita, MongoDB utilizza <noindex><a rel=\"nofollow\" href=\"https:\/\/jira.mongodb.org\/browse\/SERVER-1920\">l'ordinamento binario<\/a><\/noindex>. Ma difficilmente sar\u00e0 utile a qualcuno. Gli ordinamenti sensibili al maiuscolo, agli accenti e binari sono stati considerati curiosi anacronismi, accanto a perline, kaftani e baffi arricciati negli anni '80 dello scorso secolo. Ora, il loro utilizzo \u00e8 inaccettabile. Nella vita reale, \"moto\" \u00e8 lo stesso di \"Moto\". E \"Gran Bretagna\" e \"gran bretagna\" si riferiscono allo stesso posto. La lettera minuscola \u00e8 semplicemente l'equivalente maiuscolo. E non farmi parlare dell'ordinamento dei caratteri diacritici. Quando crei un database in MongoDB, utilizza parametri di ordinamento che non tengano conto degli accenti e <noindex><a rel=\"nofollow\" href=\"https:\/\/weblogs.sqlteam.com\/dang\/archive\/2009\/07\/26\/Collation-Hell-Part-1.aspx\">della registrazione<\/a><\/noindex>, che corrispondono alla lingua e <noindex><a rel=\"nofollow\" href=\"https:\/\/derickrethans.nl\/mongodb-collation-revised.html\">cultura degli utenti del sistema<\/a><\/noindex>. In questo modo semplifichi notevolmente la ricerca nei dati testuali.<\/p>\n<h3>Creazione di collezioni con documenti di grandi dimensioni<\/h3>\n<p>\nMongoDB \u00e8 felice di ospitare documenti di grandi dimensioni fino a 16 MB nelle collezioni, ma <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/gridfs\/#gridfs\">GridFS<\/a><\/noindex> \u00e8 progettata per documenti che superano i 16 MB. Tuttavia, solo perch\u00e9 \u00e8 possibile ospitare grandi documenti l\u00ec, non \u00e8 l'idea migliore conservarli in quel modo. MongoDB funziona al meglio se si salvano documenti separati di dimensioni in kilobyte, trattandoli pi\u00f9 come righe in una tabella SQL ampia. I documenti di grandi dimensioni possono causare problemi di <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/mongodb\/comments\/573fqr\/question_mongodb_terrible_performance_for_a\/\">prestazioni<\/a><\/noindex>.<\/p>\n<h3>Creare documenti con grandi array <\/h3>\n<p>\nI documenti possono contenere array. \u00c8 meglio se il numero di elementi nell'array \u00e8 lontano da un numero a quattro cifre. Se gli elementi vengono aggiunti frequentemente all'array, esso superer\u00e0 il documento che lo contiene e dovr\u00e0 essere <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/data-model-operations\/#document-growth\">spostato<\/a><\/noindex>, il che significa che dovranno essere <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/write-performance\/#document-growth\">aggiornati anche gli indici<\/a><\/noindex>. Durante la reindicizzazione di un documento con un grande array, gli indici spesso vengono riscritti, poich\u00e9 esiste una <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/index-multikey\/\">voce<\/a><\/noindex>, che memorizza il suo indice. Questa reindicizzazione avviene anche quando un documento viene inserito o rimosso. <\/p>\n<p>In MongoDB esiste quello che viene chiamato il <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/mmapv1\/#record-allocation-strategies\">\u00abcoefficiente di riempimento\u00bb<\/a><\/noindex>, che fornisce spazio per la crescita dei documenti, per ridurre al minimo questo problema. <br \/>\nPotresti pensare di poter fare a meno dell'indicizzazione degli array. Purtroppo, l'assenza di indici pu\u00f2 portare ad altri problemi. Poich\u00e9 i documenti vengono visualizzati dall'inizio alla fine, la ricerca di elementi alla fine dell'array richieder\u00e0 pi\u00f9 tempo, e la maggior parte delle operazioni associate a tale documento risulter\u00e0 <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\">lenta<\/a><\/noindex>. <\/p>\n<h3>Ricorda che l'ordine delle fasi nell'aggregazione \u00e8 importante.<\/h3>\n<p>\nIn un sistema di database con un ottimizzatore delle query, le query che scrivi sono spiegazioni di ci\u00f2 che desideri ottenere, non di come ottenerlo. Funziona in modo simile a un ordine al ristorante: di solito ordini semplicemente un piatto, senza dare istruzioni dettagliate allo chef.<\/p>\n<p>In MongoDB dai istruzioni allo chef. Ad esempio, devi assicurarti che i dati passino attraverso <code>reduce<\/code> il prima possibile nel pipeline utilizzando <code>$match<\/code> e <code>$project<\/code>, mentre l'ordinamento avviene solo dopo <code>reduce<\/code>, e che la ricerca avviene esattamente nell'ordine di cui hai bisogno. Avere un ottimizzatore di query che elimina il lavoro superfluo, ordina in modo ottimale le fasi e seleziona il tipo di connessione, pu\u00f2 viziarti. In MongoDB hai maggiore controllo a scapito della comodit\u00e0.<\/p>\n<p>Strumenti come <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/\">Studio 3T<\/a><\/noindex> semplificheranno la costruzione di query di aggregazione in <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/build-mongodb-aggregation-queries\/\">MongoDB<\/a><\/noindex>. La funzione Aggregation Editor ti permetter\u00e0 di applicare gli operatori di pipeline uno stadio alla volta, nonch\u00e9 di controllare i dati di input e output in ogni fase per semplificare il debug. <\/p>\n<h3>Utilizzo della scrittura rapida<\/h3>\n<p>\nNon impostare mai in MongoDB parametri di scrittura ad alta velocit\u00e0, ma con bassa affidabilit\u00e0. Questa modalit\u00e0 <i>\u00abfile-and-forget\u00bb<\/i> sembra veloce, poich\u00e9 il comando restituisce prima che avvenga la scrittura. Se il sistema si arresta prima che i dati vengano scritti su disco, andranno persi e si troveranno in uno stato incoerente. Fortunatamente, nel MongoDB a 64 bit \u00e8 attivato il logging. <\/p>\n<p>I motori di archiviazione MMAPv1 e WiredTiger utilizzano il logging per prevenire ci\u00f2, sebbene WiredTiger possa riprendersi fino all'ultimo <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/wiredtiger\/#storage-wiredtiger-checkpoints\">punto di controllo coerente.<\/a><\/noindex>, se la registrazione \u00e8 disabilitata.<\/p>\n<p>La registrazione garantisce che il database rimanga in uno stato coerente dopo il recupero e conserva tutti i dati fino al momento della registrazione. La frequenza delle registrazioni pu\u00f2 essere configurata tramite l'opzione <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/configuration-options\/#storage.journal.commitIntervalMs\">commitIntervalMs<\/a><\/noindex><\/code>. <\/p>\n<p>Per essere certi delle registrazioni, assicurati che nel file di configurazione la registrazione sia attivata <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/configuration-options\/#configuration-file\">(storage.journal.enabled<\/a><\/noindex>)<\/code>, e che la frequenza delle registrazioni corrisponda alla quantit\u00e0 di informazioni che puoi permetterti di perdere.<\/p>\n<h3>Ordinamento senza indice<\/h3>\n<p>\nDurante la ricerca e l'aggregazione, spesso sorge la necessit\u00e0 di ordinare i dati. Speriamo che ci\u00f2 avvenga in uno degli ultimi passaggi, dopo aver filtrato i risultati per ridurre la quantit\u00e0 di dati da ordinare. Anche in tal caso, avrai bisogno di <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/mongodb-index-strategy\/\">indice<\/a><\/noindex>. Puoi utilizzare un indice singolo o composito. <\/p>\n<p>Se non \u00e8 disponibile un indice adeguato, MongoDB proceder\u00e0 senza uno. Esiste un limite di memoria di 32 MB sulla dimensione totale di tutti i documenti nella <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.org\/manual\/reference\/limits\/#Sort-Operations\">operazione di ordinamento<\/a><\/noindex>, e se MongoDB raggiunge questo limite, restituir\u00e0 un errore oppure <noindex><a rel=\"nofollow\" href=\"https:\/\/www.sitepoint.com\/7-simple-speed-solutions-mongodb\/\">un insieme di registrazioni vuote<\/a><\/noindex>.<\/p>\n<h3>Ricerca senza supporto per indici<\/h3>\n<p>\nLe query di ricerca svolgono una funzione simile all'operazione JOIN in SQL. Per una migliore funzionalit\u00e0, necessitano di un indice del valore della chiave utilizzato come chiave esterna. Questo non \u00e8 ovvio, poich\u00e9 l'uso non \u00e8 riflesso in <code>explain()<\/code>. Questi indici sono un complemento all'indice registrato in <code>explain()<\/code>, che a sua volta \u00e8 utilizzato dagli operatori di pipeline <code>$match<\/code> e <code>$sort<\/code>, quando si trovano all'inizio della pipeline. Gli indici ora possono coprire qualsiasi fase <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/aggregation-pipeline\/#aggregation-pipeline-operators-and-performance\">della pipeline di aggregazione.<\/a><\/noindex>. <\/p>\n<h3>L'abbandono dell'uso dei multi-update<\/h3>\n<p>\nMetodo <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/\">db.collection.update()<\/a><\/noindex><\/code> \u00e8 utilizzato per modificare parte di un documento esistente o l'intero documento, fino alla sostituzione completa a seconda del parametro specificato. <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/#update-parameter\">update<\/a><\/noindex><\/code>Non \u00e8 cos\u00ec ovvio che non elaborer\u00e0 tutti i documenti nella collezione, a meno che non impostiate il parametro <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/#multi-parameter\">multi<\/a><\/noindex><\/code> per aggiornare tutti i documenti che soddisfano i criteri di ricerca.<\/p>\n<h3>Non dimenticate l'importanza dell'ordine delle chiavi nella hash table.<\/h3>\n<p>\nIn JSON, un oggetto consiste in una collezione non ordinata di zero o pi\u00f9 coppie chiave\/valore, dove la chiave \u00e8 una stringa e il valore \u00e8 una stringa, un numero, un valore booleano, zero, un oggetto o un array.<\/p>\n<p>Purtroppo, BSON attribuisce grande importanza all'ordine nella ricerca. In MongoDB, l'ordine delle chiavi all'interno degli oggetti incorporati <noindex><a rel=\"nofollow\" href=\"http:\/\/devblog.me\/wtf-mongo\">ha importanza<\/a><\/noindex>, cio\u00e8. <code>{ firstname: &quot;Phil&quot;, surname: &quot;factor&quot; }<\/code> \u2013 non \u00e8 la stessa cosa di <code>{ { surname: &quot;factor&quot;, firstname: &quot;Phil&quot; }<\/code>. Cio\u00e8, devi mantenere negli documenti l'ordine delle coppie chiave\/valore se vuoi essere sicuro di trovarle.<\/p>\n<h3>Non confondere <i>\u00abnull\u00bb<\/i> e <i>\u00abundefined\u00bb<\/i><\/h3>\n<p>\nSignificato <i>\u00abundefined\u00bb<\/i> non \u00e8 mai stato valido in JSON, secondo <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ecma-international.org\/publications\/files\/ECMA-ST\/ECMA-404.pdf\">lo standard ufficiale<\/a><\/noindex> JSON (ECMA-404, Sezione 5), anche se viene utilizzato in JavaScript. Inoltre, per BSON \u00e8 obsoleto e viene convertito in <code>$null<\/code>, che non \u00e8 sempre una buona soluzione. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/meteor\/meteor\/issues\/1646#issuecomment-29682964\">Evita di usare <i>\u00abundefined\u00bb<\/i> in MongoDB<\/a><\/noindex>.<\/p>\n<h3>L'utilizzo di <code>$limit()<\/code> di <code>$sort()<\/code><\/h3>\n<p>\nSpesso, quando sviluppi in MongoDB, \u00e8 utile vedere semplicemente un esempio del risultato che verr\u00e0 restituito dalla query o dall'aggregazione. Per questo compito, ti sar\u00e0 utile <code>$limit()<\/code>, ma non dovrebbe mai essere presente nella versione finale del codice, a meno che non venga utilizzato prima di esso. <code>$sort<\/code>. Questa meccanica \u00e8 necessaria, poich\u00e9 altrimenti non puoi garantire l'ordine dei risultati e non potrai visualizzare i dati in modo affidabile. Nella parte superiore dei risultati, otterrai voci diverse a seconda dell'ordinamento. Per un funzionamento affidabile, le query e le aggregazioni devono essere determinate, cio\u00e8 devono restituire risultati identici a ogni esecuzione. Il codice che presenta <code>$limit()<\/code>, ma non <code>$sort<\/code>, non sar\u00e0 considerato determinato e potrebbe successivamente causare errori difficili da rintracciare.<\/p>\n<h3>Conclusione<\/h3>\n<p>\nL'unico modo per frustrarsi con MongoDB \u00e8 confrontarlo direttamente con un altro tipo di database, come i DBMS, o avvicinarsi al suo utilizzo con aspettative specifiche. \u00c8 come paragonare un'arancia a una forchetta. I sistemi di database hanno obiettivi specifici. \u00c8 meglio comprendere e valutare queste differenze per conto proprio. Sarebbe un peccato mettere pressione agli sviluppatori di MongoDB per la strada che sono stati costretti a intraprendere nel mondo dei DBMS. Vorrei vedere nuovi e interessanti modi per affrontare vecchi problemi, come garantire l'integrit\u00e0 dei dati e creare sistemi di dati resilienti a guasti e attacchi malevoli.<\/p>\n<p>L'introduzione della transazionalit\u00e0 ACID in MongoDB nella versione 4.0 \u00e8 un buon esempio di come implementare importanti miglioramenti in modo innovativo. Le transazioni multi-documento e multi-operazione ora sono atomiche. \u00c8 stata anche introdotta la capacit\u00e0 di regolare il tempo necessario per acquisire i lock e terminare le transazioni bloccate, oltre a modificare il livello di isolamento.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/ZRL1\/\"><img decoding=\"async\" alt=\"14 cose che avrei voluto sapere prima di iniziare a lavorare con MongoDB\" src=\"\/wp-content\/uploads\/2020\/09\/9966ff2613efab52aac99c2a0eda5c87.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h3>Leggi di pi\u00f9:<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519340\/\">Come caricare dati in Google BigQuery<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <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 4.9.10 - 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. \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\" \/>\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\/it\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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 cose che vorrei sapere prima di iniziare a lavorare con MongoDB | ProHoster","description":"La traduzione dell'articolo \u00e8 stata preparata in vista dell'inizio del corso \"Database non relazionali\". Punti principali: \u00c8 estremamente importante sviluppare uno schema anche se in MongoDB non \u00e8 obbligatorio. Allo stesso modo, gli indici devono corrispondere al proprio schema e ai modelli di accesso. Evitare l'uso di oggetti grandi e array di grandi dimensioni. Fare attenzione alle impostazioni di MongoDB, soprattutto quando si tratta di sicurezza e affidabilit\u00e0.","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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. \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","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/95148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=95148"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/95148\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/95149"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=95148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=95148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=95148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}