• [^] # Re: Question bête

    Posté par . En réponse au journal A quoi peut servir couchdb ?. Évalué à 4.

    Une manière de faire :

    Une vue (ie un index) avec comme clé : [ categorie , auteur, date ]

    map = function(doc) {
    emit( [doc.Category, doc.Author, doc.Date] , null);
    }

    et pas de reduce

    appel avec start_key=["Linux", "Edouard", "2010年01月01日"]&end_key=["Linux", "Edouard", "2010年01月12日"]


    Il faut se dire qu'on va créer un index, cad un ensemble de couple (clé,valeur) et ça sera stocké trié par clé. Donc quand on requête sur la vue (cad sur l'index) on requête par rapport à la clé.
    C'est la seule manière de faire qui soit efficiente. Une vue temporaire est souvent inadmissible (car ça va tout reparcourir les documents, alors que dans une vue normal, à chaque appel on parcourt que ce qui a changé, donc c'est potentiellement très très très rapide).

    Donc, dans la plupart des cas, faut penser un peu en mode je dois faire une requête SQL qui utilise complètement UN index.

    (Faudrait que je finisse cette page : http://www.couchdb-fr.net/decouvrir/exemple-blog )

    --------------------

    Pour les autres qui se pose des questions de l'intérêt, je vais donner le mien (entres autres) :

    Par exemple, comment stocker en base une facture ?

    MySQL : 1 table facture + 1 table facture_lignes + clés étrangères

    CouchDB :
    {
    ...
    "client": "Bill Gates",
    "lignes": [
    { "Produit": "Support Linux (1/2j)", "Quantité": 10, "Prix": 500 },
    { "Produit": "Porte clé Manchot", "Quantité": 1, "Prix": 2.99 }
    ],
    "Total": 5002.99
    }

    (Tout ce qui est mettable en JSON est enregistrable dans CouchDB...)