Base de données avancée Flashcards

1
Q

Qu’est-ce que signifie “NoSQL” en informatique ? :

A

“NoSQL” signifie “Not Only SQL” et se réfère à une famille de bases de données qui ne sont pas basées sur le modèle relationnel traditionnel des bases de données SQL.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Pourquoi les bases de données NoSQL sont-elles parfois préférées aux bases de données SQL :

A

Les bases de données NoSQL sont parfois préférées pour leur capacité à gérer des charges de travail non ACID et leur flexibilité en termes de schéma de données.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quel type de base de données NoSQL est idéal pour l’analyse de données ?

A

Les bases de données NoSQL de type colonne sont idéales pour les opérations de lecture et d’analyse de données.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Pourquoi utiliser une BDD en graphe ?

A

Les bases de données NoSQL de type graphe sont idéales pour modéliser et analyser des relations complexes entre des données.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quel est l’un des principaux inconvénients des bases de données NoSQL de type document ?

A

Les bases de données NoSQL de type document peuvent nécessiter une validation plus stricte du côté de l’application en raison de l’absence de schéma.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Pourquoi est-il important d’assurer la fiabilité d’une application de données intensives ?

A

La fiabilité garantit que l’application fonctionne comme prévu, même en cas d’erreur.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quelle est la principale différence entre une faute et un échec dans un système informatique ?

A

Une faute est une déviation de la spécification, tandis qu’un échec signifie que le système ne fonctionne plus comme prévu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quel est l’un des moyens de réduire les fautes matérielles dans un système informatique ?

A

La redondance est l’un des moyens de réduire les fautes matérielles, car elle prend le relai lorsque des composants échouent.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quel est l’objectif principal d’une application de données intensives ?

A

L’objectif principal est de gérer et de traiter efficacement de grandes quantités de données de manière fiable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Quelles sont les trois principales fonctionnalités d’une application de données intensives ?

A

Les trois principales fonctionnalités sont le stockage de données, la recherche de données et le traitement asynchrone.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Pourquoi la maintenabilité est-elle un aspect crucial d’une application de données intensives ?

A

La maintenabilité garantit que l’application peut être gérée et modifiée au fil du temps, ce qui réduit les coûts de maintenance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Quelles sont les trois règles pour construire un logiciel maintenable ?

A

Les trois règles sont l’exploitation aisée, la simplicité et l’évolutivité.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Comment les bases de données NoSQL diffèrent-elles des bases de données SQL en termes de schéma ?

A

Les bases de données NoSQL n’imposent pas de schéma rigide, tandis que les bases de données SQL nécessitent un schéma défini à l’avance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Quel type de base de données NoSQL est le plus adapté pour la gestion de données complexes et riches en relations ?

A

Les bases de données de type graphe sont idéales pour gérer des données riches en relations.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quel avantage offre l’utilisation d’une base de données en colonne dans le contexte de l’analyse de données ?

A

Les bases de données en colonne sont plus rapides pour les requêtes d’analyse de données en raison de leur structure de stockage.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Comment les bases de données NoSQL clé-valeur diffèrent-elles des bases de données NoSQL document ?

A

Les bases de données clé-valeur sont généralement utilisées pour stocker des données en mémoire, tandis que les bases de données document stockent des données sous forme de documents JSON.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Quelle est la principale différence entre les bases de données NoSQL et les bases de données SQL en termes de propriétés ACID ?

A

Les bases de données NoSQL sont parfois non ACID.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Pourquoi l’abstraction et l’observabilité sont-elles importantes pour la maintenabilité d’une application de données intensives ?

A

L’abstraction simplifie la compréhension du code, tandis que l’observabilité permet de surveiller l’état de santé de l’application, ce qui facilite la maintenance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Pourquoi faut il utiliser des IDs à la place de chaine de caractère ?

A

Réduit la duplication de données, modification beaucoup plus simplifiée si l’information change.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Quel est le problème de la normalisation par id en NoSQL ?

A

En général, c’est très mal géré, c’est très lent comparé à du SQL (project BDD avancée avec les restaurants). C’est souvent l’application qui doit par la suite faire les jointures.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Quand utiliser du SQL, et du NoSQL ?

A

Les bases de données relationnelles offrent un meilleur support pour les relations complexes, quand un veut un schéma fixe, et des règles sur les schémas, tandis que les bases de données documentaires excellent en termes de flexibilité de schéma et de localité des données.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Qu’est ce que la localité des données ?

A

Les données fréquemment utilisées ensemble sont proches physiquement sur le disque, et donc c’est super rapide à accéder, contrairement à des relations en SQL. NoSQL utilise ça.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Quel est le désavantage d’un index ?

A

Il augmente le temps d’écriture, car il doit organiser de manière efficace la donnée lors de le l’écriture.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Quels sont les inconvénients des Hash indexes ?

A

Si beaucoup de données il faut beaucoup de RAM. La recherche par plage n’est pas possible, ou alors il faut tester chaque combinaison possible de la plage, car le hash indexes ne range pas les données dans un ordre.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Comment fonctionnent les SSTable ?

A

Comme Hash indexes, mais on va venir trier les clés stockées au préalable.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Quels sont les avantages de SSTable sur les hash index ?

A

Recherche par plage possible, gain de RAM car possibilité de stocker juste des plages d’index en mémoire pour aller chercher les données sur le disque.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Qu’est ce qu’une memtable ?

A

C’est une structure en arbre, en RAM, qui va stocker les dernières valeurs écrites. Une fois sa limite atteinte (en Mo), elle va créer un nouveau segment de base de données, en format SSTable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Qu’est ce que LSM-Tree ?

A

Est composé d’une memtable. Une fois que cette memtable écrit un nouveau segment, LSM va venir compacter les segments. LSM ne supprime pas les données sur le disque directement, il faut le marqueur “tomb”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Quel est le principe des B-Tree ?

A

Fonctionne par petit bloc (Ko), qui se font références l’un l’autre. Ces blocs sont triés par plage. On va pouvoir donc faire des recherches par dicotomie dessus. Les feuilles contiennent les adresses sur le disque des données.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Les différences entre B-Tree et LSM-Tree ?

A

L’un avec bloc, l’autre segment. L’un supprime les données plus à jour, l’autre les conserve.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Qui gère le mieux le threading entre B-Tree et LSM-Tree ?

A

LSM, car B-Tree verrouille l’arbre quand il écrit.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

LSM-Tree vs B-tree en lecture/écriture ?

A

LSM plus rapide en écriture, B-tree plus rapide en lecture.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Qui est le plus utilisé en SQL ? LSM ou Btree ?

A

C’est B-tree

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Qu’est ce que le GeoHashing ?

A

On divise le terre en 32 morceaux (base32). ça va nous donner un numéro. On redivise la terre en 32 morceaux, on aura le deuxième numéro. On peut faire ça de manière infinie après.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Qu’est ce que le RTree ?

A

Un index pour les données géospatiale. On englobe les données par des gros rectangle, puis on créé des petits rectangles dans ces gros rectangles…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Quelle BDD utiliser quand il y a beaucoup de many-to-many ?

A

Graph Database ou SQL

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

Que possède un sommet dans une GraphDatabase ?

A

ID, des arrêtes, des propriétés

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Que possède une arrête dans une GraphDatabase?

A

ID, sommet de départ et d’arrivée, étiquette de relation et des propriétés (par exemple longueur de route)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Qu’est-ce qu’une transaction dans le contexte du traitement de données dans les bases de données ?

A

Une transaction est un ensemble d’opérations de lecture et d’écriture qui forment une unité logique dans le traitement des données.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

Quelle est la principale caractéristique du traitement en ligne des transactions (OLTP) ?

A

Le traitement en ligne des transactions (OLTP) implique principalement des opérations de lecture et d’écriture à faible latence pour des transactions en temps réel.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

Qu’est-ce que le traitement analytique en ligne (OLAP) ?

A

Le traitement analytique en ligne (OLAP) consiste en des requêtes qui analysent un grand nombre d’enregistrements, effectuent des agrégations et génèrent des rapports pour soutenir la prise de décision.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

Comment les entrepôts de données sont-ils utilisés pour l’analyse de données ?

A

Génération de rapports complexes pour la BI.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

Quels avantages apporte la séparation des systèmes OLAP et OLTP pour la gestion des données ?

A

OLTP pour les applications en production, OLAP pour les rapports. ça permet de ne pas bloquer l’application en prod, et d’avoir une BDD optimisée pour la BI.

44
Q

Datawarehouse : SQL ou NoSQL ?

A

En général, c’est du SQL.

45
Q

Qu’est ce que le schéma en étoile ?

A

Contient une table de de fait (événements), et plusieurs tables de dimensions, reliées par clé étrangère aux facts

46
Q

Qu’est ce qu’une table de fait ?

A

C’est une table qui regroupe des événements, par exemple une vente.

47
Q

Qu’est ce qu’une table de dimension ?

A

C”est une table qui ajoute des informations aux facts (événements). Par exemple, des détails sur le produit, sur le lieu de l’achat…

48
Q

Qu’est ce que le schéma en flocon de neige ?

A

Comme le schéma en étoile, mais les table de dimension peuvent encore être redivisées.

49
Q

Comment fonctionne une BDD par colonne ?

A

On stocke les données par colonnes, et pas par ligne. Ce qui veut dire que chaque colonne possède son propre fichier, dans le même ordre que les lignes dans la table (pour les réassembler). On charge moins de données du coup.

50
Q

Est-ce que l’ordre des lignes à une importance en BDD colonne ?

A

Non, en général il y a une clé qui permet de regrouper les lignes

51
Q

Pourquoi les fonctions d’aggrégations sont plus rapides en BDD colonne ?

A

Moins de fichier à charger, et ces requêtes sont mises en cache.

52
Q

Qu’est ce qu’une vue matérialisée ?

A

C’est un résultat de requête, qui est mis en cache, et mis à jour à chaque nouvelle écriture.

53
Q

Vue matérialisée vs vue SQL ?

A

Une vue SQL est juste un raccourci vers une requête, alors que la vue matérialisée à le résultat en cache.

54
Q

Qu’est ce qu’un cube de données ?

A

Une vue matérialisée, mais avec des ressources groupées et aggrégées (genre produits x ventes (aggrégées). ça peut aller à + de 2 ressources.

55
Q

Information vs données dans l’architecture Lambda ?

A

Information est calculée à partir de la donnée

56
Q

Pourquoi l’architecture Lambda réduit l’erreur humaine et applicative ?

A

Car c’est un système de journalisation des données. Comme les données sont immuables, on peut facilement retourner à un état correct (en supprimant les mauvaises données), et recalculer les informations

57
Q

Quel est le principe important d’une donnée dans l’architecture Lambda ?

A

La donnée est immuable, on ne peut pas la modifier.

58
Q

Quelles sont les 3 couches dans l’architecture Lambda ?

A

Batch, Speed, et Server layer

59
Q

A quoi sert la couche Batch dans l’architecture Lambda ?

A

La couche Batch sert à calculer les informations à partir des données. Batch va sauvegarder sur le disque ces vues matérialisées.

60
Q

A quoi sert la couche Speed dans l’architecture Lambda ?

A

La couche Speed stocke temporairement les données avant le Batch. Cela permet d’avoir une vision en temps réel des informations ou données

61
Q

A quoi sert la couche Serving Layer dans l’architecture Lambda ?

A

Interface pour communiquer avec les vues du Batch layer, du speed Layer, et abstrait le sharding de la database.

62
Q

Quelle est la sécurité par défaut de MongoDB ?

A

Il n’y en a pas.

63
Q

Qu’est ce que la réplication en BDD ?

A

Principe de conserver une copie des données sur plusieurs machines connectées entre elles.

64
Q

Quels sont les avantages de la réplication ?

A

Tolérance aux pannes, scaling lecture (et écriture mais + complexe), maintenir les données proches géographiquement de l’utilisateur

65
Q

Qu’est ce qu’un replicas ?

A

C’est un noeud qui copie les données, basé sur un master (leader)

66
Q

Comment fonctionne la replication single-leader ?

A

On designe un noeud en tant que master. Il prend toute l’écriture. Lors de l’écriture, il envoie les modifs aux replicas. Les replicas prennent la lecture (le master peut aussi)

67
Q

Replication synchrone vs asynchrone ?

A

Synchrone : lors de l’écriture, on attend que tous les replicas soient mis à jour avant de renvoyer une 200. Asynchrone on attend pas.

68
Q

Pourquoi les replicas sont en read-only ?

A

Car ce ne sont pas les sources de vérité.

69
Q

Avantage de la réplication synchrone ?

A

On s’assure que tous les replicas soient à jour.

70
Q

Inconvénients de la réplication synchrone ?

A

On doit attendre que tous les replicas soient à jour, si un replicas tombe il y a une 500 qui est drop.

71
Q

Une approche de la réplication synchrone viable ?

A

On met qu’un seul replicas en synchrone, et les autres en asynchrone. Comme ça on s’assure qu’on a au moins un noeud à jour.

72
Q

Comment ajouter un nouveau replicas ?

A

On dump le master, on copie le dump sur le nouveau replicas, on lance le replicas qui va se mettre à jour sur le master en fonction de son journal interne.

73
Q

Comment gérer la défaillance d’un replicas ?

A

Avec le journal interne qui est sauvegardé sur le disque, on peut savoir ou en était le replicas. Il faut juste se mettre à jour

74
Q

Comment gérer la défaillance d’un master ?

A

Il faut faire un failover (basculement). On doit déterminer un nouveau leader (en général celui qui est le + à jour), on met à jour les replicas pour pointer vers le nouveau leader, on informe l’ancien master qu’il n’est plus le leader.

75
Q

Comment déterminer qu’un master est défaillant ?

A

Il faut que les replicas ping le master de manière récurrente. (toutes les 30 secondes par ex). Si trop court on bascule pour rien, si trop long on perd des données.

76
Q

Problème récurent avec failover et asynchrone ?

A

Si le master tombe alors qu’il n’avait pas transmis ses transactions après avoir retourné une 200, alors on va perdre une partie des données, car quand il reviendra, il ne sera plus considéré comme le leader (et donc les données sont supprimées)

77
Q

Qu’est ce que la Statement-based replication ?

A

Les replicas vont executer les requêtes qu’à executé le master.

78
Q

Quel est le problème avec le Statement-based replication ?

A

Si la requête possède des fonctions non déterministe, on va avoir un delta entre les replicas (NOW() ou RAND())

79
Q

Qu’est ce que la replication Write-Ahead Log ?

A

On va copier la structure de données du master aux leaders (SSTable ou BTable)

80
Q

Qu’est ce que la replication Logique ?

A

On va juste envoyer les données modifées (insert, delete, update), et c’est les replicas qui vont faire en sorte d’appliquer ces modifs. (logique interne)

81
Q

Quel peut être le problème de l’asynchrone si on écrit sur un master et qu’on lit sur un replicas ? Comment régler ce problème ?

A

Le replicas peut ne pas être à jour. Dans ce cas, il faut ajouter un timer sur nos modifs, et ne lire les replicas que si le timer est épuisé. (1min on considère qu’ils sont à jour)

82
Q

Quel peut être le problème de l’asynchrone si on ne lit pas les mêmes replicas ?

A

On peut avoir des modifs en arrière lors du rechargement de la page. Il faut s’assurer que l’utilisateur tape tout le temps dans le même replicas.

83
Q

Qu’est ce que la réplication multi-leader ?

A

Il y a plusieurs leaders, réparties en plusieurs data-center.

84
Q

Quel est l’avantage d’une réplication multi-leader ?

A

L’écriture peut se faire sur plusieurs noeuds, tolérant aux pannes d’un data-center

85
Q

Qu’est-ce qui peut être comparé à une réplication multi-leader ?

A

Une app offline et online, un outil d’écriture collaboratif…

86
Q

Comment peut être géré les conflits en multi-leader ?

A

LWW (Last write wins) ou fusion de données ou fix manuel

87
Q

Qu’est ce que le LWW (Last write win) ?

A

On applique un horodatage sur les requêtes. Si il y a un conflit, alors on prend la requête la plus récente. On risque de perdre des données, mais c’est simple à mettre en place.

88
Q

Qu’est ce que la fusion de données (conflits replication) ?

A

On concatène les données en conflit (A et B sont conflits, on va insérer “A/B” ou “AB”. On laisse ensuite les utilisateurs régler le conflit.

89
Q

Quelle est la topologie la plus utilisée en multi-leader ?

A

La topologie all-to-all, car elle est moins sensible aux pannes des leaders.

90
Q

Comment fonctionne la replication sans leader ?

A

Le client va écrire dans plusieurs noeuds en même temps. Il va aussi lire dans plusieurs noeuds en même temps.

91
Q

Comment un noeud tombé en panne rattrape son retard dans une replication sans leader ?

A

Lors de la lecture, le client va lire dans plusieurs noeuds. Si un noeud est en retard sur un valeur (avec un numéro de version), il va se mettre à jour. Il y a aussi une MAJ asynchrone.

92
Q

Comment est géré les multi-datacenters dans une replication sans leader ?

A

Le client écrit dans tous les noeuds d’un datacenters, mais le reste se fait en asynchrone.

93
Q

Qu’est ce que le partitionnement ?

A

Le fait de diviser une base de données, tables, voir lignes en plusieurs BDD

94
Q

Pourquoi faire du partitionnement ?

A

Car la replication doit copier toutes les données. Cela peut être trop lourd

95
Q

Est-ce qu’un noeud peut être à la fois leader et replicas dans le sharding ?

A

Oui, sur le shard 1 il est leader, sur le shard 2 il est replicas

96
Q

Qu’est ce qu’un sharding biaisé ?

A

Un shard mal équilibré (une machine a trop de charge)

97
Q

Pourquoi le sharding au hasard n’est pas viable ?

A

Car il n’y a pas de logique de lecture, donc il faut lire tous les noeuds

98
Q

Qu’est ce que le sharding par plage ?

A

Par exemple, diviser les users par âge

99
Q

Pourquoi le sharding par plage est complexe ?

A

Car il faut trouver une plage équitable. Si on sépare par exemple par la première lettre, charge déséquilibrée (car + de A que de Z)

100
Q

Qu’est ce que le sharding par hashage ?

A

On utilise un algo de hash qui produit des valeurs dans une plage fixe. On divise cette plage par le nombre de noeuds. On prend le premier chiffre, qui va nous indiquer sur quelle shard pointer.

101
Q

Quel est l’inconvénient du sharding par hashage ?

A

Les requêtes par plage deviennent compliquer (il faut analyser plusieurs noeuds)

102
Q

Qu’est ce que le rebalancing ?

A

Le fait d’ajouter ou de supprimer de nouveaux noeuds

103
Q

Que doit on respecter pendant le rebalancing ?

A

La sharding doit être équilibré, les BDD doivent continuer de fonctionner.

104
Q

Pourquoi le rebalancing par modulo ne fonctionne pas ?

A

Car le résultat du modulo du hash va changer selon le nombre de noeuds. Donc toutes les données doivent être bougées.

105
Q

Quelle est la solution pour faire du rebalancing ?

A

On attribue plusieurs partitions à un seul même noeud. Le nombre de partitions total reste fixe. Lorsqu’un nouveau noeud arrive, il prend un peu de partitions sur chaque noeud.

106
Q

Rebalancing manuel ou automatique ?

A

Automatique peut le faire à un moment clé des activités. Donc il faut mieux alerte automatique, mais lancement manuel.