Како се рукује напредном обрадом података помоћу МонгоДБ-овог оквира за агрегацију

МонгоДБ је превалио дуг пут. Иако постоји много НоСКЛ база података, МонгоДБ је прва база података која ми падне на памет када говоримо о НоСКЛ базама података.

Иако је између људи који воле СКЛ и оних који више воле НоСКЛ увек било мало врућине, истина је да базе података попут МонгоДБ решавају другачији проблем.

А они могу бити врло корисни када предају неструктуриране податке, где је брза и ефикасна манипулација обликом података (и претварање у релевантно знање) корисније од чврстих перформанси које пружају старе школске СКЛ базе података.

МонгоДБ долази са моћним оквиром за то - то јест, манипулисањем подацима директно на серверу: Аггрегатион Фрамеворк. Уђимо у то и покријмо неке брзе тачке о томе, шта је то и зашто је важно.

Шта је оквир за агрегацију?

Оквир за агрегацију само је начин за испитивање докумената у збирци у МонгоДБ-у. Овај оквир постоји, јер када започнете рад са подацима и манипулација њима, често требате да скупљате колекције, модификујете их, ишчупате поља, преименујете поља, повезујете, групишете документе по пољима, експлодирате низ поља у различитим документима итд. .

То не може да уради традиционални систем упита са којим долази МонгоДБ (то јест, упит за проналазак или за ажурирање или било који други упит који сте можда користили).

Једноставни упит постављен у МонгоДБ-у омогућава вам само преузимање целокупних или делова појединачних докумената. Они вам заиста не дозвољавају да манипулишете документима на серверу, а затим их враћате у своју апликацију.

Овде долази оквир за агрегацију из МонгоДБ-а. То није ништа спољашње, јер агрегација долази запечена у МонгоДБ. Можете научити да радите са МонгоДБ оквиром за агрегацију користећи ову бесплатну ИоуТубе листу за репродукцију коју сам направио.

Цевовод

Оквир агрегације ослања се на концепт гасовода. Погледајмо слику која то објашњава на бољи начин:

Овде, као што видите, узимамо колекцију и прослеђујемо је кроз цевовод. Овај цевовод се састоји од одређених фаза у којима одређени оператори модификују документе у збирци користећи различите технике. Коначно, излаз се враћа у апликацију која позива упит.

Упоредите га са једноставним упитом, попут проналаска. Свакако, то делује на већину начина, али није стварно корисно када желите да измените податке и док их преузимате.

Или ћете морати да преузмете документе и прилагодите их у складу с тим у апликацији на серверу, или још горе, послат ћете их клијенту и дозволити да га интерфејс код модификује за вас.

У оба случаја трошите ресурсе и пропусни опсег. Дакле, оквир за агрегацију уредно се бави овим проблемом. Погледајмо како се то ради са оператерима.

Оператори цевовода

У МонгоДБ-у, цевовод је низ који се састоји од различитих оператора, који узимају гомилу докумената и избацују измењене документе у складу са правилима која је одредио програмер. Следећи оператер узима документе које је испљувао претходни оператер, па се то зове цевовод.

Можете имати много оператора у цевоводу, а ови оператери се такође могу поновити, за разлику од уобичајених МонгоДБ упита.

Погледајмо неке уобичајене операторе цевовода у МонгоДБ-у.

$ гроуп

Овај оператер вам омогућава да групишете гомилу докумената на основу одређеног поља у документима. Такође се може користити за груписање различитих поља у документима.

Велико верујем у изреку да слика вреди 1000 речи. Видео вреди 1000 слика (добро, технички пуно више слика, али у реду), па погледајмо брзи видео о томе:

$ матцх

Оператор подударног цевовода ради врло слично ономе како ради редовни оператор проналажења. Добра ствар у вези с тим је што се може користити више пута јер сте у окружењу цевовода! Ово га чини моћним.

Погледајмо како се користи у колекцији:

$ лимит

Оператор $ скип цевовода прескаче првих Н докумената и прослеђује остатак докумената следећем оператеру. Погледајмо брзи пример:

$ прескочи

Оператор $ скип цевовода прескаче првих Н докумената и прослеђује остатак докумената следећем оператеру. Погледајмо брзи пример:

$ одмотати

Овај оператер ми је лично најдражи. $ Унинд узима поље поља и експлодира га у више Н под-докумената са и-им документом који садржи и-ту одређену вредност низа као вредност имена поља.

У комбинацији са другим операторима попут $ гроуп и $ матцх, ово постаје врло моћно за обраду података. Звучи збуњујуће? Погледајмо једноставан пример:

$ пројекат

Оператер пројекта вам омогућава да из сваког документа избаците гомилу поља, а остатак одбаците. И не само то, већ можете и преименовати ишчупана поља, цонцат низове, извадити поднизове и још много тога!

Погледајмо како ово делује укратко:

Најбоље праксе за коришћење оквира за агрегацију

С великом моћи долази и велика одговорност. Оквир за агрегацију можете лако искористити и за обављање једноставних упита, па је важно да будете сигурни да не пишете лоше упите базе података.

За почетак имајте на уму следеће тачке:

  1. МонгоДБ ће одбити било ког оператора који заузима више од 100 МБ РАМ-а и испашће грешка. Пазите да своје податке смањите што је пре могуће јер један оператер не би требало да заузима више од 100 МБ меморије.
  2. Ред је важан! Стављањем $ матцх на прво место смањиће се број докумената прослеђених остатку цевовода. Стављање $ пројецт на следеће ће онда додатно смањити величину појединачног документа решавањем поља.
  3. На крају, обавезно обавите сав посао који захтева употребу индексираних поља (сортирање, подударање итд.) Пре него што употребите операторе као што су $ пројецт или $ одвијати. То је зато што ови оператери креирају нове документе који немају индексе из оригиналног документа.

Закључак

МонгоДБ је сјајан алат за базе података и може бити заиста користан за мале стартупе и предузећа која желе брзо да изврше итерацију. Ово је делом због његових лабавих ограничења и природе која опрашта.

И сам користим МонгоДБ на цодедамн - платформи за програмере попут вас где сви уче и повезују се!

Мир!