Framework qui charge la DB en mémoire .. vos expériences ?
Bonjour,
je développe des frameworks depuis 15 ans professionnellement (et avant pour le fun). Quand je dis "des", c'est que dans les 3 entreprises ou je suis passé, j'ai dû développer "mon" framework.
Le principe ou j'en suis arrivé, c'est de tout charger en mémoire ; je le fais avec succès depuis 10 ans, les limites mémoires de mes projets ont eu la chance d'être réglées par l'évolution hardware.. 4 Go aujourd'hui, c'est rien !
J'ai commencé par utiliser Hibernate.. enfin une partie d'Hibernate pour charger les données (pour moi ça se limitait à faire select * from matable), pas de jointure... donc Hibernate est devenu très vite un bottleneck, que j'ai fini par redévelopper pour faire la même chose en optimisé pour mes besoins.
Toutes les API de cache que j'ai trouvées sont du cache partiel, et donc ils mémorisent pour chaque object des dates de dernier accès, etc.. etc.. bref, sur 1 millions d'objets en mémoire, ça fait vite beaucoup de choses "Inutiles".
Je fais essentiellement des extranets de gestion de produits.. les produits ont donc une arborescence de composants et chacun a ses propriétés, ses images, ses documents, etc.. bref un parcours d'arbre en mémoire est tellement facile à développer, maintenir et rapide.. Surtout quand vous devez retrouver par exemple tous les couples de cadran, aiguille différents qui vont sur les montres qui ont un mouvement mécanique (la requête SQL devient vite lourde).
bref, pourquoi je vous raconte tout ça ? Car je suis un peu le seul "créateur" dans mon entreprise, j'ai 10 développeurs sous mes ordres qui utilisent mon framework comme si c'était normal...
J'ai atteint un niveau de sophistication assez poussé (j'ai des index, des clés, des relations, etc.. ) .. bref un cache qui ressemble à une base de données en fait.
Le seul problème, c'est la consommation mémoire. Je suis souvent obligé d'utiliser la base de données qui est standard chez mes clients, et, helas, c'est souvent Oracle qui est pour moi, très lent.
Bref, qui a de l'expérience dans ce genre de framework ? Je doute être le seul à mettre tout le catalogue produits en mémoire ... je charge facilement plusieurs Go de données en mémoire au démarrage du serveur.
Voilà, je cherche donc des développeurs avec qui échanger sur le sujet et partager nos expériences...
J'aimerais bien utiliser terracotta dans le but, par exemple, d'avoir un socle commun (une jvm pour gérer les utilisateurs, clients, etc..) à mon portail et que chaque application du portail tourne dans sa propre JVM et puisse utiliser des objets du socle commun.