Un jour un projet : Ting

La série Un jour Un projet continue avec aujourd’hui l’ouverture d’un de mes projets préférés : Ting.

ting_2

L’essence de Ting

Ting est un DataMapper en PHP, conçu pour fonctionner avec Mysql & PostgreSQL. Ses principales caractéristiques sont :

  • Peu d’overhead
  • Utilisation des fonctions mysqli / pg_ natives de PHP
  • Pour Mysql : Tire parti du driver mysqlnd pour récupérer de nombreuses informations lors d’une requête
  • Pas de format intermédiaire / d’abstraction : vous écrivez des requêtes natives
  • Support des masters / slaves
  • Support de cache de requêtes (actuellement seulement memcached, les autres drivers ne demandent qu’à être implémentés)
  • Support de l’hydratation partielle d’objets (je sélectionne ce dont j’ai besoin dans ma requête)
  • Bon taux de couverture par les tests unitaires (grâce au framework de test atoum)

Aujourd’hui nous ouvrons au public le projet ting. Seront ouverts sous peu les projets ting_bundle (intégration dans symfony) et ting_user_bundle (implémentation de FosUserBundle pour Ting).

A noter, j’ai bien précisé qu’il s’agissait d’un DataMapper et non d’un ORM. En effet, il s’agit d’un choix fort lié à la conception de ce produit. A mon sens, la complexité (et dont le surcoût) de ce type d’outil vient souvent de la couche relationnelle, dont on peut aisément se passer – si cela vous intéresse, les recherches « ORM anti-pattern » ou « ORM are evil » vous donneront plein de ressources passionnantes à ce sujet. En réalité, Ting vient combler le trou qu’il existait entre le « full ORM » – magie et overhead inclus – et le « full PDO » – huile de coude et duplication de code, en permettant de manipuler facilement des objets et en évitant un overhead trop important.

Cela nous permet surtout de respecter les critères de performances en vigueur chez nous, indispensables dans notre contexte de très forte charge – due à notre position de leader français sur internet.

C’est fiable ?

Oui, très.

La réponse est un peu facile et semble peu argumentée, cependant nous avons déjà certains produits qui l’utilisent en production. Par exemple Ting a été déployé sur L’internaute dictionnaire il y a plusieurs mois, ce qui doit déjà représenter quelques millions de requêtes exécutées.

La roadmap de Ting :

Il n’y a pas de dates pré-établies pour la sortie de nouvelles versions. Cependant le projet est aujourd’hui assez mature. La version actuelle est la 2.5.0 et nous travaillons actuellement à préparer la version 3.0 avec les nouvelles fonctionnalités suivantes:

  • Support de PHP 7 (quelques noms de classes désormais réservés nous posent problème)
  • Ajout d’un QueryBuilder (susceptible de modifier légèrement les interfaces)
  • Support d’un outil de migration de schéma externe (liquibase ou phinx, c’est à définir)

Cette roadmap n’est pas figée, cependant une version 2.6.0 sera peut-être publiée avant la sortie de la 3.0 qui devrait intervenir d’ici la fin de l’année.

J’en profite pour remercier spécialement Sylvain qui travaille avec moi depuis le début sur ce projet et qui fait vraiment un super boulot.

En savoir plus :

Vous aimerez aussi...

1 réponse

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *