Sortie de GNU Recutils 1.1

Posté par . Modéré par patrick_g.
Tags :
31
7
jan.
2011
GNU
GNU Recutils est une suite d'outils et de bibliothèques permettant d'accéder à des bases de données texte appelées recfiles. Les données sont stockées comme des suites d'enregistrements, chaque enregistrement contenant un nombre arbitraire de champs nommés. Certaines fonctionnalités habituellement fournies par les systèmes de gestion de bases de données sont gérées par recutils : gestion des types de données, de l'intégrité des données (clés, champs obligatoires, etc.), des relations entre les enregistrements (par un concept proche des clés étrangères).

Bien que le système soit très simple (les données sont stockées dans des fichiers totalement lisibles dans un éditeur de texte standard), il permet de gérer des bases de données moyennement importantes, et représente en cela un compromis entre le CSV qui stocke en clair mais n'offre pas de fonctionnalités et les systèmes de gestion de base de données relationnelles plus complets comme MariaDB ou PostgreSQL.

La suite GNU recutils inclut :
  • Un manuel au format texinfo décrivant le format Rec et le logiciel ;
  • Une bibliothèque CA (librec) fournissant une large collection de fonctions permettant d'accéder aux recfiles ;
  • Une collection d'utilitaires en C (recinf, recsel, recins, recdel, recset, recfix, recfmt, csv2rec and mdb2rec) qui peuvent être utilisés dans les scripts shells et en ligne de commande pour travailler avec des recfiles ;
  • Une collection d'utilitaires (mdb2rec, csv2rec) permettant de convertir les données d'autres formats en recfiles ;
  • Un mode emacs (rec-mode).

Parmi les nouveautés de cette version 1.1 on trouve:
  • Un nouvel outil, recfmt, pour formater les enregistrement selon un template.
  • Opérateurs de comparaison de dates: avant (<<), après (>>) même date (==).
  • Nouvel opérateur de comparaison selon la valeur d'une expression (?:).
  • Nouvel opérateur de concaténation de chaînes de caractères (&).
  • Amélioration de la portabilité de GNU recutils qui a été testé sur 10 OS différents.
  • # Tortues

    Posté par (page perso) . Évalué à 6.

    Je ne connaissais pas ce projet mais ça a l'air très bien en tant que moyen de stockage simple sans avoir à dégainer l'artillerie d'une base SQL.
    Et puis le logo est sympa (cf l'entrée "Why is the logo depicting a pair of copulating turtles?" de la FAQ).
    • [^] # Re: Tortues

      Posté par (page perso) . Évalué à 6.

      Ce qui serait utile je pense, c'est une comparaison, notamment au niveau perfs avec SQLite que je place plus ou moins¹ en concurrent.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: Tortues

        Posté par (page perso) . Évalué à 6.

        Je vois plus XML comme concurrent. Les bases SQLite sont illisibles avec un éditeur alors que des enregistrements au format XML (comme dans Tellico par exemple) sont en théorie lisibles.
        C'est clair que les perfs doivent un peu souffrir avec une base au format Rec mais bon ce n'est pas fait pour stocker des gigas de données.
        • [^] # Re: Tortues

          Posté par (page perso) . Évalué à 6.

          Personnellement, sans avoir creuse le sujet de Recutils, j'utiliserais SQLite pour les même besoins et que je dois maintenir en parallèle une compatibilité avec d'autres base de données relationnelles (comme Drupal le fait par exemple) ou que j'envisage de migrer plus tard sur de plus grosses bases.

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: Tortues

            Posté par (page perso) . Évalué à 2.

            Je ne connais pas bien SQLite, mais je ne crois pas qu'il y ait des utilitaires shell pour manipuler dans des scripts les bases SQLite. C'est peut-être un des points forts de ce système non ?
            • [^] # Re: Tortues

              Posté par (page perso) . Évalué à 4.

              Ben les monolignes Perl, ca sers à quoi ;-)
            • [^] # Re: Tortues

              Posté par . Évalué à 7.

              Si, plus ou moins : tu peux envoyer des requêtes SQL et manipuler une base de données avec la commande "sqlite". Un peu comme "sqlplus" avec Oracle ou "mysql" avec MySQL, d'ailleurs.

              C'est un avantage pour quelqu'un qui connaît déjà SQL.

              Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

              • [^] # Re: Tortues

                Posté par . Évalué à 5.

                C'est un avantage pour quelqu'un qui connaît déjà SQL.

                s/déjà/seulement/

                Pour tous les autres, une API bien sentie sera dix fois plus efficace que cette vieille radasse de SQL.
                • [^] # Re: Tortues

                  Posté par . Évalué à 2.

                  C'est vrai aussi, d'autant qu'il y a des approches bien sympa comme SQLAlchemy qui propose un mapping objet de tables SQL.

                  Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

                  • [^] # Re: Tortues

                    Posté par . Évalué à 5.

                    Oui, un ORM quoi :)
        • [^] # Re: Tortues

          Posté par . Évalué à 5.

          Personnellement, je mettrai aussi JSON et YAML en concurrence, même si ces deux formats n'ont pas une suite d'outils associés (à ma connaissance).
          • [^] # Re: Tortues

            Posté par (page perso) . Évalué à 4.

            Et Berkeley DB.

            pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

            • [^] # Re: Tortues

              Posté par (page perso) . Évalué à 1.

              <off topic "To:"="Krunch">
              en passant, en parlant de format binaire simple bas niveau, impossible de trouver de la doc sur le format de stockage de `sar`, à part "passe par le convertisseur texte, c'est plus simple", c'est dommage, ça va demander plus de taf pour suivre ses logs en live...

              </off topic>
              • [^] # Re: Tortues

                Posté par . Évalué à 0.

                Il dit qu'il ne voit pas le rapport

                Membre de l'april, et vous ? http://www.april.org/adherer

              • [^] # Re: Tortues

                Posté par (page perso) . Évalué à 4.

                Le format de sar change selon la version et l'architecture (x86_64, i386,...) donc t'as plutôt intérêt à utiliser "LANG=C sar -A -f" (pas oublier le LANG=C) et à parser le texte qui en sort. Par contre, si c'est pour observer en live, je vois pas trop l'intérêt de passer par le format binaire intermédiaire, autant utiliser la sortie de "sar -A 1 0" directement.

                pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

        • [^] # Re: Tortues

          Posté par (page perso) . Évalué à 4.

          Cela me semble de ce point de vu plus proche du YAML que du XML.
    • [^] # Re: Tortues

      Posté par (page perso) . Évalué à 3.

      >> Et puis le logo est sympa (cf l'entrée "Why is the logo depicting a pair of copulating turtles?" de la FAQ).

      Parce que rectum ?
      • [^] # Re: Tortues

        Posté par (page perso) . Évalué à 4.

        echo "Why is the logo depicting a pair of copulating turtles?" | mail -s "GNU recutils" ams chez gnu truc org

        Non mais sérieusement, mettre un truc comme ça dans la FAQ… Il devrait s'attendre à recevoir plein de courrier avec systématiquement la même question, c'est comme quand, dans un cours, un prof sort « Et là, vous allez me dire que le bidule est mal schtroupfé dans le schmilblick. », résultat assuré : « Monsieur, le bidule est mal schtroupfé dans le schmilblick. » En version Internet.
        • [^] # Re: Tortues

          Posté par (page perso) . Évalué à 4.

          C'est juste une nouvelle façon de faire des stats sur l'interet que peuvent porter les gens à un projet.

          "Avant" on avait awstats qui lisait les logs apache, maintenant on a mutt qui compte le nombre de mail avec la même question. C'est juste moins graphique ^^
          • [^] # Re: Tortues

            Posté par (page perso) . Évalué à 5.

            En plus ça permet de mesurer non pas le nombre de visites, mais de mesurer le nombre de barbus.
            Car seul un barbus (ou apparenté) fait ce genre de blague. Pas les moteurs de recherche, pas le curieux, pas l'erreur de clic, etc.
            Et aussi, le barbus ne fait la blague qu'une seule fois, même s'il revient 6 mois plus tard à partir d'un ordinateur différent.

            Vraiment, chouette astuce.
  • # Comparaison avec les autres bases "nosql"

    Posté par (page perso) . Évalué à 4.

    Le fait qu'il y ait des outils autour du format fait que ce n'est pas que un format de plus (YAML/XML), mais aussi une réalisation qui fournit des services, dans la mouvance nosql.

    Il y a une liste d'outils sur http://nosql-database.org/ mais recutils n'y apparaît pas (pour le moment - il y a un email sur la page, si l'auteur du journal veut contacter le mainteneur de la page).
    • [^] # Re: Comparaison avec les autres bases "nosql"

      Posté par (page perso) . Évalué à 2.

      Sauf que ce n'est pas une base noSQL C'est un format structuré de stockage, comme CSV, XML, JSON ou BSON, etc. Ça peut faire office de backend de stockage pour une base de données SQL ou noSQL.

      Un exemple assez éclairant est MySQL, qui peut utiliser BerkleyDB (un équivalent de Rec dirons-nous) pour stocker les données qui ont été traitées via des requêtes SQL.

      La véritable guerre entre les bases se réclamant de l'héritage relationnel et les bases s'en affranchissant, c'est la manière dont gère l'accès aux données, leur répartition, et la gestion de l'intégrité de ces données (les compromis ne sont pas les même).
      • [^] # Re: Comparaison avec les autres bases "nosql"

        Posté par (page perso) . Évalué à 5.

        Ça va plus loin qu'un simple format de stockage, je cite la dépêche: "gestion des types de données, de l'intégrité des données (clés, champs obligatoires, etc.), des relations entre les enregistrements (par un concept proche des clés étrangères)."
        Tout ça ce sont des fonctionnalités de base de données, fournies par un logiciel. C'est bien une base dans la mouvance nosql, pas un simple format comme ceux que tu cites.
  • # collextion, des mecs qui en ont

    Posté par (page perso) . Évalué à 4.

    Perso, collextion, j'aurais écrit cela de manière différente.

    Des mecs qui en ont: http://www.dailymotion.com/video/x1s7fe_connexion-des-mecs-q(...)
    Je sais, je suis vieux.
  • # Redecouverte du principe des bases de donnée multivaluées

    Posté par . Évalué à 6.

    Interressant et utilisation qui me semble plutot simple.

    Ca ressemble etrangement au concept des bases de données multi valuée qui helas ont perdu la bataille contre les bases de donnée SQL.
    Elles sont pourtant pratique, puissante, et facile d utilisation.

    Rappel du principe des bases de donnée multivaluée

    Fichiers qui sont des fichiers au format texte

    Records composés de champs non typés de longueur variable , et pouvant contenir plusieurs valeurs.

    Bref Recutil reinvente le concept et je penses qu ils ne vont pas être les seuls

    http://en.wikipedia.org/wiki/MultiValue

    La base de donnée multivalué d origine Pick
    http://en.wikipedia.org/wiki/Pick_operating_system

    In French
    http://fr.wikipedia.org/wiki/Pick_%28syst%C3%A8me_d%27exploi(...)
    • [^] # Re: Redecouverte du principe des bases de donnée multivaluées

      Posté par . Évalué à 5.

      Oui alors, j'ai souvenir d'un énergumène qui n'arrêtait pas de vouloir vendre PICK sur fr.comp.applications.sgbd (helios qu'il se faisait appeler), en expliquant que c'était tout plusse mieux que le reste. Et tout plein de gens lui expliquaient que son système ressemblait plus à un OS dans l'OS, qui réinventait la roue 10 fois pour pouvoir faire tout ce qu'un système de bases de données multivaluées est censé faire.

      Et quand j'en parlais à des chercheurs en BD, ils connaissaient PICK & co, mais n'étaient pas vraiment impressionnés non plus. Alors quand ni les professionnels du secteur privé, ni les académiques ne semblent dire que ce genre de système est viable, j'ai tendance à me méfier...
      • [^] # Re: Redecouverte du principe des bases de donnée multivaluées

        Posté par . Évalué à 3.

        Détrompe toi.

        Ca fait 20 ans que je bosse dans ce monde des bases de donnée multi valuée.

        De grandes banques l utilisent en France et a travers le monde entier.

        Fut un temps beaucoup de bibliothèque française et d hopitaux l' utilisaient aussi.

        La boite précédente ou je bossait avait un ERP programmé sur ce type de BDD et avait plus de 200 PME ou c etait installé.

        Au depart effectivement c etait un systeme tout en 1 , OS + Base de donnée. Mais ca a evolué , ca tourne sous Unix/Linux ou Windows sans être un OS maintenant, il n y a plus que la fonction base de donnée et le langage de programmation qui va avec, un basic adapté (je sais ca fait pas rever) qui genere de l executable.

        Une des ses bases Jbase pour ne pas la nommer s 'est débrouillé pour utiliser Oracle ou DB2 pour y stocker ses données sous format xml et continuer a utiliser sous cette forme le principe des multi valeurs.
        • [^] # Re: Redecouverte du principe des bases de donnée multivaluées

          Posté par . Évalué à 6.

          Bon, ça fait un bout de temps que COBOL est utilisé en entreprise (surtout les banques et assurances), et je n'ai pas vraiment l'impression que ce soit parce que c'est le meilleur langage pour faire le boulot... Plutôt qu'il est là et que désormais il fait partie des parties critiques du système -- et donc il est difficile/dangereux d'y toucher.
  • # Paquet Debian ?

    Posté par . Évalué à 3.

    Merci pour cet article intéressant.

    Quelqu'un sait-il s'il existe un paquet Debian, je ne trouve rien (à moins qu'il faille connaître le nom d'un volatile bizarre sous lequel ce logiciel aurait été dissimulé par un mainteneur pervers?).

    C'est d'ailleurs ce qui m'empêche d'être tout-à-fait enthousiaste, cela révélant peut-être une base d'utilisateurs fort réduite et un risque quant à sa pérennité.

    G.
    • [^] # Re: Paquet Debian ?

      Posté par . Évalué à 3.

      Le projet est tout récent, la première sortie officielle (1.0) date du 3 décembre. Soit tu attends, soit tu décides de maintenir toi-même le paquet dans ta distribution.
      • [^] # Re: Paquet Debian ?

        Posté par . Évalué à 2.

        Merci, je n'avais prêté attention à ce que ce soit si récent.

        > Soit tu attends, soit tu décides de maintenir toi-même le paquet dans ta distribution.

        Je n'ai pas cette prétention... Non sérieusement, je le ferais si j'avais les disponibilités et les compétences, en attendant, je me contente de checkinstall pour mes besoins personnels. Cela pour dire que j'espère à raison ne pas devoir être rangé dans la catégorie de ceux qui attendent que tout leur tombe tout cuit et se permettent de faire les difficiles.
  • # librec

    Posté par (page perso) . Évalué à 4.

    Est-ce que quelqu'un a trouvé la documentation pour la librec? Je n'ai pas l'impression qu'elle se trouve sur leur site.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: librec

      Posté par . Évalué à 6.

      Je n'ai pas trouvé de documentation non-plus, mais rec.h est très bien commenté, il est probablement suffisant pour pouvoir travailler avec la librec. Le seul reproche que l'on peut faire aux commentaires est l'abréviation utilisée pour les selection expressions :

      /* Destroy a sex. */
      void rec_sex_destroy (rec_sex_t sex);

      /* Compile a sex. If there is a parse error return false. */
      bool rec_sex_compile (rec_sex_t sex, char *expr);

      /* Apply a sex expression to a record, setting RESULT in accordance. */
      bool rec_sex_eval (rec_sex_t sex, rec_record_t record, bool *status);

      /* Apply a sex expression and get the result as a string. */
      char *rec_sex_eval_str (rec_sex_t sex, rec_record_t record);

      Membre de l'april, et vous ? http://www.april.org/adherer

      • [^] # Re: librec

        Posté par . Évalué à 1.

        C est vrai que le logo + les sex , le gars s est amusé mais ca fait pas tres serieux aupres d un service IT
        • [^] # Re: librec

          Posté par . Évalué à 4.

          Franchement, si le service IT s'intéresse plus au logo qu'à ce que fait le soft, il n'a rien compris.
        • [^] # Re: librec

          Posté par . Évalué à 3.

          Ah oui j'oubliais: sous UNIX/Linux, on a bien le format ELF, avec tout ce qui concerne les machins du genre DWARF pour le debugging etc... :)
        • [^] # Re: librec

          Posté par . Évalué à 1.

          Je ne sais pas dans quel genre d'entreprises les décisionnaires d'un service IT prennent le temps de lire les commentaires d'un fichier d'entêtes pour prendre leurs décisions... et si un logo ridicule était un frein pour adopter un logiciel en entreprise, ça se saurait, beaucoup de logiciels libres ont un logo amusant sans que ça ne dérange personne.

          Afin que ce commentaire ne soit pas totalement inutile, je mets un lien vers le rec.h pour les curieux : http://html2.apinc.org/fichiers/201101/rec.h

          Membre de l'april, et vous ? http://www.april.org/adherer

  • # Pas mal

    Posté par . Évalué à 1.

    Je viens de le compiler et l installer sur NetBSD.
    Pas mal, rapide a prendre en main et a utiliser.

    Je dirais du tout bon pour gerer ses petites bases de données perso. sans install et config de vrai BDD.

    Je crois que cet outils vient de gagner un utilisateur
  • # Que veut dire "moyennement importante" en parlant d'une base de données

    Posté par (page perso) . Évalué à 4.

    Je m'excuse d'avance pour le caractère critique de mon commentaire, mais un point me fait bondir. Dans la news, on lit "il permet de gérer des bases de données moyennement importantes". Or, je ne comprends pas ce que ça veut dire.

    Pour moi, on peu utiliser des BD pour gérer quelques dizaines d'enregistrement ou plusieurs millions. Du coup, je vois pas bien ce qu'est une base de données moyennement importante.

    Ne peut-on pas être plus concret ? Quelques chiffres ? Ou plutôt un secteur d'activité (genre pour gérer un agenda, ou un index de mail...).


    Encore désolé pour l'aspect grognon.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.