sql >> Database >  >> NoSQL >> MongoDB

Factoren waarmee u rekening moet houden bij het kiezen van MongoDB voor big data-toepassingen

Technologische vooruitgang heeft voordelen opgeleverd die door bedrijfsorganisaties moeten worden benut voor maximale winst en lagere operationele kosten. Gegevens vormen de ruggengraat voor deze technologische vooruitgang, waaruit geavanceerde procedures worden afgeleid om specifieke doelen te bereiken. Naarmate de technologie vordert, worden er meer gegevens in systemen gebracht. Trouwens, naarmate een bedrijf groeit, zijn er meer gegevens bij betrokken en moet de serverconfiguratie een snelle gegevensverwerking zijn, betrouwbaar in opslag en optimale beveiliging voor deze gegevens bieden. MongoDB is een van de systemen waarop kan worden vertrouwd bij het bereiken van deze factoren.

Big data verwijst naar massale gegevens die snel veranderen, snel toegankelijk zijn en in hoge mate beschikbaar zijn om efficiënt in behoeften te voorzien. Bedrijfsorganisaties hebben de neiging om beschikbare databaseconfiguraties die na verloop van tijd de beste prestaties zouden opleveren, te onderzoeken en bijgevolg enige waarde uit Big Data te halen.

Online markten observeren bijvoorbeeld de kliks van klanten op het internet, de koopkracht en gebruiken de afgeleide gegevens vervolgens om andere goederen voor te stellen als een manier om te adverteren of om de gegevens te gebruiken voor prijsstelling. Robots leren door middel van machine learning en het proces omvat uiteraard veel gegevens die worden verzameld, omdat de robot wat hij heeft geleerd in het geheugen moet bewaren voor later gebruik. Dit soort complexe gegevens bewaren met traditionele databasesoftware wordt als onpraktisch beschouwd.

Kenmerken van big data

In softwaresystemen beschouwen we Big Data in termen van grootte, snelheid van toegang en de betrokken datatypes. Dit kan relatief worden teruggebracht tot drie parameters: 

  1. Volume
  2. Snelheid
  3. Verscheidenheid

Volume

Volume is de grootte van de betrokken Big Data en varieert van gigabytes tot terabytes of meer. Grote bedrijven nemen dagelijks terabytes aan gegevens op uit hun dagelijkse activiteiten. Een telecommunicatiebedrijf wil bijvoorbeeld een register bijhouden van de gesprekken die zijn gevoerd sinds het begin van hun werking, de verzonden berichten en hoe lang elk gesprek duurde. Dagelijks vinden er veel van deze activiteiten plaats, wat resulteert in veel gegevens. De gegevens kunnen worden gebruikt bij statistische analyse, besluitvorming en tariefplanning.

Snelheid

Overweeg platforms zoals Forex trading die realtime updates nodig hebben voor alle aangesloten clientmachines en om nieuwe beursupdates in realtime weer te geven. Dit dicteert dat de dienende database vrij snel moet zijn in het verwerken van dergelijke gegevens met weinig latentie in gedachten. Sommige online games waarbij spelers van verschillende wereldlocaties betrokken zijn, verzamelen veel gegevens van gebruikersklikken, slepen en andere gebaren en sturen deze vervolgens in microseconden door tussen miljoenen apparaten. Het betrokken databasesysteem moet snel genoeg zijn om dit allemaal in realtime te doen.

Verscheidenheid

Gegevens kunnen worden onderverdeeld in verschillende typen, variërend van getallen, tekenreeksen, datum, objecten, arrays, binaire gegevens, code, geospatiale gegevens en reguliere expressies om er maar een paar te noemen. Een optimaal databasesysteem zou functies moeten bieden om de manipulatie van deze gegevens te verbeteren zonder dat er aanvullende procedures van de kant van de klant nodig zijn. MongoDB biedt bijvoorbeeld de geolocatiebewerkingen voor gebruik tijdens het ophalen van locaties in de buurt van de coördinaten die in de query zijn opgegeven. Deze mogelijkheid kan niet worden bereikt met traditionele databases, omdat ze alleen zijn ontworpen om kleine gegevensvolumestructuren, minder updates en enkele consistente gegevensstructuren aan te pakken. Bovendien zijn er extra handelingen nodig om een ​​bepaald doel te bereiken, in het geval van traditionele databases.

MongoDB kan ook vanaf meerdere servers worden uitgevoerd, waardoor het goedkoop en oneindig is, in tegenstelling tot traditionele databases die alleen zijn ontworpen om op één enkele server te draaien.

Te overwegen factoren bij het kiezen van MongoDB voor big data

Big Data levert ondernemingsvoordeel op als het goed wordt beheerd door verbeterde verwerkingskracht. Bij het selecteren van een databasesysteem moet u rekening houden met enkele factoren met betrekking tot het soort gegevens waarmee u te maken krijgt en of het systeem dat u kiest die mogelijkheid biedt. In deze blog gaan we het hebben over de voordelen die MongoDB in sommige gevallen biedt voor Big Data in vergelijking met Hadoop.

  • Een uitgebreide zoektaal voor dynamische zoekopdrachten
  • Gegevens insluiten
  • Hoge beschikbaarheid
  • Indexering en schaalbaarheid
  • Efficiënte opslag-engine en geheugenverwerking
  • Consistentie en integriteit van gegevens

Rich Query Language voor Dynamic Querying

MongoDB is het meest geschikt voor Big Data waar resulterende gegevens verdere manipulaties nodig hebben voor de gewenste output. Enkele van de krachtige bronnen zijn CRUD-bewerkingen, aggregatieframework, zoeken naar tekst en de functie Map-Reduce. Binnen het aggregatieraamwerk heeft MongoDB een extra geolocatiefunctionaliteit die het mogelijk maakt om veel dingen met geospatiale gegevens te doen. Door bijvoorbeeld een 2Dsphere-index te maken, kunt u locaties binnen een gedefinieerde straal ophalen door alleen de breedte- en lengtecoördinaten op te geven. Verwijzend naar het bovenstaande telecommunicatievoorbeeld, kan het bedrijf de functie Kaartverkleining of het aggregatiekader gebruiken om oproepen vanaf een bepaalde locatie te groeperen, waarbij de gemiddelde beltijd voor zijn gebruikers dagelijks wordt berekend of voor meer andere bewerkingen. Bekijk het onderstaande voorbeeld.

Laten we een locatieverzameling doen met de gegevens

{ name: "KE",loc: { type: "Point", coordinates: [ -73.97, 40.77 ] }, category: "Parks"}

{ name: "UG",loc: { type: "Point", coordinates: [ -45.97, 40.57 ] }, category: "Parks"}

{ name: "TZ",loc: { type: "Point", coordinates: [ -73.27, 34.43 ] }, category: "Parks"}

{ name: "SA",loc: { type: "Point", coordinates: [ -67.97, 40.77 ] }, category: "Parks"}

We kunnen dan gegevens vinden voor locaties in de buurt van [-73,00, 40,00] met behulp van het aggregatieraamwerk en binnen een afstand van 1 KM met de onderstaande query:

db.places.aggregate( [

   {

      $geoNear: {

         near: { type: "Point", coordinates: [ -73.00, 40.00 ] },

         spherical: true,

         query: { category: "Parks" },

         distanceField: "calcDistance",

   maxDistance: 10000

      }

   }

]

Map-Reduce-bewerking is ook beschikbaar in Hadoop, maar is geschikt voor eenvoudige verzoeken. Het iteratieve proces voor Big Data met behulp van Map-Reduce in Hadoop is vrij traag dan in MongoDB. De reden hiervoor is dat iteratieve taken veel kaart- en reductieprocessen vereisen voordat ze worden voltooid. In het proces worden meerdere bestanden gegenereerd tussen de kaart en verminderen taken, waardoor het behoorlijk onbruikbaar is in geavanceerde analyse. MongoDb heeft het aggregatiepijplijnraamwerk geïntroduceerd om deze tegenslag te verhelpen en het is het meest gebruikt in het recente verleden.

Gegevens insluiten

MongoDB is gebaseerd op documenten met de mogelijkheid om meer velden in een enkel veld te plaatsen, dit wordt inbedding genoemd. Inbedding heeft het voordeel dat er minimale query's moeten worden uitgegeven voor een enkel document, omdat het document zelf veel gegevens kan bevatten. Voor relationele databases waar men veel tabellen kan hebben, moet u meerdere query's naar de database sturen voor hetzelfde doel.

Hoge beschikbaarheid

Replicatie van gegevens over meerdere hosts en servers is nu mogelijk met MongoDB, in tegenstelling tot relationele DBMS waar de replicatie beperkt is tot een enkele server. Dit is voordelig omdat gegevens op verschillende locaties zeer goed beschikbaar zijn en gebruikers efficiënt kunnen worden bediend door de dichtstbijzijnde server. Bovendien is het proces van herstel of afbraak eenvoudig te realiseren, gezien de journaalfunctie in MongoDB die controlepunten creëert van waaruit naar het herstelproces kan worden verwezen.

Indexering en schaalbaarheid

Primaire en secundaire indexering in MongoDB heeft veel voordelen. Indexering zorgt ervoor dat query's eerst worden uitgevoerd, wat een overweging is die nodig is voor Big Data, zoals we hebben besproken onder de snelheidskarakteristiek voor Big Data. Indexering kan ook worden gebruikt bij het maken van shards. Shards kunnen worden gedefinieerd als subverzamelingen die gegevens bevatten die met behulp van een shardsleutel in groepen zijn gedistribueerd. Wanneer een query wordt verzonden, wordt de shard-sleutel gebruikt om te bepalen waar te zoeken tussen de beschikbare shards. Als er geen shards waren, zou het proces voor Big Data vrij lang duren, omdat alle documenten moeten worden bekeken en het proces zelfs een time-out kan krijgen voordat gebruikers krijgen wat ze wilden. Maar met sharding wordt de hoeveelheid gegevens die moet worden opgehaald, verminderd, waardoor de wachttijd bij het wachten op het retourneren van een query wordt verminderd.

Efficiënte opslag-engine en geheugenverwerking

De recente MongoDB-versies stellen de WiredTiger in als de standaard opslagengine die een uitvoerende mogelijkheid heeft voor het afhandelen van meerdere workloads. Deze storage engine heeft tal van voordelen voor Big Data zoals beschreven in dit artikel. De engine heeft functies zoals compressie, checkpointing en bevordert meerdere schrijfbewerkingen via documentconcurrency. Big Data betekent veel gebruikers en dankzij de gelijktijdigheidsfunctie op documentniveau kunnen veel gebruikers de database tegelijkertijd bewerken zonder dat dit ten koste gaat van de prestaties. MongoDB is ontwikkeld met C++ en is daarom goed voor geheugenverwerking.

Consistentie en integriteit van gegevens

 JSON-validatortool is een andere functie die beschikbaar is in MongoDB om de integriteit en consistentie van gegevens te waarborgen. Het wordt gebruikt om ervoor te zorgen dat ongeldige gegevens niet in de database terechtkomen. Als er bijvoorbeeld een veld met de naam leeftijd is, verwacht het altijd een geheel getal. De JSON-validator controleert altijd of een tekenreeks of een ander gegevenstype niet wordt ingediend voor opslag in de database voor dit veld. Dit is ook om ervoor te zorgen dat alle documenten waarden voor dit veld hebben in hetzelfde gegevenstype en dus gegevensconsistentie. MongoDB biedt ook back-up- en herstelfuncties zodat men in geval van storing terug kan keren naar de gewenste staat.

Conclusie

MongoDB verwerkt realtime data-analyse op de meest efficiënte manier en is daarom geschikt voor Big Data. Geospatiale indexering maakt bijvoorbeeld een analyse van GPS-gegevens in realtime mogelijk.

Naast de basisbeveiligingsconfiguratie heeft MongoDB een extra JSON-gegevensvalidatietool om ervoor te zorgen dat alleen geldige gegevens in de database terechtkomen. Omdat de database op documenten is gebaseerd en velden zijn ingebed, kunnen er maar heel weinig query's naar de database worden gestuurd om veel gegevens op te halen. Dit maakt het ideaal voor gebruik als het om Big Data gaat.


  1. Hoe kunnen Redis-lijsten worden gebruikt om een ​​chatsysteem te implementeren?

  2. Een eenvoudige tagging-implementatie met MongoDB

  3. MongoDB:locale::facet::_S_create_c_locale naam niet geldig

  4. Transacties in MongoDB