organisation de l'information

Base de données SQL non relationnelles et bases non SQL relationnelles

Toutes les bases de données ne fonctionnent pas de la même façon.

Une base de données relationnelle est une base de données dans laquelle les informations sont liées et hiérarchisées grâce à l’algèbre relationnel et reposant sur les notions théoriques de Edgar Franck Codd. Pour interroger les bases de données relationnelles, on utilise un langage dédié qui se base lui aussi sur les règles de l’algèbre relationnel : il s’agit du SQL. Dans les faits, la plupart des bases de données SQL sont relationnelles.

Mais il existe d’autres types de bases de données (hiérarchique, réseau, objet) qui ne se basent pas sur le modèle « relationnel » et qui utilisent des langages autres que le SQL. Il existe aussi certaines passerelles ou fonctionnalités transverses pour pouvoir interroger des bases non relationnelles avec du SQL. C’est le cas par exemple pour :

  • Teradata Aster, base de données graphes qui supporte le SQL ;
  • Oracle Spatial and Graph qui utilise un langage de requête ressemblant au SQL ;
  • OrientDB est un SGBD noSQL mais peut néanmoins utiliser, dans une certaine limite, le SQL ;
  • Neo4j, base de données graphes qui utilise Cypher, langage « SQL-Like » ;
  • Arango, base de données noSQL de type graphes et documents utilisant AQL, langage proche de SQL ;
  • Foundation DB peut interroger ses données non relationnelles avec une variante de SQL ;
  • Apache Hive, infrastructure d’entrepôt de données Hadoop utilise HiveQL, langage similaire au SQL.

À l’inverse, il existe aussi des bases de données relationnelles qui ne s’interrogent pas avec le SQL. Même si le SQL est le standard aujourd’hui pour les bases de données relationnelles, il existe des irréductibles qui utilisent d’autres langages : Pick et ses dérivés, TurboIMAGE, dBase et ses dérivés, Dataphor, C-ISAM et ses dérivés. À noter aussi que les premières versions de certains SGBDR qui aujourd’hui utilisent le SQL ne l’utilisait pas au début : Ingres, Postgres.