Essayer pg_local_cache localement

Cette démo compile pg_local_cache depuis votre checkout dans un serveur PostgreSQL 16 séparé. Elle ne l’installe pas dans un serveur PostgreSQL existant.

Vous avez besoin de Git, Docker et Docker Compose avec la prise en charge de up --wait. L’image est compilée depuis les sources.

Démarrer la base de données

git clone https://github.com/profundium/pg_local_cache.git
cd pg_local_cache
docker compose -f examples/compose.yaml up --build --wait

La démo lie PostgreSQL à 127.0.0.1:55432, n’a pas d’écouteur RESP ni de volume persistant et stocke les données dans un tmpfs local au conteneur. L’arrêt du conteneur supprime ses données. demo-only est prévu pour cette démo sur loopback ; utilisez vos propres identifiants en production.

Si le port 55432 est occupé, définissez PGLC_DEMO_PORT avant de démarrer Compose et gardez-le défini pour l’exemple Node.js :

export PGLC_DEMO_PORT=55433

Lire avec un rôle applicatif

La configuration crée 4 096 lignes dans public.items. Seule cette table est attachée au cache. Le rôle demo n’est pas un superutilisateur.

docker compose -f examples/compose.yaml exec -T postgres \
  psql -X -v ON_ERROR_STOP=1 -U demo -d pglc_demo <<'SQL'
SELECT unnest(local_cache.mget(
  'public.items'::regclass,
  ARRAY[42, 7, 42, NULL, 999999]::bigint[]
));
SELECT unnest(local_cache.mget(
  'public.items'::regclass,
  ARRAY[42, 7, 42, NULL, 999999]::bigint[]
));
SQL

Les deux appels renvoient les mêmes lignes dans le même ordre. La première et la troisième position désignent la ligne 42. Les deux dernières positions sont des NULL SQL : une entrée est nulle et la clé 999999 n’existe pas. Dans psql, les valeurs nulles SQL apparaissent vides par défaut.

La fonction renvoie text[]. unnest ci-dessus affiche une entrée du tableau par ligne.

Inspectez les compteurs en tant qu’administrateur de base :

docker compose -f examples/compose.yaml exec -T postgres \
  psql -X -v ON_ERROR_STOP=1 -U postgres -d pglc_demo \
  -c 'SELECT local_cache.health();' \
  -c 'SELECT local_cache.stats();'

Dans cette démo fraîche, local_cache.health() doit indiquer ready: true, et la répétition des lectures doit augmenter sql_cache_hits. Si les hits restent à zéro, inspectez sql_cache_misses, sql_cache_fills et sql_cache_bypasses avec le guide d’invalidation.

Vérifier commit et rollback

Avec Node.js 20 ou ultérieur :

npm --prefix examples/node-postgres ci --ignore-scripts
npm --prefix examples/node-postgres run demo

Le test ouvre des connexions de lecture et d’écriture séparées. Il vérifie un hit chaud, l’ordre d’entrée, les doublons et les clés absentes, une mise à jour non validée, la lecture de ses propres écritures, le rollback et une mise à jour validée. Il se termine avec un code non nul en cas d’assertion échouée.

Consultez le parcours SQL à deux sessions ou l’explication des requêtes Node.js.

Connecter votre application

Ensuite, comparez la même charge SQL et RESP. Pour les résultats ou les problèmes de configuration, ouvrez un rapport de charge avec votre environnement et le JSON du benchmark ou le journal d’erreur.

Supprimer la démo

docker compose -f examples/compose.yaml down

L’image Docker compilée localement reste disponible pour une autre exécution. Aucun service PostgreSQL de l’hôte ne doit être redémarré ni restauré.

Pour une base existante, suivez le guide d’installation. Ce chemin a des privilèges, une configuration et des exigences de redémarrage différents.

Mis à jour .