Dans la finance, les progiciels financiers gèrent des volumes de données énormes. Et souvent pour des raisons de sécurité, les données doivent être réparties sur plusieurs sites physiques. Imaginez si une banque privé ou un headgefund perdait ses données dans un incendie… Chez nous, notre produit historique est capable de gérer des données multi-sites (multi entities en anglais). Depuis que nous avons commencé à migrer vers une architecture SOA basée sur Java, l’accès aux données s’effectue via un ORM (Hibernate). J’ai trouvé ce matin sur le blog de Xebia qu’Hibernate dispose d’un module permettant d’adresser le partitionnement des données horizontales: Hibernate Shards.
Hibernate Shards (fragements en anglais) était à l’origine un projet de Google.
C’est une extension d’Hibernate Core conçu pour encapsuler et minimiser
la complexité de travailler avec des données fragmentées (horizontalement partitionnées).
L’API est assez simple et nécessite Java 5 minimum.
Si vous connaissez les interfaces par défaut d’Hibernate qui sont:
org.hibernate.SessionFactory
org.hibernate.Criteria
org.hibernate.Query
Hibernate Shards ajoute les objets suivants qui permettent d’interagir avec les données:
org.hibernate.shards.session.ShardedSession
org.hibernate.shards.ShardedSessionFactory
org.hibernate.shards.criteria.ShardedCriteria
org.hibernate.shards.query.ShardedQuery
Cependant chaque application Java étant architecturée différemment, Shards propose aussi des classes supplémentaires qui vous permettront de mettre en place votre stratégie de partitionnement personnalisée.
org.hibernate.shards.strategy.selection.ShardSelectionStrategy
org.hibernate.shards.strategy.resolution.ShardResolutionStrategy
org.hibernate.shards.strategy.access.ShardAccessStrategy
Hibernate Shards permet aussi de mettre en place ce que l’on appelle la « refragmentation »(resharding). Imaginez que vous créer votre site de ventes aux enchèeres ou de rencontre. La base de données explose car votre site a du succès. Grâce à ce concept vous pourrez mettre en place des bases supplémentaires sans trop de soucis… Attention c’est loin d’être facile mais c’est faisable.