Bases de données orientées clé/valeur
M. BOUMEDIENE
Institut National des Télécommunications et des Technologies
de l’Information et de la Communication
e-mail: mboumediene[at][Link]
1/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Plan
1 Modèles distribués
2 Avantages et inconvénients
3 Redis
4 Structures de données
2/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Plan
1 Modèles distribués
2 Avantages et inconvénients
3 Redis
4 Structures de données
3/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Concept clé/valeur
Les bases de données clé/valeur sont les plus basiques des bases NOSQL
4/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Concept clé/valeur
Les bases de données clé/valeur sont les plus basiques des bases NOSQL
Les données sont représentées par un couple clé/valeur
Cela consiste à stocker une valeur associée à une clé unique
4/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Concept clé/valeur
Les bases de données clé/valeur sont les plus basiques des bases NOSQL
Les données sont représentées par un couple clé/valeur
Cela consiste à stocker une valeur associée à une clé unique
⇒ la clé est l’unique point d’accès à la valeur
⇒ à partir d’une clé, j’obtiens une donnée (qui peut-être complexe)
4/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Concept clé/valeur
Les bases de données clé/valeur sont les plus basiques des bases NOSQL
Les données sont représentées par un couple clé/valeur
Cela consiste à stocker une valeur associée à une clé unique
⇒ la clé est l’unique point d’accès à la valeur
⇒ à partir d’une clé, j’obtiens une donnée (qui peut-être complexe)
Exemples :
Sur un réseau social, à partir d’un utilisateur (clé), j’obtiens la liste de ses amis (valeur)
Dans un catalogue de livres, à partir d’un ISBN, j’obtiens les détails du livre (valeur)
La clé doit être précise et atomique, alors que la valeur peut être complexe
⇒ la valeur peut être une chaîne de caractères, une liste, un ensemble, un objet sérialisé,
etc.
La base de données fonctionne comme un tableau associatif
⇒ qui est un principe connu en programmation (PHP)
4/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Concept clé/valeur
Il n’y a pas de schéma et les données ne sont pas liées entre elles
5/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Concept clé/valeur
Il n’y a pas de schéma et les données ne sont pas liées entre elles
L’intelligence portée auparavant par les requêtes SQL devra être portée par l’application
La structure de l’objet est libre, c’est au développeur de la prendre en charge
5/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Concept clé/valeur
Il n’y a pas de schéma et les données ne sont pas liées entre elles
L’intelligence portée auparavant par les requêtes SQL devra être portée par l’application
La structure de l’objet est libre, c’est au développeur de la prendre en charge
La base de données considère les valeurs comme un bloc d’octets
⇒ elle se focalise uniquement sur le stockage et la récupération des données
⇒ elle ne gère pas la structure des données (possible de stocker des données hétérogènes)
5/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Opérations de base (CRUD)
Ces bases offrent les 4 opérations fondamentales (CRUD) :
Create : créer un nouvel objet avec sa clé ⇒ create(key, value)
Read : lit un objet à partir de sa clé ⇒ read(key)
Update : met à jour la valeur d’un objet à partir de sa clé ⇒ update(key, value)
Delete : supprime un objet à partir de sa clé ⇒ delete(key)
6/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Opérations de base (CRUD)
Ces bases offrent les 4 opérations fondamentales (CRUD) :
Create : créer un nouvel objet avec sa clé ⇒ create(key, value)
Read : lit un objet à partir de sa clé ⇒ read(key)
Update : met à jour la valeur d’un objet à partir de sa clé ⇒ update(key, value)
Delete : supprime un objet à partir de sa clé ⇒ delete(key)
Cette approche minimaliste offre des performances élevées en lecture/écriture puisque de
simples accès disques sont effectués
6/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Opérations de base (CRUD)
Ces bases offrent les 4 opérations fondamentales (CRUD) :
Create : créer un nouvel objet avec sa clé ⇒ create(key, value)
Read : lit un objet à partir de sa clé ⇒ read(key)
Update : met à jour la valeur d’un objet à partir de sa clé ⇒ update(key, value)
Delete : supprime un objet à partir de sa clé ⇒ delete(key)
Cette approche minimaliste offre des performances élevées en lecture/écriture puisque de
simples accès disques sont effectués
Certaines bases offrent une fonctionnalité qui permet de charger la base de données
complètement en mémoire (in memory)
Les performances sont encore bien plus élevées puisqu’un accès mémoire est beaucoup
plus rapide qu’un accès disque
6/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Opérations de base (CRUD)
Ces bases offrent les 4 opérations fondamentales (CRUD) :
Create : créer un nouvel objet avec sa clé ⇒ create(key, value)
Read : lit un objet à partir de sa clé ⇒ read(key)
Update : met à jour la valeur d’un objet à partir de sa clé ⇒ update(key, value)
Delete : supprime un objet à partir de sa clé ⇒ delete(key)
Cette approche minimaliste offre des performances élevées en lecture/écriture puisque de
simples accès disques sont effectués
Certaines bases offrent une fonctionnalité qui permet de charger la base de données
complètement en mémoire (in memory)
Les performances sont encore bien plus élevées puisqu’un accès mémoire est beaucoup
plus rapide qu’un accès disque
1 base = 1 table (clé/valeur : une colonne clé et une colonne valeur)
6/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Conception de la clé et de la valeur
Les clés doivent être bien conçues (bien réfléchies) sinon les performances seront
impactées
7/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Conception de la clé et de la valeur
Les clés doivent être bien conçues (bien réfléchies) sinon les performances seront
impactées
Utiliser une convention de nommage
Utiliser des noms significatifs et sans ambiguïté
Utiliser un délimiteur commun
Utiliser des clés courtes autant que possible
Tenir compte des limites de mise en œuvre
7/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Conception de la clé et de la valeur
Les clés doivent être bien conçues (bien réfléchies) sinon les performances seront
impactées
Utiliser une convention de nommage
Utiliser des noms significatifs et sans ambiguïté
Utiliser un délimiteur commun
Utiliser des clés courtes autant que possible
Tenir compte des limites de mise en œuvre
En général, la valeur sera déterminée par l’application, mais il faut éviter certains
problèmes de conception
7/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Conception de la clé et de la valeur
Les clés doivent être bien conçues (bien réfléchies) sinon les performances seront
impactées
Utiliser une convention de nommage
Utiliser des noms significatifs et sans ambiguïté
Utiliser un délimiteur commun
Utiliser des clés courtes autant que possible
Tenir compte des limites de mise en œuvre
En général, la valeur sera déterminée par l’application, mais il faut éviter certains
problèmes de conception
Quels agrégats utiliser ?
Une clé liée à plusieurs valeurs sur des bases différentes (exemple clé user52)
Plusieurs clés liées à plusieurs valeurs (exemple user52name, user52address, etc)
7/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Conception de la clé et de la valeur
Les clés doivent être bien conçues (bien réfléchies) sinon les performances seront
impactées
Utiliser une convention de nommage
Utiliser des noms significatifs et sans ambiguïté
Utiliser un délimiteur commun
Utiliser des clés courtes autant que possible
Tenir compte des limites de mise en œuvre
En général, la valeur sera déterminée par l’application, mais il faut éviter certains
problèmes de conception
Quels agrégats utiliser ?
Une clé liée à plusieurs valeurs sur des bases différentes (exemple clé user52)
Plusieurs clés liées à plusieurs valeurs (exemple user52name, user52address, etc)
Valeurs longues ou courtes ?
Les valeurs longues réduisent le nombre de lectures
Mais le temps de lecture et d’écriture des valeurs augmente
7/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Cas d’utilisation
Les bases de données clé/valeur sont plus adaptées pour :
Dépôt de données avec besoins de requêtage très simples
8/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Cas d’utilisation
Les bases de données clé/valeur sont plus adaptées pour :
Dépôt de données avec besoins de requêtage très simples
Système de stockage de cache où les données peuvent être volatiles
8/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Cas d’utilisation
Les bases de données clé/valeur sont plus adaptées pour :
Dépôt de données avec besoins de requêtage très simples
Système de stockage de cache où les données peuvent être volatiles
Les informations de sessions
⇒ chaque session est unique (sessionid), alors il est possible de stocker ses variables dans
une base de données (clé/valeur)
8/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Cas d’utilisation
Les bases de données clé/valeur sont plus adaptées pour :
Dépôt de données avec besoins de requêtage très simples
Système de stockage de cache où les données peuvent être volatiles
Les informations de sessions
⇒ chaque session est unique (sessionid), alors il est possible de stocker ses variables dans
une base de données (clé/valeur)
Les Préférences d’utilisateur, son profil
⇒ chaque user est unique (userid) et possède plusieurs attribut (langue, couleur, etc)
8/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Cas d’utilisation
Les bases de données clé/valeur sont plus adaptées pour :
Dépôt de données avec besoins de requêtage très simples
Système de stockage de cache où les données peuvent être volatiles
Les informations de sessions
⇒ chaque session est unique (sessionid), alors il est possible de stocker ses variables dans
une base de données (clé/valeur)
Les Préférences d’utilisateur, son profil
⇒ chaque user est unique (userid) et possède plusieurs attribut (langue, couleur, etc)
Les paniers d’achat
⇒ chaque user est unique (userid) et ses informations d’achat sont stockées dans une valeur
8/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Cas d’utilisation
Les bases de données clé/valeur sont plus adaptées pour :
Dépôt de données avec besoins de requêtage très simples
Système de stockage de cache où les données peuvent être volatiles
Les informations de sessions
⇒ chaque session est unique (sessionid), alors il est possible de stocker ses variables dans
une base de données (clé/valeur)
Les Préférences d’utilisateur, son profil
⇒ chaque user est unique (userid) et possède plusieurs attribut (langue, couleur, etc)
Les paniers d’achat
⇒ chaque user est unique (userid) et ses informations d’achat sont stockées dans une valeur
Collecte d’évènements
⇒ pour un temps correspondant une liste d’évènements
...
8/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Modèles distribués
Cas d’utilisation
Les bases de données clé/valeur sont plus adaptées pour :
Dépôt de données avec besoins de requêtage très simples
Système de stockage de cache où les données peuvent être volatiles
Les informations de sessions
⇒ chaque session est unique (sessionid), alors il est possible de stocker ses variables dans
une base de données (clé/valeur)
Les Préférences d’utilisateur, son profil
⇒ chaque user est unique (userid) et possède plusieurs attribut (langue, couleur, etc)
Les paniers d’achat
⇒ chaque user est unique (userid) et ses informations d’achat sont stockées dans une valeur
Collecte d’évènements
⇒ pour un temps correspondant une liste d’évènements
...
Exemple de base de données clé/valeur
Redis (VMWare) : Twitter, GitHub, Pinterest, Snapchat, StackOverflow
Memcached (Danga) : Netflix, Wordpress
Azure Cosmos DB (Microsoft) : Mercedes, LG
8/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Avantages et inconvénients
Plan
1 Modèles distribués
2 Avantages et inconvénients
3 Redis
4 Structures de données
9/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Avantages et inconvénients
Avantages et inconvénients
Avantages
Modèle de données très simple
10/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Avantages et inconvénients
Avantages et inconvénients
Avantages
Modèle de données très simple
1 base = 1 table à deux colonnes (clé et valeur)
10/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Avantages et inconvénients
Avantages et inconvénients
Avantages
Modèle de données très simple
1 base = 1 table à deux colonnes (clé et valeur)
Recherche rapide
10/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Avantages et inconvénients
Avantages et inconvénients
Avantages
Modèle de données très simple
1 base = 1 table à deux colonnes (clé et valeur)
Recherche rapide
Bonne scalabilité horizontale
10/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Avantages et inconvénients
Avantages et inconvénients
Avantages
Modèle de données très simple
1 base = 1 table à deux colonnes (clé et valeur)
Recherche rapide
Bonne scalabilité horizontale
Inconvénients
Modèle de données trop simple
⇒ pas facile de représenter les données liées (complexes)
10/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Avantages et inconvénients
Avantages et inconvénients
Avantages
Modèle de données très simple
1 base = 1 table à deux colonnes (clé et valeur)
Recherche rapide
Bonne scalabilité horizontale
Inconvénients
Modèle de données trop simple
⇒ pas facile de représenter les données liées (complexes)
Pas de requêtes possibles sur les valeurs
⇒ interrogation seulement sur clé
10/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Avantages et inconvénients
Avantages et inconvénients
Avantages
Modèle de données très simple
1 base = 1 table à deux colonnes (clé et valeur)
Recherche rapide
Bonne scalabilité horizontale
Inconvénients
Modèle de données trop simple
⇒ pas facile de représenter les données liées (complexes)
Pas de requêtes possibles sur les valeurs
⇒ interrogation seulement sur clé
Une partie de la complexité de recherche sera déportée sur l’application
10/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Plan
1 Modèles distribués
2 Avantages et inconvénients
3 Redis
4 Structures de données
11/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Présentation de Redis
REmote DIctionary Server
Redis est un moteur de base de données clé/valeur
Rédis est un moteur en mémoire
Développé par Salvatore Sanfilippo (2009)
Open Source - licence BSD
Redis manipule le plus rapidement possible les structures de données qui y sont
maintenues
Il est à la fois un outil de gestion de paires clé-valeur et un cache de données
Le but de Redis est d’être très rapide, très efficace et léger
Redis est utilisé par : Twitter, GitHub, StackOverflow
12/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Stockage des données
Redis conserve l’intégralité des données en mémoire vive
⇒ permet d’obtenir d’excellentes performances en évitant les accès disques
13/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Stockage des données
Redis conserve l’intégralité des données en mémoire vive
⇒ permet d’obtenir d’excellentes performances en évitant les accès disques
Mais permet de persister les données sur disque ⇒ capable de redémarrer après un crach
13/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Stockage des données
Redis conserve l’intégralité des données en mémoire vive
⇒ permet d’obtenir d’excellentes performances en évitant les accès disques
Mais permet de persister les données sur disque ⇒ capable de redémarrer après un crach
RDB (Redis DataBase) : écrire un fichier sur le disque contenant toute la base de données
13/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Stockage des données
Redis conserve l’intégralité des données en mémoire vive
⇒ permet d’obtenir d’excellentes performances en évitant les accès disques
Mais permet de persister les données sur disque ⇒ capable de redémarrer après un crach
RDB (Redis DataBase) : écrire un fichier sur le disque contenant toute la base de données
⇒ un seul fichier ce qui facilite son transport ainsi que sa lecture en cas de restauration
⇒ écriture à un intervalle de temps
13/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Stockage des données
Redis conserve l’intégralité des données en mémoire vive
⇒ permet d’obtenir d’excellentes performances en évitant les accès disques
Mais permet de persister les données sur disque ⇒ capable de redémarrer après un crach
RDB (Redis DataBase) : écrire un fichier sur le disque contenant toute la base de données
⇒ un seul fichier ce qui facilite son transport ainsi que sa lecture en cas de restauration
⇒ écriture à un intervalle de temps
⇒ écrire chaque fois toute la base de données consomme l’espace du disque (les
anciennes sauvegardes s’accumulent)
⇒ risque de perte de données si le serveur tombe en panne entre deux sauvegardes
13/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Stockage des données
Redis conserve l’intégralité des données en mémoire vive
⇒ permet d’obtenir d’excellentes performances en évitant les accès disques
Mais permet de persister les données sur disque ⇒ capable de redémarrer après un crach
RDB (Redis DataBase) : écrire un fichier sur le disque contenant toute la base de données
⇒ un seul fichier ce qui facilite son transport ainsi que sa lecture en cas de restauration
⇒ écriture à un intervalle de temps
⇒ écrire chaque fois toute la base de données consomme l’espace du disque (les
anciennes sauvegardes s’accumulent)
⇒ risque de perte de données si le serveur tombe en panne entre deux sauvegardes
AOF (Append Only File) : log chaque écriture dans un fichier
13/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Stockage des données
Redis conserve l’intégralité des données en mémoire vive
⇒ permet d’obtenir d’excellentes performances en évitant les accès disques
Mais permet de persister les données sur disque ⇒ capable de redémarrer après un crach
RDB (Redis DataBase) : écrire un fichier sur le disque contenant toute la base de données
⇒ un seul fichier ce qui facilite son transport ainsi que sa lecture en cas de restauration
⇒ écriture à un intervalle de temps
⇒ écrire chaque fois toute la base de données consomme l’espace du disque (les
anciennes sauvegardes s’accumulent)
⇒ risque de perte de données si le serveur tombe en panne entre deux sauvegardes
AOF (Append Only File) : log chaque écriture dans un fichier
⇒ enregistre la requête et non pas la donnée
⇒ ce qui prendra beaucoup plus de temps pour restaurer le serveur après un arrêt
⇒ il faut lire et exécuter toutes les requêtes
13/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Stockage des données
Redis conserve l’intégralité des données en mémoire vive
⇒ permet d’obtenir d’excellentes performances en évitant les accès disques
Mais permet de persister les données sur disque ⇒ capable de redémarrer après un crach
RDB (Redis DataBase) : écrire un fichier sur le disque contenant toute la base de données
⇒ un seul fichier ce qui facilite son transport ainsi que sa lecture en cas de restauration
⇒ écriture à un intervalle de temps
⇒ écrire chaque fois toute la base de données consomme l’espace du disque (les
anciennes sauvegardes s’accumulent)
⇒ risque de perte de données si le serveur tombe en panne entre deux sauvegardes
AOF (Append Only File) : log chaque écriture dans un fichier
⇒ enregistre la requête et non pas la donnée
⇒ ce qui prendra beaucoup plus de temps pour restaurer le serveur après un arrêt
⇒ il faut lire et exécuter toutes les requêtes
Combiner RDB & AOF c’est l’option la plus fiable
⇒ transcrire les requêtes avec AOF et une fois par jour sauvegarder la base avec RDB
13/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Réplication et fragmentation de données
Redis offre la réplication via une architecture maître/esclave
14/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Réplication et fragmentation de données
Redis offre la réplication via une architecture maître/esclave
Redis-sentinel est outil de monitoring et de gestion de haute disponibilité
Redis-sentinel permet de promouvoir automatiquement un esclave en maître si ce dernier
est indisponible
14/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Réplication et fragmentation de données
Redis offre la réplication via une architecture maître/esclave
Redis-sentinel est outil de monitoring et de gestion de haute disponibilité
Redis-sentinel permet de promouvoir automatiquement un esclave en maître si ce dernier
est indisponible
Redis permet aussi de fragmenter les données
14/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Dialogue Client-Serveur
Protocole très simple et textuel
Format COMMAND ARG1 [ARG2][ARG3][. . . ]
Client officiel : Redis-cli
15/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Redis
Dialogue Client-Serveur
Protocole très simple et textuel
Format COMMAND ARG1 [ARG2][ARG3][. . . ]
Client officiel : Redis-cli
[Link] pour tester Redis
15/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Plan
1 Modèles distribués
2 Avantages et inconvénients
3 Redis
4 Structures de données
16/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Structures de données
Keys
Strings
Hashes
Sets
Sorted Sets
Lists
Geo
HyperLogLog
17/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Clé - key
keys
exists
expire
ttl
rename
type
del
persist
18/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Clé - key
keys
exists
expire
ttl
rename
type
del
persist
18/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Clé - key
keys
exists
expire
ttl
rename
type
del
persist
18/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Strings
get / set / getset
mget
mset
incr / decr
incrby
19/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Strings
get / set / getset
mget
mset
incr / decr
incrby
19/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Strings
get / set / getset
mget
mset
incr / decr
incrby
19/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Strings
get / set / getset
mget
mset
incr / decr
incrby
19/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Strings
get / set / getset
mget
mset
incr / decr
incrby
L’utilisation la plus répondue : cache
Compteur, nombre de visiteurs sur une
page (ICR/DECR)
Gestion de stock, nombre de produit
disponible
19/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Hashes
Un tableau clé → valeur
hset / hget / hdel
hmget / hgetall
hkeys / hvals
hincrby / hexists
20/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Hashes
Un tableau clé → valeur
hset / hget / hdel
hmget / hgetall
hkeys / hvals
hincrby / hexists
20/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Hashes
Un tableau clé → valeur
hset / hget / hdel
hmget / hgetall
hkeys / hvals
hincrby / hexists
20/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Hashes
Un tableau clé → valeur
hset / hget / hdel
hmget / hgetall
hkeys / hvals
hincrby / hexists
20/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Sets
clé → {valeurs uniques}
sadd / srem /smembers
scard / sismember
sdiff / sdiffstore / sinter /
sinterstore
sunion / sunionstore
21/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Sets
clé → {valeurs uniques}
sadd / srem /smembers
scard / sismember
sdiff / sdiffstore / sinter /
sinterstore
sunion / sunionstore
21/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Sets
clé → {valeurs uniques}
sadd / srem /smembers
scard / sismember
sdiff / sdiffstore / sinter /
sinterstore
sunion / sunionstore
21/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Sets
clé → {valeurs uniques}
sadd / srem /smembers
scard / sismember
sdiff / sdiffstore / sinter /
sinterstore
sunion / sunionstore
21/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Sets
clé → {valeurs uniques}
sadd / srem /smembers
scard / sismember
sdiff / sdiffstore / sinter /
sinterstore
sunion / sunionstore
Système de tags (vidéo
php + html +css)
Segmentation d’utilisateur
(qui a acheté un produit
informatique le mois
dernier?)
21/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Sorted Sets
clé →
{valeurs uniques et triées}
zadd / zrem
zrange / zrangebyscore
zcard / zrank / zcount
zinter / zunion
22/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Sorted Sets
clé →
{valeurs uniques et triées}
zadd / zrem
zrange / zrangebyscore
zcard / zrank / zcount
zinter / zunion
22/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Sorted Sets
clé →
{valeurs uniques et triées}
zadd / zrem
zrange / zrangebyscore
zcard / zrank / zcount
zinter / zunion
Création d’index
⇒ Liste des logements
ayant une superficie >
70m2
Leaderboard sur les jeux
⇒ Qui sont les meilleurs ?
22/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Lists
clé → liste chaînée
lpush / lpop
lrange
ltrim
rpush / rpop
23/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Lists
clé → liste chaînée
lpush / lpop
lrange
ltrim
rpush / rpop
23/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Lists
clé → liste chaînée
lpush / lpop
lrange
ltrim
rpush / rpop
Flux RSS
Ne garder que les N
derniers évènements
Timeline sociale
23/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Geo
clé → position en liste
triée
geoadd / geopos /
geohash
geodist
georadius
georadiusbymember
24/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Geo
clé → position en liste
triée
geoadd / geopos /
geohash
geodist
georadius
georadiusbymember
Calculer des distances
Trouver les points les plus
proches
24/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
HyperLogLogs
Extension de Strings
HyperLogLog est une methode pour
compter la cardinalité d’un très grand
ensemble de manière probabiliste avec
très peu de mémoire
pfadd
pfcount
25/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Scripting
Réaliser de LUA
Chaîner les commandes ce qui évite les
allers/retours entre le client et le
serveur
Un script est atomique ⇒ tout ou rien
26/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles
Structures de données
Merci pour votre attention! Des Questions?
27/27 Mohammed Boumediene - INTTIC Bases de Données Non Relationnelles