sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB + Elasticsearch eller kun Elasticsearch?

Taler om argumenter at bruge Mongo i stedet for/sammen med ES:

  1. Bruger-/rollestyring.

    • Indbygget i MongoDB. Passer måske ikke til alle dine behov, kan være klodset et eller andet sted, men det findes, og det blev implementeret for temmelig lang tid siden.
    • Det eneste for sikkerhed i ES er shield . Men det sendes kun for Guld/Platinum-abonnement til produktionsbrug.
  2. Skema

    • ES er skemaløst, men det er bygget oven på Lucene og skrevet i Java . Kernen i dette værktøj - indekser og søg dokumenter, og at arbejde på denne måde kræver indekskonsistens. På bagsiden skal alle dokumenter monteres i flad lucene indeks, hvilket kræver en vis forståelse af, hvordan ES skal håndtere dine indlejrede dokumenter og værdier, og hvordan du bør organisere dine indekser for at opretholde balancen mellem hastighed og datafuldstændighed/konsistens. At arbejde med ES kræver, at du konstant har nogle ting om skemaet i tankerne. Dvs.:da du kan indeksere næsten hvad som helst til ES uden at sætte tilsvarende kortlægning på forhånd, kan ES "gætte" kortlægning på farten, men nogle gange gøre det forkert, og nogle gange er implicit kortlægning dårligt, for når først det er sat, kan det ikke ændres. /o genindeksering af hele indekset. Så det er bedre ikke at behandle ES som skemaløs butik, fordi du kan træde på en rake et stykke tid (og det vil være smerte :) ), men behandle det hellere som skema-intensivt, i det mindste når du arbejder med dokumenter, der kan skæres i konkrete felter.
    • Mongo kan på den anden side "tygge og ikke efterlade krummer" af næsten alt, hvad du putter i den. Og de fleste dine forespørgsler vil fungere fint, indtil du husker, hvordan Mongo vil håndtere dine data fra JavaScript-perspektiv. Og da JS er svagt skrevet, kan du arbejde med virkelig skemaløse arbejdsgange (helt sikkert, hvis du har brug for sådan)
  3. Håndtering af ikke-tabellignende data.

    • ES er begrænset til at håndtere data uden at sætte dem i søgeindeks. Og denne løsning er god nok, når du skal gemme og hente nogle ekstra data (sammenlignet med data, du vil søge på).
    • MongoDB understøtter gridFS . Dette giver dig mulighed for at håndtere store bidder af data bag den samme grænseflade. Dvs., du kan gemme binære data i Mongo og hente dem inden for den samme grænseflade fra dit kodeperspektiv.


  1. konvertere millisekunder til dato i mongodb aggregeringspipeline for gruppe efter?

  2. Hvorfor giver PyMongo 3 ServerSelectionTimeoutError?

  3. i React kalder jeg to lister til side fra mongo, og jeg vil klikke på en for at filtrere, hvad der vises i en anden

  4. MongoDB opslagsrække af objekter efter felt (sammenføjningsbetingelser og ukorrelerede underforespørgsler)