MGL7320

EngineeringAISystems

MGL7320 - Ingénierie logicielle des systèmes d’IA

02 - Apprentissage Machine (Machine Learning)

Prelude

Lectures du jour

(Diverses) structures de données

Stockage Modèle Similaire à Avantages
Base de données relationnelle Relationnel MySQL, Oracle DB, etc. Structures complexes, SQL (Structured Query Language)
Fichier texte Non structuré Anglais simple, français, etc. Langage naturel
Fichiers CSV Orienté ligne par ligne Excel Compact, divisibles
Parquet Orienté colonnes Cassandra Peut être plus efficace (lecture/écriture et compression) que l’orientation ligne par ligne
MongoDB Semi-structuré JSON, XML, YAML, Avro Facile à lire (auto-descriptif), flexible

Base de données relationnelle

DB Tables https://docs.microsoft.com/en-us/azure/architecture/data-guide/images/example-relational2.png

Exemples des mêmes données déclinées dans différents formats NoSQL

(Provenant de la page Wikipedia Column-oriented)

RowId EmpId Lastname Firstname Salary
001 10 Smith Joe 40000
002 12   Mary 50000
003 11 Johnson Cathy  
004 22 Jones Bob 55000

Orienté ligne par ligne

RowId:EmpId,Lastname,Firstname,Salary
001:10,Smith,Joe,40000;
002:12,,Mary,50000;
003:11,Johnson,Cathy;
004:22,Jones,Bob,55000;

Orienté colonnes

10:001,12:002,11:003,22:004;
Smith:001,Johnson:003,Jones:004;
Joe:001,Mary:002,Cathy:003,Bob:004;
40000:001,50000:002,55000:004;

Semi-structuré

JSon

JSon est un sous-ensemble de la syntaxe JavaScript Object Notation

{
  "employees": [
    {
      "EmpId": 10,
      "Lastname": "Smith",
      "Firstname": "Joe",
      "Salary": "40000"
    },
    {
      "EmpId": 12,
      "Firstname": "Mary",
      "Salary": "50000"
    },
    {
      "EmpId": 11,
      "Lastname": "Johnson",
      "Firstname": "Cathy"
    },
    {
      "EmpId": 22,
      "Lastname": "Jones",
      "Firstname": "Bob",
      "Salary": "55000"
    }
  ]
}
YAML

est un sur-ensemble de JSON

---
employees:
- EmpId: 10
  Lastname: Smith
  Firstname: Joe
  Salary: 40000
- EmpId: 12
  Firstname: Mary
  Salary: 50000
- EmpId: 11
  Lastname: Johnson
  Firstname: Cathy
- EmpId: 22
  Lastname: Jones
  Firstname: Bob
  Salary: 55000
XML

Un format plus ancien (plus verbeux, plus difficile à lire) qui est principalement utilisé pour les échanges SOAP (abréviation de Simple Object Access Protocol), les fichiers de configuration hérités, ainsi que les applications Web (XML est similaire à HTML)

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <employees>
      <element>
         <EmpId>10</EmpId>
         <Firstname>Joe</Firstname>
         <Lastname>Smith</Lastname>
         <Salary>40000</Salary>
      </element>
      <element>
         <EmpId>12</EmpId>
         <Firstname>Mary</Firstname>
         <Salary>50000</Salary>
      </element>
      <element>
         <EmpId>11</EmpId>
         <Firstname>Cathy</Firstname>
         <Lastname>Johnson</Lastname>
      </element>
      <element>
         <EmpId>22</EmpId>
         <Firstname>Bob</Firstname>
         <Lastname>Jones</Lastname>
         <Salary>55000</Salary>
      </element>
   </employees>
</root>

:bulb: Astuce, des outils en ligne sont disponibles pour convertir CSV en JSON, JSON en YAML, etc.
:warning: Ne pas utiliser pour des données sensibles !

Exercice pratique

Download_code

:bulb: J’utilise l’extension suivante pour aider à la visualisation du fichier CSV : Rainbow CSV

Travail personnel pour la semaine prochaine

uqàm