0% ont trouvé ce document utile (0 vote)
9 vues6 pages

2 - MongoDB Partie 3

MongoDB

Transféré par

brahimouhimi03
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues6 pages

2 - MongoDB Partie 3

MongoDB

Transféré par

brahimouhimi03
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

§ Limites

§ Taille max d’un document : 16Mo


§ Utilisation de l’API GridFS pour stocker des documents plus larges
que la taille autorisée
§ Champs _id
§ Création d’un index unique à la création d’une collection
§ ObjectId (12 octets) : 4 octets temps, 5 octets valeur aléatoire et 3
octets compteur commence par un valeur aléatoire, uniques et
rapides à générer

§ Spécification pour stocker les fichiers plus grands


Les fichiers sont splittés en chunks et stockés dans des différents
que 16Mo documents

§ Les fichiers sont splittés en chunks et stockés dans 255 ko


des différents documents
Document
(pdf, vidéo,
image, audio
§ Deux collections sont utilisées pour stocker : les …)
255 ko
chunks et les méta-données ([Link] et [Link]) chunk
{
"_id" : <ObjectId>,
"length" : <num>,
"chunkSize" : <num>,
[Link] "uploadDate" :
<timestamp>, § MongoDB utilise la notion de Sharding (ou
Collection
"md5" : <hash>, horizontal scaling ou scale out) pour stocker ses
Méta- "filename" : <string>,
données "contentType" : <string>, données dans le cluster
"aliases" : <string array>,
§ Division des données et leur distribution entre plusieurs
Document "metadata" : <any>,
(pdf, vidéo, } serveurs ou shards
image, audio
…) § Chaque shard est une base indépendante, et mis
[Link] {
"_id" : <ObjectId>, ensemble, forment une seule base de données logique
Données "files_id" : <ObjectId>,
en chnuks Collection "n" : <num>,
"data" : <binary>
}

§ Query Routers
§ Instances mongos
§ Interfaçage avec les applications
§ Shards clientes
§ Stockent les données
§ Redirige les opérations vers le shard
§ Les données sont distribuées et
§ approprié et retourne le résultat au
répliquées sur les shards client
§ Plusieurs QR pour la répartition des
tâches
§ Réduction du nombre
d’opérations que chaque machine
§ Config Servers gère
§ Stockent les méta-données § Chaque machine gère les données qui
du cluster y sont stockées
§ Définissent le mapping entre
les données et les shards § Réduction de la quantité de
données que le serveur a besoin
de stocker
§ Plus le cluster grandit, moins un
serveur contient de données

§ Partitionnement des données au niveau des collections, via la shard key § Définition d’intervalles qui ne se chevauchent pas, dans lesquelles les valeurs de
§ Champ simple ou composé indexé qui existe dans chaque document de la collection
la shard key peuvent se trouver
§ Permet aux documents avec des clés proches de se trouver dans le même shard
§ MongoDB divise les valeurs de la clé en morceaux (chunks) et les
distribuent de manière équitable entre les shards § Plus facile de retrouver le shard pour une donnée
§ Risque de distribution non équitable des données
§ La répartition des clés suit l’une de ces deux méthodes de partitionnement:
§ si la clé est le temps à les requêtes dans un même intervalle de temps sont sur le même
§ Basée sur le rang serveur
§ Basée sur le Hash
§ Basée sur les tags
§ Calcul de la valeur du hash d’un champ, puis utilise ce hash pour créer des partitions § Les administrateurs peuvent définir des tags, qu’ils
§ Deux documents ayant des clés proches ont peu de chance de se trouver dans le même associent à des intervalles de clé
shard
§ Distribution aléatoire d’une collection dans le cluster, d’où une distribution plus équitable
§ Ils associent ces tags aux différents shards en essayant de
respecter la distribution équitable des données
§ Moins efficace, car le temps de recherche de la donnée est plus grand

§ Dans le cas d’une requête portant sur des données se trouvant dans un intervalle défini, le § Un balancer migre les données taggées vers les shards
système doit parcourir plusieurs shards adéquats
§ Le meilleur moyen pour assurer une bonne répartition des
donnée

§ Balancer : processus en arrière plan, gérant les migrations de § Étapes


chunks § Le shard destination reçoit tous les documents du chunk à migrer
§ Peut être lancé à partir de n’importe quel query router § Le shard destination applique tous les changements faits aux
§ Quand la distribution des données est dés-équilibrée, le balancer
données durant le processus de migration
fait migrer des chunks du shard ayant le plus de chunks vers celui § Finalement, les méta-données concernant l’emplacement du chunk
qui en a le moins, jusqu’à ce que la collection devienne sur le config server sont modifiées
équitablement répartie
§ Dans le cas d’un ajout de shard
§ Redondance
§ Un dés-équilibre est créé entre les shards du cluster, car le nouveau shard n’a
pas de chunks
§ MongoDB peut commencer le processus de migration immédiatement, mais cela § Simplification de tâches (backups, ... )
risque de prendre du temps avant que le cluster ne soit équilibré

§ Dans le cas d’une suppression de shard § Augmentation de la capacité de lecture


§ Le balancer migre tous les chunks de ce shard vers les autres shards
§ Une fois toutes les données migrées et les méta-données mises à jour, la § Un replicaSet est un cluster d'instances MongoDB.
suppression peut avoir lieu.
§ Stratégie maître / esclaves

§ Primaire
§ La réplication du maître vers les
§ Seul membre qui reçoit les opérations d’écriture
esclaves est asynchrone.
§ MongoDB applique les opérations d’écriture sur
§ Synchrone : Bloquant / Coûteux / Forte
cohérence le primaire, puis les enregistre dans son

§ Asynchrone : Non bloquant / log(oplog)

Rafraîchissement des données obligatoires. § Les membres secondaires dupliquent ce log et

appliquent les opérations sur leurs données


§ Un ReplicaSet est tolérant aux pannes.
§ Si le nœud primaire tombe, les nœuds § Tous les membres d’un ReplicatSet et peuvent

secondaires peuvent élire un nouveau nœud accepter une opération de lecture


primaire.
§ Secondaires § Élections
§ Ont lieu à la création d’un ReplicaSet, ou bien quand un primaire devient
§ Maintiennent une copie des données du primaire indisponible
§ Processus qui prend du temps, et qui rend le ReplicatSet en readonly
§ Pour répliquer les données, un secondaire applique les opérations du oplog du § Chaque membre a une priorité déterminant son éligibilité à devenir
primaire sur ses propres données, de manière asynchrone primaire

§ Un ReplicatSet peut avoir un ou plusieurs secondaires § L’élection choisit le membre ayant la plus haute priorité
comme primaire
§ Même si les clients ne peuvent pas écrire des données sur les secondaires, ils
§ Par défaut, tous les membres ont la même priorité (1)
peuvent en lire
§ Il est possible de modifier la priorité d’un membre ou groupe,
§ Un secondaire peut devenir un primaire, suite à une élection § selon leur position géographique par exemple
§ Chaque membre a la possibilité de voter pour un seul autre membre
§ Le membre recevant le plus grand nombre de votes devient primaire

§ -replSet : indique à qule ReplicaSet appartient l’instance


§ -shardsvr : active le partitionnement horizontal
§ [Link]("host:port") : Ajouter un nœud au ReplicaSet sur le serveur maître
§ [Link]("host:port") : Sortir un nœud au ReplicaSet sur le serveur maître
§ [Link](config) : initialise
§ [Link]() : vérifier qui est le Master
§ [Link]() : afficher l’etat de de ReplicaSeé
§ [Link]() : activer la lecture à partir des esclave
§ …..

Vous aimerez peut-être aussi