Présentation technique : anatomie de Cloudant DBaaS Amélioration de la performance, de l'évolutivité et de la disponibilité de la couche de données grâce à un service de données NoSQL géré Contenu : 1 La fin des bases de données à ajuster soimême a-t-elle sonné? 2 Prochaine phase : performances garanties par les fournisseurs DBaaS 2 Profil des performances de Cloudant 3 Cloudant : premier réseau mondial de fourniture de données dans le secteur 3 ADN de Cloudant 3 Fonctionnement de la couche de données 6 Evolutivité de Cloudant 7 Démarrer avec Cloudant La fin des bases de données à ajuster soi-même a-t-elle sonné? De nos jours, les applications doivent gérer un éventail de données structurées et non structurées, accessibles via d'importants réseaux par les utilisateurs, les périphériques, les sites, ou même les capteurs, les véhicules et les produits Internet. Pour identifier la plateforme de gestion des données qui fournira les meilleures performances, la meilleure disponibilité et les meilleures économies, un travail conséquent de recherche et de planification est nécessaire. Les développeurs sont amenés à se poser les questions suivantes : Quel est le système de gestion des bases de données (DBMS) approprié? Quel est le matériel approprié? Quelle est la conception de base de données appropriée? Faut-il embaucher de nouveaux administrateurs de base de données? De nombreuses équipes ne disposent ni du temps ni de l'expertise nécessaires pour identifier les différentes possibilités en termes de logiciel, matériel et conception disponibles sur le marché actuel. C'est pourquoi elles choisissent souvent le statu quo. Au fur et à mesure que la charge de travail de la base de données augmente, elles prennent sur le temps de développement pour gérer les «crises» des bases de données, et finalement, courent le risque de perdre du temps, des clients, des données, des revenus et des bénéfices.
Prochaine phase : développement et déploiement rapides d'applications avec DBaaS Les solutions Database-as-a-Service (DBaaS) telles que Cloudant vous permettent d'adhérer à un «Accord de niveau de service» (SLA) pour la gestion de données, plutôt qu'à une simple technologie de base de données, ce qui simplifie grandement le développement et la fourniture d'applications. Etape 1 : Identifier le SLA qui correspond à vos besoins Stockage? Débit? Latence? Disponibilité? Méthodes d'accès aux données? Aide? etc. Etape 2 : Choisir un DBaaS qui garantit la bonne exécution du service Au meilleur prix, sans engagement Le présent Livre blanc présente Cloudant DBaaS, ses éléments distinctifs, son utilisation, ainsi que les types de SLA qu'ibm propose à ses clients. «Les utilisateurs sont satisfaits lorsque les cycles de développement sont rapides. Mais s'il faut se débattre avec notre base de données, cela nous contrarie. Avec Cloudant, nous faisons ce que nous savons faire le mieux. Nos développeurs peuvent itérer rapidement, tandis que les ingénieurs Cloudant maintiennent notre base de données en arrière-plan.» Responsable du développement logiciel, client Cloudant Profil des performances de Cloudant Des sociétés de toutes tailles s'appuient sur Cloudant DBaaS pour gérer différents types de données d'applications Web et mobiles majeures ou à expansion rapide dans les domaines de l'ecommerce, la formation en ligne, les jeux, les services financiers, le réseau et autres. Cloudant DBaaS convient parfaitement à des applications nécessitant un entrepôt de données opérationnel pour prendre en charge un grand nombre de lectures et d'écritures à faible latence de façon simultanée. Sa technologie de réplication et de synchronisation des données offre une disponibilité continue 2 de données, ainsi qu'une utilisation hors ligne d'applications pour les utilisateurs mobiles ou à distance. En tant que magasin de documents JavaScript Object Notation (JSON), Cloudant DBaaS est idéal pour gérer des données structurées ou non structurées. L'indexation avancée permet d'enrichir facilement des applications avec des services localisés (géospatiaux), des recherches en texte intégral et des analyses en temps quasi-réel. Comme expliqué ultérieurement dans ce livre, un compte Cloudant peut être hébergé sur un cluster Cloudant à plusieurs utilisateurs ou sur un cluster à utilisateur unique, s'exécutant sur un matériel dédié hébergé sur un fournisseur de Cloud de premier plan comme IBM SoftLayer. Les tableaux suivants fournissent les caractéristiques des données de performances réelles pour des clients réels : Client important à utilisateur unique Rapport lecture/écriture 20 : 1 Volume des données Débit des transactions Latence Base d'utilisateurs Croissance du cluster 130 To Plus de 2 milliards de demandes par jour Moins de 10 millisecondes Mondiale (application mobile) De 6 serveurs à plus de 200 en 12 mois Remarque : le rapport lecture/écriture varie d'un client à l'autre. Cloudant DBaaS gère des charges de travail mixtes, soit principalement de lecture, soit principalement d'écriture, soit équilibrées en lecture/écriture. Client important à plusieurs utilisateurs Rapport lecture/écriture 3 : 1 Volume des données Débit des transactions 215 Go 1 million de demandes par jour (42 000 par heure) Cloudant DBaaS peut fournir conseils et assistance pour déterminer si Cloudant peut respecter les exigences de performances de la couche de données. Nous pouvons aider à maintenir la croissance des clusters à utilisateur unique pour faire évoluer les performances. Ce que nous ne faisons pas : Cloudant DBaaS est un magasin de données opérationnel. Il n'a pas vocation à gérer des charges de travail intenses en termes de requêtes ad hoc, comme celles des applications de stockage de données. Par ailleurs, il est accessible via une interface RESTful Web. Aussi, la latence d'accès aux données est de l'ordre de quelques millisecondes. S'il vous faut un temps de réponse en microsecondes, envisagez d'utiliser une base de données inmemory.
Cloudant : réseau de fourniture de données mondial Cloudant exploite la disponibilité, l'élasticité et la portée du Cloud pour créer un réseau de fourniture de données (DDN) mondial permettant aux applications d'évoluer à plus grande échelle tout en restant à disposition des utilisateurs où qu'ils se trouvent. CouchDB Stockage JSON, API, réplication HAProxy Equilibrage géographique de la charge Dynamo Mise en cluster, évolutivité, tolérance aux défaillances Cloudant Lucene Indexation et recherche de texte GeoJSON Indexation et interrogation géospatiales Jenkins Intégration continue Stockage de données de toutes structures en tant que documents JSON autodescriptifs. Distribution de copies de données accessibles en lecture ou en écriture dans différents emplacements ou dispositifs. Les utilisateurs lisent et écrivent la source de données disponible la plus proche. Synchronisation des données en continu via une réplication filtrée multi-maîtres. Intégration via une API RESTful. Mise à disposition de recherche en texte intégral, de services de géolocalisation et d'indexation flexible en temps quasi-réel. Surveillance et gestion pour vous 24h/24 7j/7 par des experts en Big Data. ADN de Cloudant Cloudant DBaaS a vu le jour et a évolué au cours de l'ère du Cloud. Cette solution a été conçue pour être élastique, hautement disponible, ainsi que pour gérer les types de données Web et mobiles populaires, notamment les données JSON, en texte intégral et géospatiales. Pour créer Cloudant, le meilleur code open source a été combiné à un leadership éclairé dans un DBaaS innovant, qui constitue la base de certaines des applications Web et mobiles les plus répandues. Par ailleurs, Cloudant apporte régulièrement sa participation au code de ces projets open source. Chef Gestion de la configuration Graphite & Riemann Surveillance Dynamo Consignation fédérée CollectD Collecte de mesures Figure 1 : Cloudant tire profit de la technologie avancée open source qui permet une compatibilité avec différents outils de développement, de plateformes et d'infrastructures d'application. Fonctionnement de la couche de données La couche de données de Cloudant est volumineuse : vos bases de données se développent dans cette couche, et non pas en dehors de celle-ci. Surveillance et déploiement permanents sont pour nous les maîtres-mots afin de répondre aux demandes de stockage et de performances collectives de nos clients. Les données d'application sont hébergées dans des bases de données logiques créées par vos soins. Cloudant stocke physiquement les données sur les nœuds de serveurs faisant partie de clusters à plusieurs utilisateurs ou à utilisateur unique. Nos clusters sont répartis sur un réseau mondial de centres de données. Cloudant DBaaS prend automatiquement en charge l'équilibrage des charges, la mise en cluster, la sauvegarde, l'expansion/la réduction des clusters, l'exécution de requêtes distribuées et la haute disponibilité. Au fur et à mesure que les charges de bases de données et d'utilisateurs augmentent, Cloudant adapte la couche de données pour vous afin de gérer la charge de travail. 3
Cloudant DBaaS permet un démarrage et une utilisation très simples. 1. Création d'un compte Cloudant DBaaS Avec Cloudant, nul besoin de choisir et de fournir du matériel, ni d'installer et de configurer des logiciels de DBMS et des équilibreurs de charges. Il vous suffit tout simplement de créer un compte gratuitement sur cloudant.com, et votre couche de données est prête. Une URL personnalisée vous est fournie, grâce à laquelle vous pouvez immédiatement créer des bases de données, ainsi que créer, lire, mettre à jour, supprimer et indexer des données. 2. Stockage de données JSON Cloudant est conçu pour stocker, indexer et générer des rapports sur les collections intégrales de documents JSON autodescriptifs. Si les bases de données SQL relationnelles n'ont pas de secret pour vous, considérez que les documents JSON s'apparentent aux lignes, et que les champs qu'ils contiennent s'apparentent aux colonnes. Lorsque vous activez votre compte Cloudant, vous devez choisir une plateforme physique (tel IBM Softlayer, etc.) ainsi qu'une zone géographique (p.ex. Etats-Unis, Europe, Asie, etc.) comme emplacement principal pour votre couche de données. En général, le choix s'effectue en fonction de l'emplacement auquel votre code d'application est hébergé afin de tirer profit de la cohabitation de l'application et de la couche de données. Vous pouvez transférer votre couche de données depuis un hébergeur vers un autre à tout moment. Création d'un compte à plusieurs utilisateurs par rapport à un compte à utilisateur unique Par défaut, votre couche de données sera hébergée sur un cluster à plusieurs utilisateurs, également utilisé par d'autres titulaires de compte à plusieurs utilisateurs. Les bases de données hébergées dans des clusters à plusieurs utilisateurs sont sécurisées et ne sont pas accessibles à d'autres utilisateurs Cloudant, sauf si vous avez explicitement concédé des autorisations de partage à d'autres utilisateurs, par exemple l'équipe de développement. Cloudant intègre des systèmes de gestion d'entrées-sorties optimisés qui garantissent que vos performances d'application ne sont pas affectées par des «voisins gênants». Pour les utilisateurs qui préfèrent des ressources de couche de données dédiées, Cloudant peut configurer des clusters à utilisateur unique sur un matériel dédié pouvant couvrir plusieurs centres de données ou fournisseurs de Cloud pour répondre à vos besoins de performances et de disponibilité spécifiques. Figure 2 : Les documents JSON s'apparentent aux lignes des bases de données relationnelles. Ils contiennent des types de champs tels les chiffres, chaînes, dates, opérateurs booléens, sous-structures, listes et pièces jointes. Cloudant attribue un identifiant distinctif (_id) à chaque document JSON. Les champs de document peuvent être des chiffres, des chaînes, des opérateurs booléens, des objets (p.ex. «fabricant»), des listes (p.ex. «balises»), des dates, des pièces jointes (vidéo, image ou autre type) etc. Il n'y a aucune limite au nombre d'éléments ou à la taille d'un document. Les champs de vos documents JSON définissent le schéma de vos bases de données Cloudant. Vous pouvez ajouter de nouveaux types de document en toute sécurité à une base de données ou modifier la structure du contenu de documents existants au besoin sans avoir à migrer les données, comme cela serait le cas pour une base de données SQL. Cette flexibilité de schéma fait de Cloudant la solution parfaite pour les données tels les catalogues de produit, les résultats d'expérience, les informations de gestion de contenu et autres, lesquels ne conviennent pas forcément à des schémas tabulaires, relationnels. Vous pouvez indexer ou interroger un champ quelconque dans tout document JSON de votre base de données. Les documents sont accessibles par HTTP à l'aide d'une API de services Web RESTful. L'accès à la base de données sera expliqué plus en détail ultérieurement dans ce livre blanc. 4
3. Indexation de vos données MapReduce incrémental et modulable Cloudant offre différentes possibilités pour indexer et interroger vos données. La première méthode consiste à créer dans la base de données des «documents de conception» spéciaux intégrant des fonctions MapReduce écrites en Javascript. La fonction Map définit les documents JSON appartenant à l'index et les champs à inclure depuis chaque document JSON membre. La fonction facultative Reduce permet, quant à elle, de définir une opération d'agrégation des données de l'index, par exemple, une somme, une moyenne, un comptage. Chaque document de conception (Design document) dispose d'une URL distincte. Lorsque vous y accédez à partir de l'application client, les données sont renvoyées depuis l'index (ou dans le sous-ensemble défini à l'aide d'un paramètre de requête facultatif dans l'url) du client au format JSON. Les index MapReduce sont mis à jour de façon incrémental. Cloudant distribue les fonctions MapReduce sur tous les nœuds de votre base de données. Les changements apportés aux documents JSON entraînent une mise à jour incrémental de l'index. Il n'est désormais plus demandé de reconstruire l'intégralité de l'index. Ainsi, la problématique des entréessorties pour la couche de données Cloudant est simplifiée, ce qui vous permet de réaliser des analyses de données plus rapidement, en temps quasi-réel. Pour améliorer vos performances et simplifier le développement, Cloudant lève la restriction impliquant qu'il n'y ait qu'une seule phase Map et une seule phase Reduce. Les requêtes MapReduce modulable permettent que la sortie d'une tâche MapReduce soit propagée à une chaîne de tâches MapReduce ultérieures. Par conséquent, il est possible de créer des analyses plus poussées plus rapidement et plus facilement. Indexation et recherche de texte intégral Lucene Pour gérer les recherches de texte intégral et flexibiliser l'interrogation ad-hoc des données JSON, Cloudant intègre l'indexation et la recherche de texte Apache Lucene à son infrastructure de stockage et d'évolutivité. Ainsi, l'indexation et l'interrogation de vos données JSON est plus riche grâce aux éléments suivants : Recherche classée : les résultats de la recherche sont classés par ordre de pertinence ou selon des critères de tri personnalisés. Types d'interrogation performants : notamment interrogations par expression, par caractères génériques, par proximité, recherches approximatives, interrogations par thèmes, et bien plus. Systèmes d'analyse spécifiques à la langue. Recherche à plusieurs critères et filtrage. Signets : pagination des résultats à l'instar des modèles de recherche Web. Indexation et interrogation géospatiales 2D et 3D basées sur GeoJSON L'assistance GeoJSON a également été intégrée dans Cloudant pour favoriser le développement de services de localisation haute précision, ce qui constitue une exigence de base pour les applications mobiles et de réseau de capteurs. Cloudant vous permet d'effectuer les tâches suivantes : Elaborer des requêtes à l'aide de polygones, rectangles, cercles ou ellipses de délimitation. Réaliser des recherches des plus proches voisins et des analyses prédictives en pistes causales. Stocker une multitude de types de données, notamment les géométries complexes et les métadonnées. Utiliser des bibliothèques éprouvées de systèmes de coordonnées (CRS) étant donné que Cloudant prend en charge ce type de système. 4. Accès aux données via une API JSON RESTful Grâce à l'api RESTful de Cloudant, chaque document de votre base de données Cloudant est accessible au format JSON via une URL. C'est l'une des fonctionnalités qui fait de Cloudant une solution particulièrement performante pour les applications Web et mobiles. Les documents JSON peuvent être récupérés, stockés ou supprimés de façon individuelle ou collective à l'aide des instructions GET, PUT, POST, DELETE sur HTTP(s). Cloudant chiffre toujours les données en vol. Dans Cloudant, des fichiers de tous types peuvent être joints aux documents JSON, ce qui facilite la gestion des supports, voire même du code. Les index stockés dans Cloudant en tant que documents «de conception» sont également accessibles par des requêtes GET du protocole HTTP. Ils renvoient des données JSON. L'exemple ci-dessous illustre une requête Cloudant RESTful qui accède à un document de conception (Design document) intitulé «product-catalog». La chaîne de requête facultative [Lucene] restreint le nombre de documents JSON renvoyés aux 10 premiers ayant un champ de catégorie contenant la valeur «electronics», un champ de marque contenant «XYZCorp» et un champ de prix ayant une valeur comprise entre 100 et 200 inclus : https://[username].cloudant.com/productsdb/_design/ views101/_search/product-catalog?q=category: electronics AND brand:xyzcorp AND price:[100 TO 500]&limit=10 L'API Cloudant est compatible avec Apache CouchDB. De ce fait, vous pouvez accéder à Cloudant à partir des bibliothèques de clients, des outils et des structures compatibles avec CouchDB et disponibles pour toutes les plateformes de développement majeures. 5
5. Réplication de vos données La réplication multi-maîtres permet à Cloudant de distribuer des réplicats de vos données accessibles en lecture (et en écriture) sur plusieurs centres de données, périphériques et fournisseurs de Cloud, tout en permettant la synchronisation des changements qui y sont apportés. Cela permet d'améliorer le temps de disponibilité et de réduire la latence d'accès en reliant les utilisateurs à la copie des données la plus proche. Les actions réalisées pour les données de votre base de données s'apparentent à celles qu'un réseau de distribution de contenu (CDN) réalise pour votre contenu statique. Nous pouvons comparer cela à l'architecture de réplication «maître-esclave» dans MongoDB et dans la plupart des bases de données relationnelles, dans lesquelles seule une réplique peut être mise à jour (goulot d'étranglement), toutes les autres étant en lecture seule. Les clients IBM utilisent la réplication pour : synchroniser les données mobiles ; incorporer les données dans des bases de données «périphériques», comme les magasins de données ou les tableurs, ce qui est un atout pour les projets analytiques indépendants ; permettre l'informatique hors ligne via des bases de données de réseau en étoile ; garder des copies de leurs bases de données Cloudant sur site : vos données ne sont jamais bloquées dans Cloudant. 6. Surveillance et visualisation Pour qu'ibm et ses clients puissent surveiller les performances de la couche de données, nous avons défini des API et des tableaux de bord pour recueillir et rapporter les mesures système. Cloudant génère 50 000 mesures par seconde. Vous n'avez pas besoin de maîtriser l'interprétation de ces informations car nous nous en occupons pour vous afin de maintenir le fonctionnement et la croissance homogènes de votre base de données. Si vous souhaitez consulter ces mesures par vous-même, vous pouvez accéder aux mesures de votre compte via le tableau de bord Cloudant ou par l'intermédiaire des API. Figure 3 : Les mesures des données sont facilement accessibles via le tableau de bord Cloudant. Evolutivité de Cloudant Infrastructure de mise en cluster horizontale dans le style de Dynamo En ce qui concerne la mise en cluster, Cloudant a puisé son inspiration dans le livre blanc d'amazon sur la mise en cluster de bases de données Dynamo. Cloudant a implémenté sa propre version de la mise en cluster, basée sur le quorum, sans maître, dans le style de Dynamo, en Erlang (langage spécifique conçu pour créer des applications parallèles). Celle-ci gère : l'adhésion des clusters ; l'acheminement et la coordination des interactions de bases de données ; la coordination des requêtes distribuées ; les appels de procédure à distance pour de meilleures performances et une plus grande résilience aux défaillances de nœuds en exécutant des tâches sur des nœuds à distance. Cohérence finale ajustable : La mise en cluster basée sur quorum vous permet de préciser le nombre de copies de données à stocker (aux fins de haute disponibilité) ainsi que de détailler le nombre à écrire sur le disque et le nombre devant correspondre pour que Cloudant puisse considérer que les données ont été correctement écrites ou qu'elles sont cohérentes. Les valeurs de quorum sont les suivantes : N, W et R. Par exemple, sur un cluster à 3 nœuds, vous pouvez décider de stocker N=3 copies de données, une copie par nœud. W=2 indique que Cloudant vous informera que les données sont correctement entrées à partir du moment où 2 copies ont été écrites. R=2 indique que Cloudant estimera qu'une copie de donnée lue est cohérente avec les autres si au moins 2 copies correspondent. 6
Les valeurs de quorum peuvent être modifiées afin d'ajuster les performances et la cohérence sur un environnement partitionné (c.-à-d. théorème CAP pour la cohérence, la disponibilité et le partitionnement). Par défaut, Cloudant procède à l'optimisation aux fins de disponibilité. Pour plus d'informations Pour plus d'informations, visitez le site https://cloudant.com/ File d'attente d'entrées-sorties (IOQ) Cloudant gère quotidiennement des milliards d'interactions entre des milliers de bases de données. La file d'attente d'entrées-sorties (IOQ) est une couche sophistiquée de hiérarchisation des entrées-sorties qui analyse la priorité de chaque demande d'entrée-sortie de base de données pour veiller à ce que chaque client soit équitablement traité dans la couche d'entrées-sorties. Elle veille à ce que les demandes à faible latence soient traitées en priorité, tout en faisant en sorte que les performances des entrées-sorties de faible priorité, comme la compression de base de données, soient bonnes. Figure 4 : La couche sophistiquée de hiérarchisation des entrées-sorties (file d'attente d'entrées-sorties) analyse la priorité de chaque demande d'entrée-sortie de base de données. Démarrer avec Cloudant Cloudant est disponible sous forme de Database-as-a-Service (DBaaS) intégralement géré, pour une allocation automatique de ressources (Provisioning) clé en main et une gestion sereine des données. Il se décline également sous la version Cloudant Local, qui met la puissance de Cloudant DBaaS au profit de la confidentialité de vos centres de données. Vous pouvez même combiner les bases de données Cloudant Local et Cloudant DBaaS gérées pour créer des bases de données de Cloud hybrides afin d'assurer un parfait équilibre des coûts, de la portée, des performances et du contrôle de conformité du Cloud. Pour cela, créez tout simplement un compte gratuit et démarrez sur https://cloudant.com 7
Copyright IBM Corporation 2014 Compagnie IBM France 17 avenue de l'europe 92275 Bois Colombes Cedex Imprimé en France Octobre 2014 IBM, le logo IBM et ibm.com sont des marques ou des marques déposées d'international Business Machines Corporation aux Etats-Unis et/ou dans certains autres pays. Si ces marques et d'autres marques d'ibm sont accompagnées d'un symbole de marque ( ou ) lors de leur première occurrence, ces symboles signalent des marques d'ibm aux Etats-Unis à la date de publication de ce document. Ces marques peuvent également exister et éventuellement avoir été enregistrées dans d'autres pays. La liste actualisée de toutes les marques d'ibm est disponible sur la page Web «Copyright and trademark information» à l'adresse ibm.com/legal/copytrade.shtml. Les autres noms de produits, de sociétés et de services peuvent appartenir à des tiers. Le présent document est en vigueur à compter de la date de publication. Il peut être modifié à tout moment par IBM. Les offres ne sont pas toutes disponibles dans les pays où IBM est implanté. Les données de performance et les exemples de clients cités sont présentés uniquement à des fins d'illustration. Les performances réelles peuvent varier en fonction des configurations spécifiques disponibles et des conditions d'utilisation. Il est de la responsabilité de l'utilisateur d'évaluer et de vérifier le fonctionnement de tous les autres produits ou programmes avec ceux d'ibm. TOUTES LES INFORMATIONS DU PRESENT DOCUMENT SONT FOURNIES «EN L'ETAT», SANS AUCUNE GARANTIE DE QUELQUE NATURE QUE CE SOIT, EXPRESSE OU IMPLICITE, Y COMPRIS TOUTE GARANTIE DE QUALITE MARCHANDE, D'ADEQUATION A UN USAGE PARTICULIER OU DE NON-CONTREFACON. Les produits IBM sont garantis conformément aux conditions des accords selon lesquels ils sont fournis. Recyclable IMW14781-FRFR-02