Quand Oracle a présenté sa solution Big Data Appliance (alliant matériel et logiciel), sur OpenWorld 2011 début octobre, il a précisé qu'il la livrait avec « R », le langage d'analyse statistique Open Source, ainsi qu'avec une base de données NoSQL maison. A l'évocation de cette dernière, la plupart des regards ont convergé vers Berkeley DB. En février dernier, Oracle avait effectivement expliqué comment la base Open Source (en 2006, il avait racheté la société Sleepycat Software qui la gérait) pouvait être utilisée comme une solution NoSQL (voir «Using Oracle Berkeley DB as a NoSQL Data Store »).

A l'issue d'OpenWorld, Charles Lamb, l'un des anciens de Sleepycat, désormais membre de l'équipe technique d'Oracle, a jugé utile d'apporter, sur le blog officiel qu'il tient, quelques précisions sur cette base de données capable de manipuler d'importants volumes. « J'ai consulté les commentaires de la Twitter-sphere au sujet d'Oracle NoSQL Database. Il y a un certain nombre de questions et d'idées fausses qui circulent auxquelles j'apporte ici une réponse », y écrit-il.

Selon lui, la première idée fausse est qu'Oracle NoSQL Database se résumerait à la version Java Edition de Berkeley DB (BDB) simplement rebaptisée. Ou encore, que le produit ne serait qu'une BDB avec quelques petites choses en plus. « Lorsque nous avons bâti NoSQL Database, nous avons constaté que Berkely DB Java Edition HA [high availability] disposait de nombreuses caractéristiques pour effectuer du stockage NoSQL, mais que cela ne suffisait pas », relate Charles Lamb. Il énumère ce que JE/HA apporte : des transactions caractérisées ACID (atomicité, cohérence, isolation, durabilité), la persistance, la haute disponibilité, le support des débits élevés et des grandes capacités et l'administration à distance. « Et l'on peut même considérer que son modèle de données clé/valeur est déjà NoSQL », ajoute-t-il. « Mais nous estimons que NoSQL signifie davantage pour la plupart des gens. » Par exemple : la distribution des données et leur découpage dynamique (aussi appelé « sharding »), la répartition de charges, la surveillance et l'administration, des temps de latence prévisibles et un backup multi-noeuds.

Une API différente et des liaisons réseaux

Si la base de données NoSQL présentée par Oracle utilise effectivement BDB JE/HA comme système de stockage sous-jacent («pourquoi  réinventer la roue ? » souligne à cet égard Charles Lamb), elle bénéficie au-dessus d'une infrastructure complémentaire importante pour la faire entrer dans l'univers NoSQL.

Par ailleurs, la base Oracle NoSQL ne présente pas la même API (interface de programmation) que BDB JE, poursuit le consultant technique d'Oracle. L'interface est Java et elle procure pour les paires clé/valeur les fonctions CRUD (create, read, update and delete), l'itération et des capacités CAS (Compare and swap ou RMW, Read Modify Write), indique-t-il en détaillant plus avant dans son billet.

Charles Lamb aborde enfin un troisième point, relevé parmi les commentaires diffusés, selon lequel Oracle aurait ajouté à la base Berkeley DB Java la possibilité de configurer des liaisons réseaux avant de la renommer Oracle NoSQL. L'auteur de cette remarque s'interroge aussi sur la facilité de configuration et de développement. Sur ce deuxième point, le consultant technique d'Oracle explique qu'il est possible de lancer une version 'single process' (single-node) d'Oracle NoSQL Database, par invocation d'une simple ligne de commande, afin de tester l'API sans trop se compliquer la vie.

Enfin, sur la question des liaisons réseaux, il préfère une autre formulation. « BDB JE HA permet à un utilisateur de réaliser des opérations soit sur le « master » (pour les mises à jour et la lecture), soit sur les « replicas » (pour la lecture). L'objection la plus courante que nous rencontrons est que l'application doit « savoir » quels sont les noeuds où se trouvent le master et les replicas (pour router les mises à jour et lire les requêtes de façon appropriée). Il n'y a pas de couche réseau dans BDB JE/HA pour le faire, tandis qu'Oracle NoSQL Database le permet », conclut-il en expliquant comment procéder.

Oracle NoSQL Database (Request Processing) (Oracle NoSQL Database/Source Oracle - cliquer ici pour agrandir)

Oracle NoSQL Database (Architecture)
(Oracle NoSQL Database/Source Oracle - cliquer ici pour agrandir)