CodeGym/Cours Java/All lectures for FR purposes/Connaissance avancée des bases de données

Connaissance avancée des bases de données

Disponible

1.1 Principe de construction des cours

Vous et moi avons commencé à nous familiariser avec les bases de données d'en bas . C'est une caractéristique de mon approche personnelle de l'enseignement aux gens. Lorsque je parle de nouveaux sujets, je vous dis toujours d'abord comment utiliser certains outils dans la pratique. Et déjà quand je sais qu'une personne sait les utiliser, je commence à raconter comment tout fonctionne.

Il y a plusieurs raisons à cette approche, mais la principale est que la ressource la plus précieuse et la plus manquante dans le processus d'apprentissage est la motivation des élèves .

Cette approche est légèrement différente de celle à laquelle nous sommes habitués, qui est utilisée dans les écoles et les universités. Mais tout est clair : lorsque vous étudiez à l'école ou à l'université, vous avez les bonnes priorités : étudier est la chose la plus importante de la vie en ce moment.

Si vous êtes engagé dans l'auto-éducation à l'âge adulte, vous devez souvent déjà combiner vos études avec le travail, les tâches ménagères, la garde d'enfants ou de parents âgés. Et ici, souvent, l'étude ne sera pas la première priorité.

Tout est question de priorités. Il existe même un tel concept dans le monde des startups - Fail Fast, échouer le plus vite possible . Cela semble étrange, mais en fait cela a beaucoup de sens : la tâche d'une startup est de vérifier rapidement si son hypothèse est correcte. Et si ce n'est pas vrai, alors vous n'avez pas besoin d'y passer des années de votre vie, il vaut mieux comprendre le plus tôt possible qu'il n'y a pas de demande pour un certain service ou produit.

Lorsque j'enseigne Java et SQL, j'utilise la même approche : je vous donne l'opportunité de comprendre le plus tôt possible si vous êtes pressé de programmer ou non . Si vous aimez la programmation et que vous avez vous-même compris comment travailler avec des boucles et des tableaux, alors avec l'aide de mentors et d'un programme bien conçu, vous avez toutes les chances de terminer vos études et de trouver un emploi.

Mais un autre fait n'est pas moins important : en quelques jours de congé, vous pouvez comprendre que la programmation n'est pas pour vous. Cela ne vous intéresse peut-être pas, et ce n'est pas grave . Ainsi, vous n'avez pas besoin de passer des mois de votre vie dessus.

Seulement 40 % des diplômés travaillent dans la spécialité qu'ils ont reçue à l'université. Pensez-y, les gens ont étudié pendant 5-6 ans, et 60% d'entre eux ont décidé de ne pas travailler dans leur spécialité. Oui, certaines des connaissances acquises sont encore utilisées, mais environ la moitié d'entre elles ne le sont pas.

C'est la valeur du concept Fail Fast - comprendre le plus tôt possible qu'une certaine profession, une certaine personne ou un certain passe-temps ne vous convient pas. Et ne perdez pas votre temps et votre énergie avec eux. A long terme, c'est une très bonne stratégie.

1.2 SQL et tout, tout, tout

Nous en avons terminé avec l'introduction philosophique, revenons à l'apprentissage de SQL.

Le langage SQL et le SGBD sont des choses légèrement différentes. Le langage SQL lui-même est une sorte de norme qui décrit ce qui peut être écrit dans les requêtes SQL vers la base de données. Les SGBD sont déjà des implémentations de cette norme. Certains SGBD implémentent certaines fonctions de la norme, la seconde - d'autres, et ainsi de suite.

Plus le SGBD est cher, plus il implémente de fonctionnalités de la norme. En outre, de nombreux SGBD implémentent souvent leurs propres fonctionnalités uniques en dehors des normes SQL. Cela entraîne parfois des problèmes de portabilité : les requêtes SQL écrites pour un SGBD peuvent ne pas fonctionner correctement pour un autre.

Java a également une situation similaire. Si un programme Java est écrit sous Windows, il ne fonctionnera pas normalement sous Linux. Pour résoudre ce problème, Java introduit des classes spéciales qui ont des implémentations différentes pour différents systèmes d'exploitation. Exemple : classe Path qui a des implémentations de WindowsPath, LinuxPath, etc.

La deuxième partie du problème est résolue à l'aide du versioning. Toutes les innovations réussies de différents langages ou SGBD sont ajoutées au nouveau standard JDK ou SQL. Vous savez déjà qu'il existe différentes versions du JDK, et plus la version est récente, plus elle possède de fonctionnalités. C'est la même chose avec SQL.

Dans le langage SQL, il existe plusieurs versions de sa norme, qui sont nommées par année :

  • SQL : 1999
  • SQL : 2003
  • SQL : 2006
  • SQL:2011
  • SQL:2016
  • SQL:2019

Bonne nouvelle : nous n'étudierons pas ces normes. Premièrement, il faudra des années pour étudier et maîtriser tout cela. Et deuxièmement, ces standards sont comme des versions d'Android : seulement 5 à 10 ans après la sortie, le standard se généralise massivement.

Dans les bases de données contenant de grandes quantités de données, les utilisateurs ont besoin de fiabilité et de stabilité. "Ça marche, n'y touchez pas" est la devise de tous ceux qui travaillent avec des bases de données. Et le passage à une nouvelle version des bases de données se fait tous les 5 ans, alors que tous les avantages d'une telle solution sont déjà évidents.

1.3 Au-delà des parenthèses

Comme je l'ai dit plus haut, il faut des années pour devenir un professionnel des bases de données. Un professionnel sait beaucoup de choses que nous n'étudierons pas. Mais je vais parler un peu de ce qu'il y a d'autre dans les bases de données.

Presque toutes les bases de données modernes prennent en charge :

1 Langage procédural (PL)

RDBMS prend en charge la possibilité d'écrire des procédures et des fonctions qui s'exécutent sur SQL Server et peut faire beaucoup de choses avec les données pendant les requêtes. Par exemple, une fois j'ai écrit des requêtes PL SQL sur le serveur Oracle, qui en réponse à la requête a généré ... une page HTML avec des données. Oui, vous pouvez.

2 événements (déclencheurs)

Tous les SGBD modernes prennent en charge le mécanisme des événements, appelés déclencheurs dans le langage SQL. Un déclencheur se produit en réponse à une action. Par exemple, vous pouvez intercepter toutes les tentatives d'écriture dans la base de données et ajouter l'heure exacte de leur modification aux nouvelles lignes.

3 Journalisation

Les bases de données modernes essaient d'être super rapides, donc souvent toutes les modifications (nouvelles lignes, lignes supprimées, lignes modifiées) sont d'abord écrites dans un fichier spécial appelé journal. Et seulement après un certain temps, le serveur SQL fusionnera ces enregistrements avec la base de données principale.

À certains égards, cela ressemble au comportement du Garbage Collector en Java : il marque également simplement les objets comme supprimés au début, et effectue un nettoyage et une optimisation de la mémoire pendant les périodes d'inactivité.

4 plugins

Pour le SGBD, ainsi que pour de nombreux programmes, vous pouvez écrire vos propres plugins. Ces plugins vous permettent d'ajouter des types de données uniques, des fonctions pour les utiliser ou de modifier le comportement standard du SGBD. Ceci est particulièrement utile lorsque vous travaillez avec une base de données open source et qu'il y a des bogues.

5 Travail distribué (clusters)

Un scénario typique pour un serveur SQL moderne est un cluster de plusieurs serveurs. L'option la plus simple est lorsque les données sont écrites sur un serveur et lues à partir d'un groupe de serveurs. Dans ce cas, vous pouvez configurer différents scénarios pour la synchronisation des bases de données entre les serveurs SQL.

6 Partage

Lorsqu'il y a beaucoup de données, elles commencent à être divisées en différentes bases de données. Jusqu'au fait qu'une table peut être stockée en plusieurs parties dans différentes bases de données.

Le partage peut être vertical et horizontal. Le sharding vertical signifie que le tableau est, pour ainsi dire, coupé par des lignes verticales, tandis que le sharding horizontal est coupé en lignes horizontales.

Par exemple, nous avons décidé de diviser toutes les données du tableau par années: pour 2019 - un tableau, pour les données de 2020 - le second, et ainsi de suite. Ce sera un partage horizontal.

7 shove le non-shove

À un certain stade du développement des bases de données, de plus en plus de logique métier a commencé à leur être ajoutée. Tout a commencé avec des procédures, des fonctions, la génération de pages Web par des serveurs, et s'est terminé par l'ajout du support de presque tous les langages populaires au SGBD : Python, JavaScript, et même Java et C++.

Cela semble cool jusqu'à ce que vous commenciez à entrer dans les détails : voulez-vous vraiment écrire la logique métier de votre application Web en Java, qui sera exécutée à l'intérieur d'un serveur SQL, où il n'y a pas de JDK, de bibliothèques Java, de frameworks, peu de mémoire et beaucoup de d'autres contraintes ?

Commentaires
  • Populaires
  • Nouveau
  • Anciennes
Tu dois être connecté(e) pour laisser un commentaire
Cette page ne comporte pas encore de commentaires