Brevet FR3050553A1 (20171027)
REVENDICATIONS1. Système de base de données, comprenant une pluralité de dispositifs informatiques (4) et un allocateur (6) agencé pour répartir les données de la base de données sur les dispositifs informatiques (4), caractérisé en ce que les dispositifs informatiques (4) sont chacun désignés par un indice d'hôte et comprennent chacun une mémoire vive, en ce que l' allocateur (6) est agencé : - pour organiser une pluralité d'espaces indexés sur chaque mémoire vive, et pour organiser une partie au moins des données de la base de données en morceaux ayant un indice de morceau, - pour définir une pluralité de séquences distinctes entre elles comprenant chacune une pluralité de couples dont le nombre est égal au nombre de dispositifs informatiques (4), chaque couple associant une valeur de rang unique et un indice d'hôte, - pour maintenir une liste des dispositifs informatiques (4) fonctionnels au cours du temps, pour associer chaque morceau à une séquence de la pluralité de séquences, sur la base de la liste des dispositifs informatiques (4) fonctionnels, de sorte que, pour deux morceaux ayant respectivement un premier indice de morceau et un deuxième indice de morceau tels que la différence entre le premier indice de morceau et le deuxième indice de morceau est égale au nombre de séquences de la pluralité de séquences, une séquence donnée de la pluralité de séquences est associée à un unique morceau dont l'indice de morceau est compris entre le premier indice de morceau et le deuxième indice de morceau, - pour définir, pour un morceau d'indice de morceau donné, parmi la liste des dispositifs informatiques (4) fonctionnels, un espace maître sur le dispositif informatique (4) dont l'indice d'hôte est associé au rang le plus bas dans la séquence associée au morceau donné, l'espace maître étant choisi sur le dispositif informatique (4) comme l'espace dont l'indice correspond à l'indice de morceau donné, 3050553 19 - pour définir, pour un morceau d'indice de morceau donné, parmi la liste des dispositifs informatiques (4) fonctionnels, une pluralité d'espaces esclaves, choisis sur des dispositif informatiques (4) de telle manière que la somme de rangs associés aux indices d'hôtes de ces dispositifs informatiques (4) dans la 5 séquence associée au morceau donné est minimale, chaque espace esclave étant choisi sur le dispositif informatique (4) respectif comme l'espace dont l'indice correspond à l'indice de morceau donné, et en ce que les dispositifs informatiques (4) sont en outre agencés de telle sorte qu'un dispositif informatique (4) qui reçoit un espace maître réplique les 10 données du morceau associé sur les espaces esclaves correspondants.\n<CLM>\1\tSystème selon la revendication 1, dans lequel l'allocateur (6) est agencé pour définir un nombre d'espaces esclaves inférieur au nombre de dispositifs informatiques (4) moins un. 15\n<CLM>\1\tSystème selon l'une des revendications précédentes, dans lequel l'allocateur (6) est agencé pour définir, parmi la pluralité d'espaces esclaves associés à un morceau donné, un ensemble d'espaces esclaves critiques et un ensemble d'espaces esclaves de tolérance, et dans lequel l'espace maître associé à un 20 morceau donné est agencé pour confirmer l'écriture d'une donnée relative au morceau donné uniquement lorsque cette donnée a été répliquée sur l'ensemble d'espaces esclaves critiques du morceau donné.\n<CLM>\1\tSystème selon la revendication 1, dans lequel l'allocateur (6) est agencé pour 25 définir la pluralité de séquences distinctes et pour associer chaque morceau à une séquence de la pluralité de séquences en initialisant, pour chaque indice de morceau, un indice d'hôte avec l'indice de morceau modulo le nombre de dispositifs informatiques, et en répétant autant de fois que le nombre de dispositifs informatiques une séquence dans laquelle : 30 - si l'indice d'hôte est déjà associé à l'indice de morceau, redéfinir l'indice d'hôte en lui ajoutant un et en réalisant sur le nombre obtenu une 3050553 20 opération modulo le nombre de dispositifs informatiques (4), jusqu'à trouver un indice d'hôte qui n'est pas déjà associé à l'indice de morceau, - l'indice de morceau est associé à l'indice d'hôte, et à un rang dont la valeur est tirée de l'itération de la séquence, 5 - l'indice d'hôte est redéfini en lui ajoutant la valeur un ainsi que l'indice de morceau modulo le résultat de la soustraction d'un entier naturel au nombre de dispositifs informatiques, et en réalisant sur le résultat de ces additions une opération modulo le nombre de dispositifs informatiques (4), ledit entier naturel étant le même pour toutes les 10 répétitions de la séquence et choisi de sorte que le nombre de dispositifs informatiques (4) et le nombre de dispositifs informatiques (4) moins ledit entier naturel sont premiers entre eux.\n<CLM>\1\tSystème selon l'une des revendications 1 à 4, dans lequel l'allocateur (6) est 15 agencé pour définir la pluralité de séquences distinctes sur la base d'une pluralité de couples distincts associant un indice d'initialisation compris entre 0 et le nombre de dispositifs informatiques (4), et un indice de parcours compris entre 1 et le nombre de dispositifs informatiques (4) moins un, chaque séquence distincte étant générée initialisant un indice d'hôte avec l'indice d'initialisation, 20 et en répétant autant de fois que le nombre de dispositifs informatiques (4) une séquence dans laquelle : - si l'indice d'hôte est déjà associé à l'indice de morceau, redéfinir l'indice d'hôte en lui ajoutant un et en réalisant sur le nombre obtenu une opération modulo le nombre de dispositifs informatiques (4), jusqu'à trouver un 25 indice d'hôte qui n'est pas déjà associé à un rang, - l'indice d'hôte est associé à un rang dont la valeur est tirée de l'itération de la séquence, - l'indice d'hôte est redéfini en lui ajoutant la valeur de l'indice de parcours, et en réalisant sur le résultat de cette addition une opération modulo le 30 nombre de dispositifs informatiques (4). 3050553 21\n<CLM>\1\tProcédé de gestion de base de données, comprenant la répartition des données de la base de données sur une pluralité de dispositifs informatiques (4), comprenant les opérations suivantes : (a) associer un indice d'hôte à chaque dispositif informatique (4), 5 (b) organiser une pluralité d'espaces indexés sur la mémoire vive de chaque dispositif informatique (4), (c) organiser une partie au moins des données de la base de données en morceaux ayant un indice de morceau, (d) définir une pluralité de séquences distinctes entre elles comprenant chacune 10 une pluralité de couples dont le nombre est égal au nombre de dispositifs informatiques (4), chaque couple associant une valeur de rang unique et un indice d'hôte, (e) associer chaque morceau à une séquence de la pluralité de séquences, sur la base de la liste des dispositifs informatiques (4) fonctionnels, de sorte que, pour 15 deux morceaux ayant respectivement un premier indice de morceau et un deuxième indice de morceau tels que la différence entre le premier indice de morceau et le deuxième indice de morceau est égale au nombre de séquences de la pluralité de séquences, une séquence donnée de la pluralité de séquences est associée à un unique morceau dont l'indice de morceau est compris entre le 20 premier indice de morceau et le deuxième indice de morceau, en (el) définissant, pour un morceau d'indice de morceau donné, parmi la liste des dispositifs informatiques (4) fonctionnels, un espace maître sur le dispositif informatique (4) dont l'indice d'hôte est associé au rang le plus bas dans la séquence associée au morceau donné, l'espace maître 25 étant choisi sur le dispositif informatique (4) comme l'espace dont l'indice correspond à l'indice de morceau donné, (e2) définissant, pour un morceau d'indice de morceau donné, parmi la liste des dispositifs informatiques (4) fonctionnels, une pluralité d'espaces esclaves, choisis sur des dispositif informatiques (4) de telle 30 manière que la somme de rangs associés aux indices d'hôtes de ces dispositifs informatiques (4) dans la séquence associée au morceau donné est minimale, chaque espace esclave étant choisi sur le dispositif 3050553 22 informatique (4) respectif comme l'espace dont l'indice correspond à l'indice de morceau donné, (f) stocker les données de chaque morceau donné sur l'espace maître qui lui est associé, 5 (g) répliquer les données stockées sur les espaces maîtres sur les espaces esclaves correspondants.\n<CLM>\1\tProcédé selon la revendication 6, dans lequel l'opération (e2) comprend la définition d'un nombre d'espaces esclaves inférieur au nombre de dispositifs 10 informatiques (4) moins un.\n<CLM>\1\tProcédé selon l'une des revendications 6 et 7, dans lequel l'opération (e2) comprend la définition, parmi la pluralité d'espaces esclaves associés à un morceau donné, un ensemble d'espaces esclaves critiques et un ensemble 15 d'espaces esclaves de tolérance, et comprenant en outre l'opération (h) confirmer l'écriture d'une donnée relative à un morceau donné uniquement lorsque l'espace maître associé au morceau donné a répliqué cette donnée sur l'ensemble d'espaces esclaves critiques du morceau donné. 20\n<CLM>\1\tProcédé selon l'une des revendications 6 à 8, dans lequel les opérations (d) et (e) sont réalisées : - en initialisant, pour chaque indice de morceau, un indice d'hôte avec l'indice de morceau modulo le nombre de dispositifs informatiques, et - en répétant autant de fois que le nombre de dispositifs informatiques une 25 séquence dans laquelle : - si l'indice d'hôte est déjà associé à l'indice de morceau, redéfinir l'indice d'hôte en lui ajoutant un et en réalisant sur le nombre obtenu une opération modulo le nombre de dispositifs informatiques (4), jusqu'à trouver un indice d'hôte qui n'est pas déjà associé à l'indice de morceau, 30 - l'indice de morceau est associé à l'indice d'hôte, et à un rang dont la valeur est tirée de l'itération de la séquence, 3050553 23 - l'indice d'hôte est redéfini en lui ajoutant la valeur un ainsi que l'indice de morceau modulo le résultat de la soustraction d'un entier naturel au nombre de dispositifs informatiques, et en réalisant sur le résultat de ces additions une opération modulo le nombre de dispositifs 5 informatiques (4), ledit entier naturel étant le même pour toutes les répétitions de la séquence et choisi de sorte que le nombre de dispositifs informatiques (4) et le nombre de dispositifs informatiques (4) moins ledit entier naturel sont premiers entre eux. 10\n<CLM>\1\tProcédé selon l'une des revendications 6 à 8, dans lequel l'opération (d) comprend : (dl) définir une pluralité de couples distincts associant un indice d'initialisation compris entre 0 et le nombre de dispositifs informatiques (4), et un indice de parcours compris entre 1 et le nombre de dispositifs informatiques (4) moins un, 15 (d2) pour chaque couple distinct, initialiser un indice d'hôte avec l'indice d'initialisation, et répéter autant de fois que le nombre de dispositifs informatiques les opérations suivantes : (d21) si l'indice d'hôte est déjà associé à l'indice de morceau, redéfinir l'indice d'hôte en lui ajoutant un et en réalisant sur le nombre obtenu une 20 opération modulo le nombre de dispositifs informatiques (4), jusqu'à trouver un indice d'hôte qui n'est pas déjà associé à un rang, (d22) associer l'indice d'hôte à un rang dont la valeur est tirée du nombre de répétitions de l'opération (d2) déjà réalisées pour le couple distinct courant, 25 (d23) redéfinir l'indice d'hôte en lui ajoutant la valeur de l'indice de parcours, et en réalisant sur le résultat de cette addition une opération modulo le nombre de dispositifs informatiques (4).\n<CLM>\1\tProduit de programme d'ordinateur comprenant des portions de code de 30 programme pour mettre en oeuvre le dispositif selon l'une des revendications 1 à 5 ou le procédé selon l'une des revendications 6 à 10 lorsque ledit programme est exécuté sur un ordinateur.