A fejlett adatfeldolgozás kezelése a MongoDB összesítési keretrendszerével

A MongoDB hosszú utat tett meg. Annak ellenére, hogy sok NoSQL adatbázis létezik, a MongoDB az első adatbázis, amely eszembe jut, amikor NoSQL adatbázisokról beszélünk.

Bár mindig volt egy kis hőség az SQL-t kedvelők és a NoSQL-t kedvelők között, az az igazság, hogy az olyan adatbázisok, mint a MongoDB, más problémát oldanak meg.

És valóban hasznosak lehetnek strukturálatlan adatok átadásakor, ahol az adatok alakjának gyors és hatékony manipulálása (és releváns tudássá alakítása) hasznosabb, mint a régi iskolai SQL adatbázisok által nyújtott sziklaszilárd teljesítmény.

A MongoDB egy hatékony keretrendszerrel rendelkezik ennek megvalósításához - vagyis az adatok közvetlenül a szerverre történő manipulálásához: az Aggregation Framework-hez. Menjünk bele, és fedezzünk fel néhány gyors pontot róla, mi ez, és miért fontos.

Mi az összesítési keretrendszer?

Az összesítési keretrendszer csak egy módszer a MongoDB-ben lévő gyűjtemény dokumentumai lekérdezésére. Ez a keretrendszer azért létezik, mert amikor elkezdi kezelni és kezelni az adatokat, akkor gyakran össze kell gyűrni a gyűjteményeket, módosítani kell őket, mezőket kitépni, mezőket átnevezni, összefűzni, dokumentumokat mezők szerint csoportosítani, mezők tömbjét fel kell robbantani különböző dokumentumokban stb. .

Ezt nem tudja megtenni a hagyományos lekérdező rendszer, amelyhez a MongoDB tartozik (vagyis a keresési vagy frissítési lekérdezés, vagy bármely más, esetleg használt lekérdezés).

A MongoDB-ben beállított egyszerű lekérdezés csak az egyes dokumentumok teljes vagy részleges letöltését teszi lehetővé. Nem igazán engedik meg, hogy manipulálja a dokumentumokat a szerveren, majd visszaküldje azokat az alkalmazásba.

Itt jön be a MongoDB összesítési keretrendszere. Ez semmi külső, mivel az összesítés a MongoDB-be kerül. Megtanulhat dolgozni a MongoDB összesítő keretrendszerével az általam készített ingyenes YouTube lejátszási lista használatával.

Csővezeték

Az összesítési keretrendszer a csővezeték koncepciójára támaszkodik. Lássunk egy képet, amely jobban megmagyarázza:

Itt, mint láthatja, felveszünk egy gyűjteményt, és átengedjük egy csővezetéken. Ez a folyamat bizonyos szakaszokból áll, ahol bizonyos operátorok különböző technikák segítségével módosítják a gyűjtemény dokumentumait. Végül a kimenet visszatér a lekérdezést meghívó alkalmazáshoz.

Hasonlítsa össze egy egyszerű lekérdezéssel, például a kereséssel. Persze, a legtöbb módon működik, de nem igazán hasznos, ha az adatokat is módosítani szeretné visszakeresés közben.

Vagy be kell szereznie a dokumentumokat, és ennek megfelelően módosítania kell őket a kiszolgálón lévő alkalmazásban, vagy rosszabb esetben elküldi őket az ügyfélnek, és hagyja, hogy a kezelői kód módosítsa az Ön számára.

Mindkét esetben pazarolja az erőforrásokat és a sávszélességet. Így az összesítő keretrendszer szépen kezeli ezt a problémát. Lássuk, hogyan működik ez az operátorokkal.

Csővezeték-üzemeltetők

A MongoDB-ben a vezeték különféle operátorokból álló tömb, amely egy csomó dokumentumot vesz be és a programozó által meghatározott szabályok szerint kiköpi a módosított dokumentumokat. A következő operátor átveszi az előző operátor által kiköpött dokumentumokat, ezért pipeline-nek hívják.

Sok operátorod lehet egy folyamatban, és ezek az operátorok is megismételhetők, ellentétben a szokásos MongoDB lekérdezésekkel.

Vessünk egy pillantást néhány általános vezeték üzemeltetőre a MongoDB-ben.

$ csoport

Ez az operátor lehetővé teszi, hogy egy csomó dokumentumot csoportosítson egy bizonyos mező alapján a dokumentumokban. Használható a dokumentumok különböző mezőinek összevonására is.

Nagy híve vagyok annak a mondásnak, hogy egy kép 1000 szót ér. Egy videó megér 1000 képet (nos, technikailag sokkal több képet, de rendben van), szóval nézzünk meg egy gyors videót erről:

$ egyezés

A meccsvezeték-üzemeltető nagyon hasonlóan működik, mint a szokásos keresési operátor. A jó azonban ebben az, hogy többször is használható, mert folyamatban lévő környezetben van! Ez teszi erőteljesé.

Lássuk, hogyan használják egy gyűjteményen:

$ limit

A $ skip pipeline operátor kihagyja az első N dokumentumot, és a többi dokumentumot átadja a következő operátornak. Lássunk egy gyors példát:

$ kihagy

A $ skip pipeline operátor kihagyja az első N dokumentumot, és a többi dokumentumot átadja a következő operátornak. Lássunk egy gyors példát:

$ lazíts

Ez az üzemeltető személy szerint a kedvencem. A $ unfind befog egy tömbmezőt, és több N aldokumentumra bontja, az i-edik dokumentum a tömb i-edik adott értékét tartalmazza a mezőnév értékeként.

Más operátorokkal, például a $ group és a $ match kombinációval ez nagyon hatékonyá válik az adatfeldolgozás szempontjából. Zavarosnak hangzik? Nézzünk meg egy egyszerű példát:

$ projekt

A projekt üzemeltetője lehetővé teszi, hogy minden dokumentumból kivágjon egy csomó mezőt, és a többit eldobja. Nem csak ezt, de átnevezheti a pengetett mezőket, összefűzheti a húrokat, kiveheti az alszövegeket és még sok minden mást!

Nézzük meg, hogyan működik ez dióhéjban:

Az Aggregation Framework használatának legjobb gyakorlatai

Nagy hatalommal jár a nagy felelősség. Könnyen kihasználhatja az összesítő keretrendszert egyszerű lekérdezésekhez is, ezért fontos megbizonyosodnia arról, hogy nem rossz adatbázis-lekérdezéseket ír.

Először tartsa szem előtt a következő szempontokat:

  1. A MongoDB elutasít minden olyan operátort, amely több mint 100 MB RAM-ot igényel, és hibát dob. Győződjön meg róla, hogy a lehető leghamarabb vágja le adatait, mivel egyetlen kezelőnek nem szabad 100 MB-nál nagyobb memóriát foglalnia.
  2. A rend számít! A $ match első helyezésével csökkenthető a továbbiakban továbbított dokumentumok száma. A $ project következő helyezése tovább csökkenti az egyes dokumentumok méretét azáltal, hogy megszabadul a mezőktől.
  3. Végül győződjön meg arról, hogy minden olyan munkát elvégzett, amely indexelt mezők használatát igényli (rendezés, egyeztetés stb.), Mielőtt olyan operátorokat használna, mint a $ project vagy a $ relax. Ezek az operátorok ugyanis olyan új dokumentumokat hoznak létre, amelyek nem rendelkeznek az eredeti dokumentum indexeivel.

Következtetés

A MongoDB egy nagyszerű adatbázis-eszköz, és valóban hasznos lehet a kis itallal rendelkező vállalkozások és a vállalkozások számára, amelyek gyorsan akarnak iterálni. Ez részben laza korlátozásainak és megbocsátó természetének köszönhető.

Magam is használom a MongoDB-t a codedamn-en - egy platform olyan fejlesztőkhöz, mint te, ahol mindenki tanul és csatlakozik!

Béke!