Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Cardinality estimation (hll)

Dernière mise à jour :Oct 10, 2026

L'extension hll fournit le type de données HyperLogLog. Ce type permet d'estimer rapidement des métriques métier telles que les pages vues (PV) et les visiteurs uniques (UV).

Prérequis

  • La version majeure de votre instance RDS est PostgreSQL 11 ou ultérieure.

  • Si la version majeure de votre instance répond aux exigences mais que la fonctionnalité n'est pas prise en charge, mettez à niveau la version mineure du moteur. Pour plus d'informations, consultez Mise à niveau de la version mineure du moteur.

Informations générales

L'extension hll prend en charge HyperLogLog (hll), un type de données de longueur variable semblable à un ensemble. Il renvoie une approximation des valeurs distinctes avec un degré de précision spécifié. Par exemple, un type de données hll de 1 280 octets peut estimer des dizaines de milliards de valeurs distinctes avec une grande précision. L'extension hll convient aux secteurs tels que l'analyse publicitaire sur Internet qui nécessitent ce type d'estimation. Elle permet d'estimer rapidement des métriques métier comme les PV et les UV.

Pour plus d'informations sur l'utilisation de l'extension hll, consultez postgresql-hll.

Pour une description détaillée de l'algorithme, consultez l'article HyperLogLog : analyse d'un algorithme d'estimation de cardinalité quasi optimal.

Créer l'extension hll

Connectez-vous à votre instance et exécutez la commande suivante pour créer l'extension hll :

CREATE EXTENSION hll;

Opérations de base

  • Créez une table contenant un champ hll. Exécutez la commande suivante :

    create table agg (id int primary key,userids hll);
  • Convertissez le type de données int en hll_hashval. Exécutez la commande suivante :

    select 1::hll_hashval;

Opérateurs de base

  • Le type hll prend en charge les opérateurs suivants :

    • =

    • !=

    • <>

    • ||

    • #

    Exemple :

    select hll_add_agg(1::hll_hashval) = hll_add_agg(2::hll_hashval);
    select hll_add_agg(1::hll_hashval) || hll_add_agg(2::hll_hashval);
    select #hll_add_agg(1::hll_hashval);
  • Le type hll_hashval prend en charge les opérateurs suivants :

    • =

    • !=

    • <>

    Exemple :

    select 1::hll_hashval = 2::hll_hashval;
    select 1::hll_hashval <> 2::hll_hashval;

Fonctions de base

  • L'extension fournit des fonctions de hachage telles que hll_hash_boolean, hll_hash_smallint et hll_hash_bigint. Exemple :

    select hll_hash_boolean(true);
    select hll_hash_integer(1);
  • L'extension fournit la fonction hll_add_agg pour convertir le type de données int au format hll. Exemple :

    select hll_add_agg(1::hll_hashval);
  • L'extension fournit la fonction hll_union pour renvoyer l'union des valeurs hll. Exemple :

    select hll_union(hll_add_agg(1::hll_hashval),hll_add_agg(2::hll_hashval));
  • L'extension fournit la fonction hll_set_defaults pour définir la précision. Exemple :

    select hll_set_defaults(15,5,-1,1);
  • L'extension fournit la fonction hll_print pour afficher les informations de débogage. Exemple :

    select hll_print(hll_add_agg(1::hll_hashval));

Exemple

create table access_date (acc_date date unique, userids hll);
insert into access_date select current_date, hll_add_agg(hll_hash_integer(user_id)) from generate_series(1,10000) t(user_id);
insert into access_date select current_date-1, hll_add_agg(hll_hash_integer(user_id)) from generate_series(5000,20000) t(user_id);
insert into access_date select current_date-2, hll_add_agg(hll_hash_integer(user_id)) from generate_series(9000,40000) t(user_id);
postgres=# select #userids from access_date where acc_date=current_date;
     ?column?
------------------
 9725.85273370708
(1 row)
postgres=# select #userids from access_date where acc_date=current_date-1;
     ?column?
------------------
 14968.6596883279
(1 row)
postgres=# select #userids from access_date where acc_date=current_date-2;
     ?column?
------------------
 29361.5209149911
(1 row)
This feature is supported in RDS PostgreSQL 11 and later versions. If you are prompted that this feature is not supported, upgrade the minor engine version. For more information, see Upgrade a minor engine version.