Thread: MongoDB

  1. #1
    Drone's Avatar
    Registered
    28/05/03
    Location
    bmb
    Posts
    744
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    15/15

    MongoDB

    Eerst en vooral ben ik geen SQL/Database expert dus het kan zijn dat ik hier en daar foute dingen zeg. Nu dat ik met een excuus ben begonnen mag ik zoveel onzin verkopen als ik wil.

    Wat is MongoDB?

    In plaats van dat deze database records gaat opslaan in tabellen werkt MongoDB met documenten. Je kan een document vergelijken met een object in een programmeertaal. MongoDB gebruikt iets wat ze BSON noemen wat staat voor Binary JSON. De documenten kan je dan ook vergelijken met JSON objecten. Deze documenten zitten ook in een collectie zoals een record in een tabel zit.

    Bijvoorbeeld:
    Product
    Omschrijving
    Aantal
    Labels

    In MongoDB ziet dit er zo uit:
    Code:
    Auto
    {
        Omschrijving : "Voertuig op 4 wielen",
        Aantal: 15,
        Labels: ["Voertuig", "Groen", "Diesel"]
    }
    Ik denk dat de meeste dit wel eens in SQL hebben gemaakt. Voor labels zou je dus een extra tabel moeten maken met een FK naar product. In MongoDB kan je gewoon een collectie van Labels in het document bewaren.

    Als je nu zit te denken: leuk, een database voor mensen die niet met relaties kunnen werken. Dit is ook wat ik dacht toen ik de eerste keer zag tot als ik "flexible schemas" zag staan.

    Om terug te gaan naar ons product object. Wat als sommige producten geen omschrijving hebben? Wat als je de gebruiker van de software/webapp zelf zijn producten wil laten ontwerpen? Misschien hoeft hij helemaal geen prijs of geen labels. Om dit allemaal op te vangen in een SQL database is heel wat werk nodig.

    In MongoDB kan je dit doen:

    Code:
    Auto
    {
        Omschrijving : "Voertuig op 4 wielen",
        Aantal: 15,
        Labels: ["Voertuig", "Groen", "Diesel"]
    }
    Fiets
    {
         Omschrijving : "Voertuig op 2 wielen",
         Type: "Mountainbike",
         Prijs: 15,45
    }
    Dit geeft natuurlijk enorme flexibiliteit. Denk maar eens aan een CMS waar niet alle pagina's dezelfde eigenschappen hebben.

    Om zelf MongoDB eens te proberen moet je de server eens downloaden. Als je deze opzet zie je een console venster en dan kan je met de juiste drivers met de database communiceren. Er zijn drivers voor php, ruby, java, ...

    Er zijn nog voordelen aan MongoDB en ook nadelen. Als je meer wil weten over MongoDB bekijk dan eens de volgende links:

    MongoDB website: Home - MongoDB - 10gen Confluence
    MongoDB video op ruby conferentie: ChicagoRuby on Vimeo
    Javascript MongoDB console: Try MongoDB

    Dacht de post iets korter te houden. Dus voor die dat mijn ramblings tot hier hebben gelezen, proficiat!
    Last edited by Drone; 03-02-2010 at 23:19.
    no votes  

  2. #2
    Shaddix's Avatar
    Registered
    08/09/09
    Posts
    6,121
    iTrader
    23 (100%)
    Mentioned
    9 Post(s)
    Reputation
    3/121
    wat zou nu het voordeel zijn van dit, tegenover het opslaan van data in XML (wat veel vaker gedaan wordt)

    ik zie precies erg veel parallellen met XML
    PSN: Shaddix-be
    no votes  

  3. #3
    Drone's Avatar
    Registered
    28/05/03
    Location
    bmb
    Posts
    744
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    15/15
    Performance.

    Het grote probleem met xml is dat het ongeveer 90% tags zijn en 10% data. Ook als je een specifieke node in xml nodig hebt dan moet je nog altijd de hele file inlezen. Denk maar is aan een blog met 1000 posts in xml. Telkens je 1 post nodig hebt moet je alle 999 ook doorlopen.
    no votes  

  4. #4

    Registered
    25/08/05
    Posts
    68
    iTrader
    0
    Mentioned
    0 Post(s)
    XML is handig voor weinig data, of voor datauitwisseling. De overhead aan tags maakt het ongeschikt voor opslag en doorzoekbaarheid.

    MongoDB slaat op in een binair formaat, is in staat gigantische (hu-mongo-us amounts) hoeveelheden data te beheren, is gemaakt voor snelheid en heeft onder andere auto-sharding, replicatie en failover aan boord.

    Zoeken doorheen een kudde XML-files gaat ook niet echt vlot gaat.

    Zijn flexibele en dynamische opslag zorgen er ook voor dat dit zeer geschikt is voor dynamische dataopslag.
    Nietske
    no votes  

  5. #5
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    Ik heb de links nog niet gelezen, maar de eerste spontane vraag die bij mij opkomt na het lezen van je omschrijving is de volgende : wat is het verschil tussen Mongo en Lucene?
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

  6. #6
    Messias.'s Avatar
    Registered
    06/04/06
    Location
    BXL
    Posts
    4,415
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/40
    Is Lucene geen full-blown indexering- en search engine-software? De ambities van Mongo (en andere niet-relationele databases, zoals CouchDB) reiken in ieder geval zover niet, en beperken zich alleen tot semi-gestructureerde dataopslag.
    I caught a glimpse and now it haunts me.
    no votes  

  7. #7
    Drone's Avatar
    Registered
    28/05/03
    Location
    bmb
    Posts
    744
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    15/15
    Er is spraken van full text search in MongoDB. CouchDB maakt ook gebruik van documents maar ik lees dat je met views of zoiets moet werken. Na mongoDb ga ik zeker couchDB ook eens proberen.

    Gisteren nog wat testen zitten doen met MongoDB. Met c# zit ik wel met het probleem dat alles strongly typed is. Dus als je met properties zit die verschillen van object tot object moet je al met dictionaries gaan werken. Nu weet ik meteen waarom MongoDB zo populair is bij de ruby developers.
    no votes  

  8. #8

    Registered
    25/08/05
    Posts
    68
    iTrader
    0
    Mentioned
    0 Post(s)
    Ook in ruby moet je definieren wat je in je document gaat zetten; maar je kan wel dynamisch eerst een object opbouwen, en daarna dit object gaan opslaan. Ik vermoed dat dit in C# ook kan.

    Lucene en mongo zijn twee zeer verschllende dingen. Lucene (en bvb Sphinx of Ferret) zijn indexers. Die gaan een database gaan doorzoeken, en een index bijhouden die dan gebruikt kan worden om snel data terug te vinden. Mongo, Couch en alle andere zaken uit de NoSQL branche zijn vervangingen voor dataopslag in SQL wanneer een RDBMS eigenlijk ferme overkill is (wat dat in zeer veel gevallen is, denk maar bvb aan blogs).

    Ik geef trouwens dit weekend op Fosdem een introductie tot Mongo, MongoMapper en dit te gebruiken voor dynamische data in de ruby devroom (zaterdag) voor de geïntresseerden.
    Nietske
    no votes  

  9. #9
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    Quote Originally Posted by wonko View Post
    This quote is hidden because you are ignoring this member. Show
    Ik geef trouwens dit weekend op Fosdem een introductie tot Mongo, MongoMapper en dit te gebruiken voor dynamische data in de ruby devroom (zaterdag) voor de geïntresseerden.
    Niet die op zondag? Want ik zie in de schedule toch een "Introduction to MongoDB" staan voor morgen (10u, NoSQL room). Soit, als ik er op tijd raak ga ik daar wel eens naartoe (aangezien de Dojo presentatie wellicht toch wordt gefilmd en ik die dus later nog kan bekijken).
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

  10. #10

    Registered
    25/08/05
    Posts
    68
    iTrader
    0
    Mentioned
    0 Post(s)
    het was wel degelijk gisteren, en het was in de Ruby devroom, niet in de NoSQL track... De presentatie ga ik wel nog online zetten, maar ik vermoed dat zonder de babbel erbij je er weinig mee gaat zijn (het focust ook meer op ruby, mongomapper en dynamische dataopbouw dan op mongodb zelf.)
    Nietske
    no votes  

  11. #11
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    Spijtig, ik was vanmorgen op tijd, maar het zaaltje zat al overvol. 'k Zal dan maar een beetje proefondervindelijk te werk gaan...
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

  12. #12
    Messias.'s Avatar
    Registered
    06/04/06
    Location
    BXL
    Posts
    4,415
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/40
    Gooi gerust de slides online (op slideshare of zo), ik ben altijd geïnteresseerd!
    I caught a glimpse and now it haunts me.
    no votes  

  13. #13

    Registered
    25/08/05
    Posts
    68
    iTrader
    0
    Mentioned
    0 Post(s)
    presentatie staat online op Openminds | Openminds, hosting uit Gent
    Nietske
    no votes  

  14. #14
    Messias.'s Avatar
    Registered
    06/04/06
    Location
    BXL
    Posts
    4,415
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/40
    Vriendelijk bedankt.
    I caught a glimpse and now it haunts me.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in