CBX – Le développement d'applications riches de nouvelle génération en NoSQL

Le NoSQL avec Couchbase Lite

Le principe est de pouvoir lire et écrire dans la base depuis un ordinateur, une tablette ou un portable, que l’on soit connecté au réseau ou temporairement hors ligne suite à une déconnexion.

Les équivalents des contenus des tables SQL sont des documents.

L’intégration avec des objets devient alors possible au moyen d’un O.R.M. (Object-Relational Mapping) qui automatise la sérialisation des données. Il peut être ainsi considéré que la base contient des objets avec leurs attributs persistants. Objets qui peuvent comporter des données simples mais aussi des données complexes. Contrairement aux bases relationnelles, avoir un sous-objet ou un tableau imbriqué est naturel avec une base NoSQL telle que CouchDB ou Couchbase via des O.R.M. tel que Couchbase Lite et CBX.

En ayant ainsi la même granularité entre d’une part, l’objet considéré comme possédant l’ensemble de ses sous-objets, et d’autre part, le document NoSQL, cela simplifier considérablement les questions d’intégrité et d’accès aux données imbriquées.

Bien entendu, les relations entre objets non imbriqués sont aussi possible et sont des relations entre documents: un lien dans un document vers un autre document est tout simplement le nom interne de ce dernier (UUID).

Grâce au MapReduce mettant en oeuvre des B-Tree, des requêtes élaborées peuvent être calculées en tâche de fond pour permettre d’accéder immédiatement à des résultats tels que des totalisations dans des logiciels de gestion.

De même, Wyje a rendu possible de savoir lorsque l’on supprime par exemple un document dans la base si d’autres documents l’utilisent et de le gérer au moyen d’un automatisme.

L’outil et les librairies CBX sur OS X

A partir d’un modèle de données décrit à l’aide de l’outil d’Xcode, il y a génération des classes permettant de travailler au moyen d’objets ou hiérarchies d’objets sur les données de la base.

Les classes métier héritent des classes générées ce qui permet de facilement regénérer le code lorsque le modèle des données évolue. Chaque modèle peut imbriquer d’autres modèles ou être en relation avec d’autres modèles. Dans un modèle imbriqué dans un ou plusieurs autres modèles parents, on accède aux données du parent au moyen d’un protocole. Lors de la modélisation, il est possible de définir des index simples ou composés permettant d’accéder rapidement à l’équivalent de tables SQL.

De nombreux autres éléments ont été pris en compte:

  • La validation des données est automatisée à partir des descriptions dans le modèle des données et peut être personnalisée pour les classes qui le nécessitent. Sont automatisés:
    • la validation récursive des données imbriquées,
    • le caractère obligatoire ou facultatif d’une donnée,
    • la capacité à garantir l’absence d’homonymes pour les index qui ont été définis.
    • la vérification lors de la destruction d’un objet que celui n’est pas utilisée par d’autres objets
  • Les objets peuvent contenir des images ou d’autres données binaires ou textuelles qui sont attachées au document de la base associée à l’objet.
  • Les labels pour les langues supportées ou le type de données associée à un champ sont décrits lors de la modélisation pour permettre des automatismes tels que le formatage de données ou les bulles d’aides.
  • Des solutions techniques pour la mise à jour de la base de données ont été proposées pour gérer le cas de nouvelles versions du logiciel avec modification du modèle des données.
  • Des tables sont crées automatiquement  à partir de fichiers XML pour répondre aux besoins courants (monnaies, civilités, plan comptable, etc).
  • Il y a une gestion des erreurs et messages, et les messages d’erreurs provenant des automatismes peuvent être surchargés et traduits.
  • C’est lors de la création d’un document que sont effectuées les tâches susceptibles de ralentir l’utilisateur si elles étaient effectuées à la volée (par exemple, la création des vues sur les documents de la base).

CBX s’intègre avec la libraire graphique Cocoa de MacOS:

  • A chaque modèle est associée une vue de détail la représentant graphiquement qui se réutilise directement selon un principe totalement objet.
    • Par exemple, dans un modèle de coordonnées d’une personne ou d’une société, il y a des emails, des urls, des numéros de téléphone et une adresse. Dans la vue graphique du détail d’une coordonnée, il suffit d’utiliser une CustomView Cocoa (une sous-fenêtre) pour chaque détail imbriqué (adresse par exemple) ou master-détail imbriqué (les emails, par exemple) en précisant le nom de la relation entre le modèle parent de coordonnées et le modèle imbriqué considéré.
    • Les imbrications graphiques qui en découlent voient les priorités de leurs contraintes de disposition géométriques automatiquement mises à l’échelle.
  • Des principes ergonomiques tels que l’abandon du OK-Cancel lors de la modification ont été appliqués à la fois pour respecter les usages sur OS X mais aussi pour utiliser des principes qui répondent aux cas généraux et non contraindre l’utilisateur du fait de l’existence de cas particuliers. Par exemple, lors de la modification dans un master-detail, si des erreurs sont détectées, l’utilisateur est interpellé sur ce détail, sinon, si tout est correct, il passe directement à d’autres tâches sans avoir à valider ses modifications.
  • La libre personnalisation permet par exemple de proposer des vues graphiques simplifiées pour la création de données.
  • Des solutions ont été créés pour faciliter la saisie, des libairies d’onglets ont été personnalisées, des master-details classiques ont été utilisés mais aussi des vues arborescentes ou encore il a été créé une gestion de menus contextuels pour permettre par exemple de dupliquer une donnée.

CBX couvre un champ important d’expression de besoins métiers et Wyje possède un savoir-faire pour donner de nouvelles réponses aux enjeux de conception logicielle et tirer parti des principes du NoSQL.

CBX, avec son outil de génération et ses librairies, permet de répondre aux besoins complexes d’une application riche telle qu’un ERP.

Publicités