{"id":53,"date":"2011-07-24T00:50:15","date_gmt":"2011-07-23T22:50:15","guid":{"rendered":"http:\/\/blog.nebule.org\/?p=53"},"modified":"2016-03-29T19:05:28","modified_gmt":"2016-03-29T17:05:28","slug":"reperage-chronologique","status":"publish","type":"post","link":"https:\/\/blog.nebule.org\/?p=53","title":{"rendered":"Rep\u00e9rage chronologique"},"content":{"rendered":"<p>Comment retrouver rapidement les objets r\u00e9cemment cr\u00e9\u00e9s?<\/p>\n<p>La m\u00e9thode habituelle, la premi\u00e8re \u00e0 laquelle on pense, c&rsquo;est de parcourir l&rsquo;int\u00e9gralit\u00e9 des objets afin de v\u00e9rifier le(s)quel(s) sont r\u00e9cents.<\/p>\n<p>Oui mais&#8230;<!--more--><\/p>\n<p>Oui mais \u00e7a marche bien si on a relativement peu d&rsquo;objets \u00e0 parcourir, quelques centaines ou milliers. Mais si on en a des dizaines de milliers? Des millions?<\/p>\n<p>De fa\u00e7on d\u00e9tourn\u00e9e, la fonction d&rsquo;oubli va un peu aider en supprimant les objets non utiles ou peu pertinents. Mais cette oubli volontaire n&rsquo;est jamais total, il reste toujours des objets que l&rsquo;on sait que l&rsquo;on gardera ad vitam eternam. Donc le nombre d&rsquo;objets grossira in\u00e9vitablement avec le temps. Nous ne pouvons pas compter que sur l&rsquo;oubli pour nous aider \u00e0 trier les objets.<\/p>\n<p>Une autre m\u00e9thode est d&rsquo;entretenir des listes pr\u00e9-remplies par p\u00e9riode de temps, bref des groupes (d&rsquo;objets) ayants pour point commun un espace de temps voisin.<\/p>\n<p>Ces espaces de temps peuvent \u00eatre contigu\u00ebs et de p\u00e9riodicit\u00e9 constante. Dans ce cas quelle p\u00e9riodicit\u00e9 trouver? Trop longue et on perd la capacit\u00e9 imm\u00e9diate de trier les objets r\u00e9cents et tr\u00e8s r\u00e9cents. Trop courte et l&rsquo;on se retrouve avec un nombre innombrable de groupes et qui s&rsquo;accro\u00eet rapidement dans le temps&#8230;<\/p>\n<p>Et si les groupes repr\u00e9sentaient des espaces de temps contigu\u00ebs mais de dur\u00e9es variables? Par exemple des espaces de temps assez courts pour ce qui est r\u00e9cent, et beaucoup plus longs pour les objets beaucoup plus anciens.<\/p>\n<p>Cela donne un d\u00e9coupage de cette forme :<br \/>\n&#8211; 1 seconde<br \/>\n&#8211; 1 minute (60 secondes)<br \/>\n&#8211; 1 heure (60 minutes)<br \/>\n&#8211; 1 jour (24 heures)<br \/>\n&#8211; 1 semaine (7 jours)<br \/>\n&#8211; 1 mois (30 jours)<br \/>\n&#8211; 1 an (12 mois)<\/p>\n<p>Nous r\u00e9pondons maintenant au probl\u00e8me de base.<\/p>\n<p>Nous classons les objets dans les groupes <em>plus vieux que <strong>1 seconde<\/strong><\/em>, <em>plus vieux que <strong>1 minute<\/strong><\/em>, <em>plus vieux que <strong>1 heure<\/strong><\/em>, etc&#8230; a raison de la pr\u00e9sence d&rsquo;un objet dans un seul et unique groupe, le plus r\u00e9cent.<\/p>\n<p>Mais en changeant la p\u00e9riodicit\u00e9 par d\u00e9faut des groupes, on se confronte \u00e0 un nouveau probl\u00e8me. Comment faire basculer les objets d&rsquo;un groupe \u00e0 l&rsquo;autre? A quel moment faire cette bascule? Doit-on basculer int\u00e9gralement tout un groupe vers un autre?<\/p>\n<p>Prenons un exemple. On bascule le 1er mars vers le groupe du <em>plus vieux que 1 semaine<\/em> tous les objets de la derni\u00e8re semaine de f\u00e9vrier. Pendant ce temps, des objets du groupe <em>plus vieux que 1 semaine<\/em> (derni\u00e8re semaine de janvier) ont bascul\u00e9s vers le groupe <em>plus vieux que 1 mois<\/em>. Or, comment fait-on pour d\u00e9terminer que tel objet n&rsquo;est plus dans le bon groupe et doit basculer, si ce n&rsquo;est de tous les parcourir? \u00e0 tous les niveaux&#8230;<\/p>\n<p>Nous voyons avec cet exemple que nous ne pouvons pas g\u00e9rer les objets directement sur la r\u00e9f\u00e9rence de temps en cours parce que la d\u00e9cision de migration se fait sur la r\u00e9f\u00e9rence de temps sup\u00e9rieur. Nous devons garder plus de granularit\u00e9.<\/p>\n<p>Ainsi, naturellement, nous allons g\u00e9rer les objets dans plusieurs groupes pour une r\u00e9f\u00e9rence de temps. C&rsquo;est \u00e0 dire que si il faut 60 minutes pour faire une heure nous utiliserons 59 groupes allant de <em>1 minute<\/em> \u00e0 <em>59 minutes<\/em>, le groupe <em>60 minutes<\/em> \u00e9tant en fait le groupe <em>1 heure<\/em>, etc&#8230; Toutes les minutes, automatiquement, sans distinction, tous les objets d&rsquo;un groupe (minute) passent au groupe sup\u00e9rieur. Pareil toutes les secondes pour les groupes <em>secondes<\/em>, toutes les heures pour les groupes <em>heures<\/em>, tous les jours pour les groupes <em>jours<\/em>, etc&#8230;<\/p>\n<p>Nous perdons un peu de pr\u00e9cision sur cette recherche acc\u00e9l\u00e9r\u00e9e des objets. Le groupe <em>1<\/em> a la pr\u00e9cision temporel de la r\u00e9f\u00e9rence de temps inf\u00e9rieur. Les autres groupes ont une pr\u00e9cision de plus ou moins leur r\u00e9f\u00e9rence de temps. Cela para\u00eet grand, mais en fait c&rsquo;est suffisant pour l&rsquo;utilisation que l&rsquo;on en a je pense.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment retrouver rapidement les objets r\u00e9cemment cr\u00e9\u00e9s? La m\u00e9thode habituelle, la premi\u00e8re \u00e0 laquelle on pense, c&rsquo;est de parcourir l&rsquo;int\u00e9gralit\u00e9 des objets afin de v\u00e9rifier le(s)quel(s) sont r\u00e9cents. Oui mais&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[99,111,24],"tags":[150,194,252,288],"_links":{"self":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/53"}],"collection":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=53"}],"version-history":[{"count":1,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/53\/revisions"}],"predecessor-version":[{"id":2382,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/53\/revisions\/2382"}],"wp:attachment":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}